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所在机器来验证切换状况。