上一篇文章,我们完成了hadoop的集群安装,但从机子的节点分布图中我们可以看到namenode只在master机子上存在,一旦该机子宕机,则HDFS停服,所以我们需要一种机制来保证namenode的高可用性,这种风险也存在于resourcemanager。本文将阐述使用zookeeper来保证namenode以及resourcemanager的高可用性。
1 系统、软件和约束前提
- 完成在三台机上安装hadoop集群
https://www.jianshu.com/u/0b75036451ae - 完成在三台机子上安装zookeeper集群并启动
https://www.jianshu.com/p/48f142f876d4
2 操作
2.1 关闭所有节点服务【zk可以不关】,清空之前的数据
ssh master;
hadoop-2.5.2/sbin/stop-all.sh
cd hadoop-2.5.2/dfs;
rm -rf *
mkdir data
mkdir name
# 其他两台机子也做相同清空操作
2.2 在master修改配置文件并拷贝
- 修改core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/root/hadoop-2.5.2/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://myha01/</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<property>
<name>ha.zookeeper.session-timeout.ms</name>
<value>5000</value>
</property>
</configuration>
- 修改hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>