Hadoop2.2.0基于QJM的HA实践
日志分析集群已经搭建起来了,但是我总觉得NN没有采用HA是一个大大的隐忧,让我一直不敢把测试集群正式投入使用,总是担心把大批量的日志文件弄过来后,NN挂掉或者硬盘故障的话那就什么都白费工夫,遂决定要把NN的HA也搞起来。
Hadoop2.2.0的NN的HA目前有两种方式,贫民的方式自然是QJM了,它会采用类似Zookeepr的方式来保存NN的LOG,而NFS的模式显然不是我等几台机器组成的集群的选项,那是高大上的土豪们的选择。
话说QJM也不是很难配置的,基于之前搭建的测试集群只要稍微调整下配置即可。我这里采用的是lrts216、lrts217作为主备NN节点,lrts216、lrts217、lrts218则分别作为journal节点,另外也要在lrts216、lrts217、lrts218三台机器上分别搭建Zookeeper3.4.5构成一个ZK的集群,来实现NN的自动切换。
(1)搭建Zookeeper的集群
在我的3台测试机器lrts216、lrts217、lrts218上搭建Zookeeper集群,采用的版本为3.4.5,这个搭建比较简单,可以一找一大把的资料。
(2)修改Hadoop的配置,支持QJM
在/home/hadoop/hadoop-2.2.0/etc/hadoop/hdfs-site.xml中追加:
<property>
<name>dfs.nameservices</name>
<value>lrtscluster</value>
</property>
<property>
<name>dfs.ha.namenodes.lrtscluster</name>
<value>nn216,nn217</value>
</property>
<property>
<name>dfs.namenode.rpc-address.lrtscluster.nn216</name>
<value>lrts216:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.lrtscluster.nn217</name>
<value>lrts217:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.lrtscluster.nn216</name>
<value>lrts216:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.lrtscluster.nn217</name>
<value>lrts217:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://lrts216:8485;lrts217:8485;lrts218:8485/lrtscluster
</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.lrtscluster</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/hadoop/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/hadoop-2.2.0/journal</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
同时要修改下原来的配置,注释掉原来对dfs.namenode.http-address的配置:
<!--
<property>
<name>dfs.namenode.http-address</name>
<value>lrts216:50070</value>
<description>
The address and the base port where the dfs namenode web ui will listen on.
</description>
</property>
-->
另外一个需要追加修改的配置/home/hadoop/hadoop-2.2.0/etc/hadoop/core-site.xml:
<property>
<name>ha.zookeeper.quorum</name>
<value>lrts216:2181,lrts217:2181,lrts218:2181</value>
</property>
--------------------------------------分割线 --------------------------------------
相关阅读:
--------------------------------------分割线 --------------------------------------