이 블로그 검색

2014년 7월 26일 토요일

hadoop 2.x HA 구성을 위한 QJM 설정 및 hbase 설정


hadoop QJM(quorum journal manager)
1. core-site.xml 파일 수정
<property>
<name>ha.zookeeper.quorum</name>
<value>mydb-zookeeper1:2181,mydb-zookeeper2:2181,mydb-zookeeper3:2181</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mydbcluster</value>
</property>

2. hdfs-site.xml 파일 수정
<property>
<name>dfs.nameservices</name>
<value>mydbcluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mydbcluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mydbcluster.nn1</name>
<value>mydb-namenode1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mydbcluster.nn2</name>
<value>mydb-namenode2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mydbcluster.nn1</name>
<value>mydb-namenode1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mydbcluster.nn2</name>
<value>mydb-namenode2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://mydb-journalnode1:8485;mydb-journalnode2:8485;mydb-journalnode3:8485/mydbcluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/mydb/hdfs/jn</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mydbcluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/mydb/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>

3. 각 노드로 설정파일 배포
scp -r $hadoop_home/etc/hadoop mydb@nodes:$hadoop_home/etc/

4. quorum journal node start
mydb-journalnode1
mydb-journalnode2
mydb-journalnode3
각 노드에서
$HADOOP_HOME/sbin/hadoop-daemon.sh start journalnode
jps 에서 JournalNode 확인

5. active namenode 에서 namenode format 수행
$HADOOP_HOME/bin/hdfs namenode -format
미리 format 되어있으면 상관없음.
그리고 namenode 만 실행시켜둔다.
$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode

6. standby namenode 로 설정할 노드에서 데이터 싱크를 맞춰줘야 함
$HADOOP_HOME/bin/hdfs namenode -bootstrapStandby
실패하면 active namenode 에서 namenode daemon 이 실행중인지 확인해본다.
standby namenode 도 실행
$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode

7. namenode 2군데 모두 zkfc 실행
$HADOOP_HOME/sbin/hadoop-daemon.sh start zkfc

8. 둘다 standby 로 되어있으면 하나를 active 로 바꾸어준다
$HADOOP_HOME/bin/hdfs haadmin -transitionToActive nn1
**. haadmin options
Usage: DFSHAAdmin [-ns <nameserviceId>]
[-transitionToActive <serviceId>]
[-transitionToStandby <serviceId>]
[-failover [--forcefence] [--forceactive] <serviceId> <serviceId>]
[-getServiceState <serviceId>]
[-checkHealth <serviceId>]
[-help <command>]

9. 수동으로 failover 를 수행할려면
$HADOOP_HOME/bin/hdfs haadmin -failover nn1 nn2
(nn1 이 fail 났으니 nn2 를 active 로 바꾸어라는 명령)
10. datanode 들도 각각 실행하면 hdfs 를 사용 가능하다.
각 노드마다
$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
를 수행해도 되고,
마스터에서
$HADOOP_HOME/sbin/start-all.sh
를 수행해도 됨.

11. hbase 설정파일 변경
hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://mydbcluster/hbase</value>
</property>
hbase conf 파일들 배포
scp -r $hbase_home/conf mydb@nodes:$hbase_home/

12. hdfs qjm, hbase 설정 끝.

댓글 없음:

댓글 쓰기