一、主从架构的单点故障问题
主从架构
Hadoop采用了主从架构,其中包含一个主节点和多个从节点。主节点负责管理整个集群的元数据、任务分配等关键任务,而从节点则负责执行具体的数据存储、计算等操作。
单点故障
在Hadoop主从架构中,主节点作为系统的核心组件,一旦发生故障,将直接影响整个集群的可用性和稳定性。
zookeeper解决单点故障
核心:设置备用主节点
切换方案:通过创建临时节点进行选举,当主节点故障时,其他节点检测到并尝试重新创建临时节点,成功创建的节点成为新的主节点,从而实现主节点的自动切换。
二、ZooKeeper的简介和体系架构
简介
ZooKeeper是一个开源的分布式应用程序协调服务,是Google的Chubby的开源实现,是Hadoop和HBase等分布式系统的重要组件。通过提供配置维护、域名服务、分布式同步、组服务等功能,帮助开发人员构建可靠的分布式系统,提供一致性、可靠性和高可用性的服务。
体系架构
Server:节点
Follower和Leader:节点状态(主从节点)
Client:运行于节点之上的客户端
数据同步:每个节点中的数据将会在其他节点中进行保存备份
切换:当主节点宕机(Leader),将从其他从节点中(Follower)选取一个,变更为主节点
三、Zookeeper的环境搭建
1.单节点
配置文件
zoo.cfg(在conf目录下默认没有此文件,因此需要修改zoo_sample.cfg,复制即可)
zoo.cfg
dataDir=/root/training/zookeeper-3.4.10/tmp
server.1=bigdata111:2888:3888
dataDir=/root/training/zookeeper-3.4.10/tmp
数据保存的目录
server.1=bigdata111:2888:3888
指定主机
2888:数据通信端口
3888:选举的端口
/root/training/zookeeper-3.4.10/tmp
在此目录下创建文件myid
输入1,表示当前节点的id
启动
zkServer.sh start
zookeeper集群
部署
仿照上述单节点部署于bigdata112,113,114上
zoo.cfg
server.1=bigdata112:2888:3888
server.2=bigdata113:2888:3888
server.3=bigdata114:2888:3888
myid
每个节点的tmp目录下建立myid文件,按照zoo的后缀分别输入1,2,3
112:1
113:2
114:3
启动与测试HA
三个节点同时启动zookeeper
zkServer.sh start
查看状态
zkServer.sh status
使用jps kill当前leader的进程致使宕机(114节点宕机)
下图为宕机后的状态,可见112变为leader
恢复114节点(重启zookeeper),查看3节点状态
可见112为leader,114为follower