hadoop2.7.3 HA高可用集羣安裝html
環境準備node
Hadoop安裝配置shell
修改配置apache
全部節點安裝jdk1.8,ssh,配置hosts文件,配置centos680和centos681之間的互相免登錄,centos680到其餘全部機器的免登錄,關閉防火牆。centos
在centos682,centos683,centos684上安裝Zookeeper3.4.9。ssh
複製hadoop-2.7.3.tar.gz到centos680的/opt目錄下,之後全部的操做都在centos680上進行。ide
解壓hadoop-2.7.3.tar.gz到/opt/bigdata文件夾下:tar –zxvf hadoop-2.7.3.tar.gz –C /opt/bigdata/。oop
ResourceManager藉助zk實現熱備,當某個節點失效以後另外一個節點可以被通知,並接管任務。url
NN必須實現共享元數據才能保證無縫切換;共享元數據能夠採用Linux提供的NFS服務,也能夠使用Hadoop提供的JournalNode;JournalNode採用多數派理論,保證半數以上的節點寫成功即認爲成功。spa
NN要實現自動切換(不須要手工切換),就必須實現實時監控每一個節點的狀態;這裏採用DFSFailoverController進行監控,若是某個NN失敗,其餘NN可以經過ZK被通知到,並接替NN的任務。
HDFS高可用性(NameNode)
RM高可用性(ResourceManager)
Hadoop2.7.3 HA搭建步驟
hadoop-env.sh
修改JAVA_HOME
core-site.xml
hdfs-site.xml
[html] view plain copy
<property>
<name>dfs.nameservices</name>
<value>ns</value>
</property>
<property>
<name>dfs.ha.namenodes.ns</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns.nn1</name>
<value>centos680:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns.nn1</name>
<value>centos680:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns.nn2</name>
<value>centos681:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns.nn2</name>
<value>centos681:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://zk1:8485;zk2:8485;zk3:8485/ns</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/big/hadoop-2.7.3/journaldata</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.ns</name>
<value>
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
mapred-side.xml
[html] view plain copy
<span style="white-space:pre"> </span><property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn-site.xml
[html] view plain copy
<configuration>
<!--開啓RM高可靠-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!--指定RM的名字-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--分別指定RM的地址-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>h0</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>h1</value>
</property>
<!--指定zk集羣地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>h2:2181,h3:2181,h4:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
slaves
分發到其餘節點(在centos680上操做)
scp -r /opt/bigdata/hadoop-2.7.3/ h1:/opt/bigdata/
scp -r /opt/bigdata/hadoop-2.7.3/ h2:/opt/bigdata/
scp -r /opt/bigdata/hadoop-2.7.3/ h3:/opt/bigdata/
scp -r /opt/bigdata/hadoop-2.7.3/ h4:/opt/bigdata/
到h2,h3,h4啓動全部的Zookeeper。
到h2,h3,h4啓動JournalNode(hadoop-daemon.sh start journalnode)
到centos680上執行格式化namenode(hdfs namenode -format),並將格式化後的元數據內容複製到另一個namenode節點中(h1):scp -r tmp/ h1:/opt/bigdata/hadoop-2.7.3/(tmp是在core-site中配置的namenode元數據應該所處的位置)
格式化zk:bin/hdfs zkfc –formatZK。該操做在Zookeeper中建立了數據節點:
初始化和啓動
啓動dfs和yarn
sbin/start-dfs.sh
sbin/start-yarn.sh
驗證
經過殺死active的namenode進程或者關閉namenode所在機器來驗證切換狀況。