Hadoop的HA机制(Zookeeper集群+Hadoop集群)配置记录

本文详细记录了在Hadoop 2.4.1版本中配置高可用性(HA)的过程,涉及到Zookeeper 3.4.5集群的搭建以及Hadoop集群的HA机制。通过JournalNode和Zookeeper实现NameNode的故障切换,确保业务连续性。同时,文章提到了在3台主机上的部署规划和常见问题解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博主:hadoop_version=2.4.1
java_version=1.7
zooKeeper_version=3.4.5
Linux =CentOs 6.5
1.首先说明HA是什么?
HA意为High Available,高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。


2.HA机制的前世今生
2.1 Hadoop_1.X集群的NameNode
Namenode 管理者文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个,分别是Namespace 镜像文件(Namespace image)和操作日志文件(edit log),这些信息被Cache在RAM中,当然,这两个文件也会被持久化存储在本地硬盘。Namenode记录着每个文件中各个块所在的数据节点的位置信息,但是他并不持久化存储这些信息,因为这些信息会在系统启动时从数据节点重建。
在hadoop1时代,只有一个NameNode。如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了。这是hadoop1中的单点问题,也是hadoop1不可靠的表现。如下图所示,便是hadoop1.0的架构图;
这里写图片描述
2.2 Hadoop_2.x集群的NameNode
为了解决hadoop1中的单点问题,在hadoop2中新的NameNode不再是只有一个,可以有多个(目前只支持2个(2.4.1版本))。每一个都有相同的职能。一个是active状态的,一个是standby状态的。当集群运行时,只有active状态的NameNode是正常工作的,standby状态的NameNode是处于待命状态的,时刻同步active状态NameNode的数据。一旦active状态的NameNode不能工作,通过手工或者自动切换,standby状态的NameNode就可以转变为active状态的,就可以继续工作了。这就是高可靠。
2.3 JournalNode实现NameNode(Active和Standby)数据的共享
当有两个NameNode,一个standby一个active,当active有数据变动时,standby也应该及时更新,这样才可以做到高可靠!否则,信息不一致还怎么叫高可靠呢?
这里写图片描述
两个NameNode为了数据同步,会通过一组称作JournalNodes(JNs)的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了
2.4 NameNode之间的故障切换
active的NameNode出现了故障,例如挂机了,是谁去切换standby的NameNode变为active状态呢?这时,就需要引入ZooKeeper。首先HDFS集群中的两个NameNode都在ZooKeeper中注册,当active状态的NameNode出故障时,ZooKeeper能检测到这种情况,它就会自动把standby状态的NameNode切换为active状态


3.Zookeeper集群+Hadoop集群
3.1 前期准备参见:http://blog.youkuaiyun.com/dingchenxixi/article/details/50775650 中 1-2节,Linux的安装以及网络配置
3.2 集群规划

主机名 IP 安装软件 运行的进程
had01 192.168.0.141 jdk,hadoop NameNode,DFSZKFailoverController(zkfc)
had02 192.168.0.142 jdk,hadoop NameNode,DFSZKFailoverController(zkfc)
had03 192.168.0.143 jdk,hadoop ResourceManager
had04 192.168.0.144 jdk,hadoop ResourceManager
had05 192.168.0.145 jdk,hadoop,zookeeper DataNode,NodeManager、JournalNode、QuorumPeerMain
had06 192.168.0.146 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
had07 192.168.0.147 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

3.3 安装配置zooKeeper集群(在had05上)
3.3.1 解压zookeeper的jar

tar -zxvf zookeeper-3.4.5.tar.gz -C ~/app

安装在用户主目录下的app文件夹内
3.3.2 修改配置

cd /weekend/zookeeper-3.4.5/conf/
cp zoo_sample.cfg zoo.cfg 
vim zoo.cfg
修改:dataDir=/home/hadoop/app/zookeeper-3.4.5/tmp
在最后添加:
server.1=had05:2888:3888
server.2=had06:2888:3888
server.3=had07:2888:3888
保存退出
然后创建一个tmp文件夹
mkdir /home/hadoop/app/zookeeper-3.4.5/tmp
再创建一个空文件
touch /home/hadoop/app/zookeeper-3.4.5/tmp/myid
最后向该文件写入ID
echo 1 > /home/hadoop/app/zookeeper-3.4.5/tmp/myid

server.x意义:
这里写图片描述
zooKeeper工作原理:http://www.cnblogs.com/kunpengit/p/4045334.html
zoo.cfg配置文件:
这里写图片描述
3.3.3 将配置好的zookeeper拷贝到其它节点
首先分别在had06、had07用户目录下创建一个app目录:mkdir app

scp -r app/zookeeper-3.4.5/ had06:app/
scp -r app/zookeeper-3.4.5/ had07:app/      
注意:修改had06、had07对应app/zookeeper-3.4.5/tmp/myid内容
had06:echo 2 > app/zookeeper-3.4.5/tmp/myid
had07:echo 3 > app/zookeeper-
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值