Hadoop之高可用原理
来源:互联网 发布:淘宝店铺怎么快速升钻 编辑:程序博客网 时间:2024/04/29 20:34
我们首先看一下普通的HA, 由于发生故障时需要依赖于管理员手动切换NameNode,由于管理员不可能随时随地监控集群,所以自动主备切换很有必要。
一 HA整体架构
HA总共有2个NameNode, ActiveNameNode和StandbyNameNode
,2个NameNode互为主备,处于Active状态的是主NameNode,处于Standby状态的是备NameNode,只有主NameNode才能对外提供服务。
主备切换有两种方式:
手动切换:配置好了配置文件,我们需要首先启动JournalNode,然后可以看到QuorumPeerMain进程启动;格式化一个NameNode,然后启动2个NameNode和所有DataNode,然后StandbyNameNode进行元数据同步,这时候都是Standby状态,我们需要手动切换某一个NameNode成Active状态
自动切换:通过使用zookeeper来实现NameNode自动切换。通过
执行命令hdfszkfc -formatZK来启动ZKFailoverController组件,并格式化ZooKeeper,如果之前没有在Standby同步元数据还需要同步元数据。
ZKFailoverController主要用于总体控制主备的切换,在启动过程中会初始化HealthMonitor和ActiveStandbyElector组件,并且向这两个组件注册回调函数。
HealthMonitor: 主要是监控NameNode的健康状态,一旦检测到NameNode发生变化,就会回调ZKFailoverController的方法进行主备选举
ActiveStandbyElector: 主要是进行自动的主备选举,内部封装了ZK的逻辑,一旦ZK主备选举完成,就会调用ZKFailoverController方法进行主备切换。
主备切换流程图示:
二 主备切换源码分析
DFSZKFailoverController: 。,
1首先初始化zookeeper:调用initZK()方法初始化zookeeper,根据配置的zookeeper地址列表,进行初始化,并初始化ActiveStandbyElector,
初始化ActiveStandbyElector,会注册回调ElectorCallbacks,并且创建于zookeeper的连接,注册watcher.而ActiveStandbyElector又实现了StateCallback和StringCallback接口,分别在调用zkCilent.exists和zkClient.create通过processResults对其调用结果处理
2格式化zookeeper:如果带有参数-formatZK,那么此时就会格式化
zookeeper.
3检测是否配置fence
4初始化RPC: 调用initRPC初始化PRC
5初始化HealthMonitor:调用initHM,初始化HealthMonitor.并添加回调,然后以后台进程启动HealthMoinitor,去做健康检查。本质就是检测NameNode的状态,ZKFailoverController接收回调状态,并进行重新选举,如果状态健康,则参加选举,如果不健康,则退出选举。
会删掉zookeeper上znode节点信息,然后注册在ActiveStandbyElector的watcher会检测到删除节点的事件,然后执行 joinElectionInternal去创建临时节点,进行抢锁。
是否创建成功是在processResult中捕获的,如果创建成功,则当前节点转换为Active(becomeActive)
becomeActive时候会判断zookeeper上是否存在原Active NameNode创建的ActiveBreadCrumb节点,如果有则进行fence操作,先由ZK
FailoverController执行gracefulFence,如果不行则执行NodeFence的
fence方法,然后将当前节点信息写入ActiveBreadCrumb节点,并将当前状态转化为Active
之前的ActiveNameNode,HealthMonitor一直循环检测NameNode健康状态,一旦健康之后,将再次加入选举。
- Hadoop之高可用原理
- hadoop ha 高可用实现原理
- Hadoop元数据namenode的高可用原理
- Hadoop HA高可用集群原理和搭建
- HADOOP高可用机制
- Hadoop集群(高可用)
- keepalived高可用原理
- Hadoop-2.4.1学习之高可用ResourceManager
- docker之hadoop HA高可用配置(六)
- Hadoop之HDFS的配置------HA(高可用版本)
- Hadoop中的高可用机制
- hadoop 高可用集群搭建
- Hadoop,HA高可用集群
- Hadoop HA高可用配置
- hadoop namenode高可用解决方案
- 搭建高可用hadoop集群
- hadoop高可用配置笔记
- hadoop-高可用搭建实验
- Banner和pultorefresh的依赖
- 二级列表展示购物车MVP
- java读取项目资源文件
- 程序员你为什么这么累【续】:编码习惯之异常处理
- 人工智能硅脑竞赛:传统芯片巨头VS AI芯片创企
- Hadoop之高可用原理
- 语音合成技术
- 小米手机测试安装失败Installation failed with message:INSTALL_CANCELED_BY_USER
- 分类模型与算法--距离判别法
- 第一个Hibernate程序
- Atom beautify不可用,提示uncrustify未安装错误
- lua中表table的拷贝而不是引用的操作方法
- JavaScript中location.hash详解
- Python-3.6.2