Hadoop HA及Failover搭建
Hadoop HA及Failover功能简单介绍:
在Hadoop1.X版本中使用单个NameNode来管理所有的DataNode的元数据,一旦NameNode节点发生故障将导致整个集群不可用,而且必须手动恢复NameNode节点才能够正常提供服务。基于以上致命的缺点,Hadoop2.X提出了HA(High Available)来改进单点故障;另外,通过使用Zookeeper的分布式通知协调功能实现HA的Failover(故障自动转移),而无需人工介入。下面开始介绍HA和Failover的安装配置。
首先,开始本文之前请先搭建好Zookeeper的环境,后续文章中会写关于Zookeeper如何搭建(各位看官如果有不会搭建Zookeeper的,目前请先自行百度,静候博主推出关于Zookeeper的搭建教程,博主这里默认已经搭建好了Zookeeper),本文是建立在分布式基础上进行的修改,如果已经安装好了完全分布式环境,则直接开始本文接下来的内容;如果还没有搭建好完全分布式环境,请看博主的上一篇关于完全分布式环境搭建教程,链接如下:
http://www.jianshu.com/p/962ac811623f
关于版本的介绍:
Zookeeper: zookeeper-3.4.5
Hadoop: hadoop-2.5.0
搭建HA:
1.修改hdfs-site.xml文件,内容如下:
#配置HA的nameservices
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.ha.namenode.ns1</name>
<value>nn1,nn2</value>
</property>
#配置namenode RPC address
<property>
<name>dfs.namendoe.rpc-address.ns1.nn1</name>
<value>master:8020</value>
</property>
<property>
<name>dfs.namendoe.rpc-address.ns1.nn1</name>
<value>slave1:8020</value>
</property>
#配置Namenode HTTP WEB的地址
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>slave1:50070</value>
</property>
#配置journalnode,share edit地址
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/ns1</value>
</property>
#配置edits的存放位置
<property>
<name>dfs.journalnode.edits.dir</name>
#这个目录请自行指定且该指定的目录已经创建好
<value>/usr/local/src/hadoop-2.5.0/data/dfs/jn</value>
</property>
#配置代理
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.hadoop.hdfs.server.namenode.ha.
ConfiguredFailoverProxyProvider</value>
</property>
#配置namenode的隔离方式,这里使用ssh隔离方式,要求两个namenode之间能够通过ssh免密码登录
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
#这里根据实际情况修改,一般为/home/用户名/.ssh/id_rsa
<value>/root/.ssh/id_rsa</value>
</property>
#开启HA故障自动转移
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
2.修改core-site.xml文件,内容如下:
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/src/hadoop-2.5.0/data/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>420</value>
</property>
#通过使用zookeeper实现HA故障自动转移
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
启动测试:
①. HA通过使用zookeeper实现自动故障转移,实现方式如下:
1. 配置好以后,启动所有节点的zookeeper服务
2. 初始化HA在zookeeper中的状态,执行如下命令:
bin/hdfs zkfc -formatZK
②. 启动HA,启动顺序如下:
1. 启动每个节点的journalnode进程
sbin/hadoop-daemon.sh start journalnode
2. 格式化集群,并启动namenode
bin/hdfs namenode -format 在nn1上执行格式化操作
sbin/hadoop-daemon.sh start namenode
3. 同步nn1上的元数据到第二个nn2上,在nn2上执行如下命令
bin/hdfs namenode -bootstrapStandby
4. 启动第二个namenode
sbin/hadoop-daemon.sh start namenode
5. 启动datanode,在各个节点下执行如下命令启动datanode
sbin/hadoop-daemon.sh start datanode
6.将一个namenode变成active状态,执行如下命令
bin/hdfs haadmin -transitionToActive nn1
#查看namenode的状态
bin/hdfs haadmin -getServiceState nn1
#将namenode变为standby状态
bin/hdfs haadmin -transitionToStandby nn1
7. 对集群做基本测试,
测试见:http://www.jianshu.com/p/962ac811623f 文章中的测试
至此,Hadoop的HA及Failover搭建完成,预祝各位朋友搭建成功。欢迎关注。
如需转载,请注明: