Table of Contents

HDFS install HA namenode-okkal

Kapcsolódó oldalak:
https://ccp.cloudera.com/display/CDH4DOC/Software+Configuration+for+Quorum-based+Storage
https://ccp.cloudera.com/display/CDHDOC/ZooKeeper+Installation
https://ccp.cloudera.com/display/CDH4DOC/HDFS+High+Availability+Initial+Deployment
https://ccp.cloudera.com/display/CDH4DOC/Deploying+HDFS+on+a+Cluster#DeployingHDFSonaCluster-FormattingtheNameNode

Cloudera repo csomag letöltés: https://ccp.cloudera.com/display/CDH4DOC/CDH4+Installation#CDH4Installation-DebianPackage

dpkg -i cdh4-repository_1.0_all.deb ; apt-get update
apt-get install openjdk-7-jre-headless:amd64

Általános konfigurációs beállítások

.bashrc:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export ZK_HOME=/usr/lib/zookeeper

Zookeeper telepítés és konfiguráció

A következő 5 gépre kell feltelepíteni: mgmt1, mgmt2, stg1, stg2, stg3

apt-get install zookeeper-server

Kapcsolódó adminisztrátori dokumentáció: http://zookeeper.apache.org/doc/current/zookeeperAdmin.html

szerver inicializálás:

zookeeper-server-initialize --force
chown -R zookeeper:zookeeper /var/lib/zookeeper/

A /etc/zookeeper/conf/zoo.cfg fájlban állítsuk be a szolgáltatásban résztvevő szervereket:

server.1=172.28.28.1:2888:3888
server.2=172.28.28.2:2888:3888
server.3=172.28.28.11:2888:3888
server.4=172.28.28.12:2888:3888
server.5=172.28.28.13:2888:3888

A /var/lib/zookeper/myid fájlba írjuk be a zoo.cfg fájlban a serverhez tartozó sorszámot.

service start:
service zookeeper-server start

Hadoop HDFS failover controller telepítés

A következő 2 gépre kell feltelepíteni: mgmt1, mgmt2

apt-get install hadoop-hdfs-zkfc

A /etc/hadoop/conf/core-site.xml fájlban állítsuk be fájlrendszer elérhetőségét:

  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://vodstorage01</value>
  </property>

A /etc/default/hadoop fájlba rakjuk bele a következő sort:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

A failover controller a zookeepert használja a gépen futó namenode státuszának megállapításához.

/etc/hadoop/conf/zk-auth.txt beállítása:
digest:vodstorage01-zkfcs:<password>

A <password> helyére illesszünk be egy hosszú generált jelszót.

chown root:hdfs /etc/haddop/conf/zk-auth.txt
chmod 640 /etc/hadoop/conf/zk-auth.txt

java -cp $ZK_HOME/lib/*:$ZK_HOME/zookeeper-3.4.5-cdh4.2.0.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider vodstorage01-zkfcs:<password>

Minta output (a végén a digest jelszó):

...->vodstorage01-zkfcs:Ez4VnDSTGPKnPJHGhzp+2W74=

/etc/hadoop/conf/zk-acl.txt beállítása:
digest:vodstorage01-zkfcs:<digest password in output>:rwcda

chown root:hdfs /etc/hadoop/conf/zk-acl.txt
chmod 640 /etc/hadoop/conf/zk-acl.txt

Generáljunk ssh kulcsot (ssh-keygen) és rakjuk a kulcs fájlt a /etc/hadoop/conf mappába.
A publikus kulcsot adjuk hozzá a másik namenode szerver hdfs userének authorized_keys fájljához. (/var/lib/hdfs/.ssh/authorized_keys)

Próbájluk ki, hogy kulcs autentikációval be lehet-e ssh-zni a másik gépre.

/etc/hadoop/conf/hdfs-site.xml fájlban szükséges beállítások:

  <property>
     <name>dfs.ha.fencing.methods</name>
     <value>sshfence(hdfs)</value>
  </property>
  <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/etc/hadoop/conf/zkfc_rsa</value>
  </property>
  <property>
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
    <value>30000</value>
    <description>
        SSH connection timeout, in milliseconds, to use with the builtin
        sshfence fencer.
    </description>
  </property>

A /etc/hadoop/conf/core-site.xml fájlban szükséges beállítások:

  <property>
    <name>ha.zookeeper.quorum</name>
    <value>172.28.28.1:2181,172.28.28.2:2181,172.28.28.11:2181,172.28.28.12:2181,172.28.28.13:2181</value>
  </property>
  <property>
    <name>ha.zookeeper.auth</name>
    <value>@/etc/hadoop/conf/zk-auth.txt</value>
  </property>
  <property>
    <name>ha.zookeeper.acl</name>
    <value>@/etc/hadoop/conf/zk-acl.txt</value>
  </property>
  <property>
     <name>dfs.ha.automatic-failover.enabled.vodstorage01</name>
     <value>true</value>
  </property>
</configuration>

A ha.zookeeper.quorum étrékének adjuk meg a vesszővel elválasztott listaként a zookeeper szervereket.
A ha.zookeeper.auth és ha.zookeeper.acl értékének adjuk meg a korábban elkészített auth és acl fájlok útvonalát. (A @ a fájlnév előtt szükséges.)

service start:
service hadoop-hdfs-zkfc start

Journal telepítés és konfiguráció

A következő 3 gépre kell feltelepíteni: stg1, stg2, stg3

apt-get install hadoop-hdfs-journalnode

A /etc/hadoop/conf/hdfs-site.xml fájlban szükséges beállítások:

  <property>
     <name>dfs.journalnode.edits.dir</name>
     <value>/var/lib/hadoop-hdfs/journal</value>
  </property>

Ellenőrizzük, hogy a megadott mappa létezik-e és a hdfs user tudja-e írni és olvasni.

Namenode telepítés és konfiguráció

A következő 2 gépre kell feltelepíteni: mgmt1, mgmt2

apt-get install hadoop-hdfs-namenode

A /etc/hadoop/conf/core-site.xml fájlban szükséges beállítás:

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://vodstorage01</value>
</property>

A /etc/hadoop/conf/hdfs-site.xml fájlban szükséges beállítások:

  <property>
     <name>dfs.name.dir</name>
     <value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
  </property>
  <property>
     <name>dfs.nameservices</name>
     <value>vodstorage01</value>
  </property>
  <property>
     <name>dfs.ha.namenodes.vodstorage01</name>
     <value>nn1,nn2</value>
  </property>
  <property>
     <name>dfs.namenode.rpc-address.vodstorage01.nn1</name>
     <value>172.28.28.1:8020</value>
  </property>
  <property>
     <name>dfs.namenode.rpc-address.vodstorage01.nn2</name>
     <value>172.28.28.2:8020</value>
  </property>
  <property>
     <name>dfs.namenode.http-address.vodstorage01.nn1</name>
     <value>172.28.28.1:50070</value>
  </property>
  <property>
     <name>dfs.namenode.http-address.vodstorage01.nn2</name>
     <value>172.28.28.2:50070</value>
  </property>
  <property>
     <name>dfs.namenode.shared.edits.dir</name>
     <value>qjournal://172.28.28.11:8485;172.28.28.12:8485;172.28.28.13:8485/vodstorage01</value>
  </property>
  <property>
     <name>dfs.replication</name>
     <value>2</value>
  </property>
  <property>
     <name>dfs.permissions</name>
     <value>false</value>
  </property>

Első namenode-on:
su hdfs -c “hadoop namenode -format”
su hdfs -c “hdfs namenode -initializeSharedEdits”
service hadoop-hdfs-namenode start

Második namenode-on:
root@mgmt1:~# rsync -av /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/ root@mgmt2:/var/lib/hadoop-hdfs/cache/hdfs/dfs/name/
Bug: https://issues.apache.org/jira/browse/HDFS-3752
su hdfs -c “hdfs namenode -bootstrapStandby”
service hadoop-hdfs-namenode start

Ellenőrzés:

root@mgmt1:~# su hdfs -c "hdfs haadmin -getServiceState nn1"
active
root@mgmt1:~# su hdfs -c "hdfs haadmin -getServiceState nn2"
standby

Datanode telepítés és konfiguráció

A következő 3 gépre kell feltelepíteni: stg1, stg2, stg3

apt-get install hadoop-hdfs-datanode

A /etc/hadoop/conf/hdfs-site.xml fájlban szükséges beállítások:

  <property>
     <name>dfs.datanode.data.dir</name>
     <value>file://srv/vodstorage01</value>
  </property>
  <property>
     <name>dfs.datanode.data.dir.perm</name>
     <value>700</value>
  </property>

HDFS kliens telepítés és konfiguráció

apt-get install hadoop-client

A /etc/hadoop/conf/hdfs-site.xml fájlban szükséges beállítások:

  <property>
     <name>dfs.ha.automatic-failover.enabled.vodstorage01</name>
     <value>true</value>
  </property>

HDFS FUSE telepítés

apt-get install hadoop-hdfs-fuse

függésekkel:
apt-get install hadoop-hdfs-fuse hadoop-client hadoop-mapreduce hadoop-0.20-mapreduce libssl0.9.8

TODO: libssl0.9.8 csak squeeze-ben van, wheezy-re kell készíteni buildet.

/etc/default/hadoop-ba érdemes felvenni:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

FUSE mount:

hadoop-fuse-dfs dfs://<namenode> <mount point>
hadoop-fuse-dfs dfs://vodstorage01 /srv/dwsc/users

fstab beállítás:

hadoop-fuse-dfs#dfs://vodstorage01      /srv/dwsc/users       fuse    notrash 0       0

NFS root-ban chrootolva érdemes szerkeszteni, mert egy-két mappa symlinkelve van!

HDFS státusz ellenőrzés

http://172.28.28.1:50070/dfshealth.jsp vagy http://172.28.28.2:50070/dfshealth.jsp