antony@notes:~/data-platform$ cat "Hadoop-ha.md"
Hadoop ha
Hadoop ha
目標
m1, m2 都會有 Name Node, 和 Resource Manager
修改 Hadoop 設定檔
core-site.xml
編輯設定檔
$ nano ~/vmusdt/hdp33/ha/core-site.xml內容 :
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hdfsha</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://hdfsha</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>bigred</value>
</property>
<property>
<name>hadoop.proxyuser.root.users</name>
<value>bigred</value>
</property>
<!-- HA -->
<property>
<name>ha.zookeeper.quorum</name>
<value>d9m2</value>
</property>
</configuration>hdfs-site.xml
編輯設定檔
$ nano ~/vmusdt/hdp33/ha/hdfs-site.xml內容 :
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/bigred/nn</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/home/bigred/sn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/bigred/dn</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- HA -->
<property>
<name>dfs.nameservices</name>
<value>hdfsha</value>
</property>
<property>
<name>dfs.ha.namenodes.hdfsha</name>
<value>d9m1,d9m2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.hdfsha.d9m1</name>
<value>d9m1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.hdfsha.d9m2</name>
<value>d9m2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.hdfsha.d9m1</name>
<value>d9m1:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.hdfsha.d9m2</name>
<value>d9m2:9870</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://d9m1:8485;d9m2:8485;/hdfsha</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/bigred/journal</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.hdfsha</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>shell(/bin/true)</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/bigred/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>yarn-site.xml
編輯設定檔
$ nano ~/vmusdt/hdp33/ha/yarn-site.xml內容 :
<?xml version="1.0"?>
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>d9m2</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/bigred/nm</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- HA -->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarnha</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>d9m1,d9m2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.d9m1</name>
<value>d9m1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.d9m2</name>
<value>d9m2</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.d9m1</name>
<value>d9m1:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.d9m2</name>
<value>d9m2:8088</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>d9m2</value>
</property>
</configuration>派送設定檔
$ dthaconf清除目錄
$ ssh d9m1 rm -r /home/bigred/journal; ssh d9m2 rm -r /home/bigred/journal
$ ssh d9m1 sudo rm -r /home/bigred/nn; ssh d9m2 rm -r /home/bigred/nn
$ ssh d9w1 sudo rm -r /home/bigred/dn; ssh d9w2 rm -r /home/bigred/dn; ssh d9w3 sudo rm -r /home/bigred/dn啟動 Journal Node
$ ssh d9m1 hdfs --daemon start journalnode; ssh d9m2 hdfs --daemon start journalnode檢查
$ ssh d9m1 jps; ssh d9m2 jps啟動 ZooKepper Failover Controller
$ ssh d9m2 zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
$ ssh d9m2 hdfs zkfc -formatZK -force
$ ssh d9m1 hdfs --daemon start zkfc
$ ssh d9m2 hdfs --daemon start zkfc