楼主: haipeng1221
2361 2

[Hadoop] Hadoop的zkfc机制(守护进程) [推广有奖]

  • 0关注
  • 0粉丝

大专生

25%

还不是VIP/贵宾

-

威望
0
论坛币
1528 个
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
340 点
帖子
25
精华
0
在线时间
60 小时
注册时间
2018-7-11
最后登录
2018-10-24

haipeng1221 发表于 2018-10-17 11:43:39 |显示全部楼层
本帖最后由 haipeng1221 于 2018-10-17 11:45 编辑

zkfc(守护进程):ZKFC的线程模型总体上来讲比较简单的,它主要包括三类线程,一是主线程;二是HealthMonitor线程; 一是zookeeper客户端的线程
  • HealthMonitor:用于监控nameNode(NN)是否unavailable或者处于unhealth状态,定期check NN的健康状况,在NN健康状况发生变化时,通过回调函数把变化通知给ZKFailoverController
  • ActiveStandbyElector:用于监控NN在zk中的状态,管理NN在zookeeper上的状态,zookeeper上对应node的结点发生变化时,通过回调函数把变化通知给ZKFailoverController
  • ZKFailoverController: 驱动整个ZKFC的运转,通过向HealthMonitor和ActiveStandbyElector注册回调函数的方式订阅subscribe HealthMonitor和ActiveStandbyElector的事件并管理NN的状态,并做相应的处理。另外ZKFC还需要负责fencing。
  • FailoverController: 提供做graceful failover的相关功能(dfs admin可以通过命令行工具手工发起failover)
注:1.Fencing的设计

通过增加了fencing的回调机制对ASE进行增强,详细如下:
   1.1在获取了ActiveLock之后,通知本地NN成为了Active之前,检查breadcrumb znode的存在性
       1)面包屑Znode存在的话,调用fenceOldActive(data)从那个NN上传入data数据,如果成功了,删除面包屑Znode
      2)如果fencing失败,log一个error,扔掉lock,sleep一会,重新进行Election。这样也给其他NN有机会成为ActiveNN
      3)使用本地NN的标识数据,创建一个新的breadcrumb node。
  1.2当退出Election的时候,quiting的NN能够自己判定是否需要fencing。如果需要,将删除breadcrumb node,然后关闭ZK session。

2.zk(zookeeper)在zkfc中可以提供的功能
(1) Failure detector: 及时发现出故障的NN,并通知zkfc
(2) Active node locator: 帮助客户端定位哪个是Active的NN
(3) Mutual exclusion of active state: 保证某一时刻只有一个Active的NN

架构图:









stata SPSS
wangyong8935 发表于 2018-10-26 13:04:22 |显示全部楼层
回复

使用道具 举报

wangyong8935 发表于 2018-10-26 14:30:32 |显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

GMT+8, 2018-11-20 00:11