楼主: haipeng1221
5109 2

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

  • 0关注
  • 0粉丝

大专生

41%

还不是VIP/贵宾

-

威望
0
论坛币
1930 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
410 点
帖子
25
精华
0
在线时间
70 小时
注册时间
2018-7-11
最后登录
2021-10-9

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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

架构图:








二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:回调函数 发生变化 健康状况 线程模型 守护进程

沙发
wangyong8935 在职认证  发表于 2018-10-26 13:04:22 |只看作者 |坛友微信交流群

使用道具

藤椅
wangyong8935 在职认证  发表于 2018-10-26 14:30:32 |只看作者 |坛友微信交流群

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 07:49