ZooKeeper

发自简书


  1. ZooKeeper定义
  2. ZooKeeper在产品的位置
  3. 系统架构
  4. 关键特性介绍
  5. 与组件的关系

1、Zookeeper定义

Zookeeper 分布式服务框架主要是用来解决分布式应用中经常遇到的一些数据管理问题,提供分布式、高可用性的协调服务能力,在FusionInsight集群中主要用途是保存上层组件的元数据,并保证其主备倒换。

2、ZooKeeper在产品的位置

3、ZooKeeper服务架构

模型


1.分布式地分布在一组机器中
2.所有节点存储整份数据(在内存也在硬盘)
3.在启动时候选举出Leader
4.Leader会做原子广播到所有其他节
5.严格的顺序访问控制6.不会部分读写

容灾能力

一般情况下,ZooKeeper能够完成选举即能够正常对外提供服务。
ZooKeeper选举时,当某一个实例获得了半数以上的票数时,则变为
leader。
对于n个实例的服务,n可能为奇数或偶数

n为奇数时,假定n=2x+1,则成为leader的节点需获得x+1票,容灾能
力为x

n为偶数时,假定n=2x+2,则成为leader的节点需要获得x+2票(大于一半),容灾能力为x。

由此可见,2x+1个节点与2x+2个节点的容灾能力相同(3个与4个相同,5
个与6个相同…),而考虑到选举以及完成写操作的速度与节点数的相关性,我们建议ZooKeeper部署奇数个节点。

ZooKeeper数据模型

  1. 分层命名空间
  2. 每个命名空间的节点都叫做“znode”
  3. 每个znode被路径区分(如:/app1)
  4. znode节点类型– 永久节点和临时节

    5.临时节点不能有子节点
    6.每个znode节点有数据,也可以选择
    有子节点
  5. znode不能被重命名
  6. 可以给znode增加或者删除watchers


4、关键特性

最终一致性:无论哪个server,对外展示的均是同一个视图。

实时性:保证客户端将在一个时间间隔范围内获得服务器的更新信息,或
者服务器失效的信息。

可靠性:一条消息被一个server接收,它将被所有server接受。

等待无关性:慢的或者失效的client不得干预快速的client的请求,使得每
个client都能有效的等待。

原子性:更新只能成功或者失败,没有中间状态。

顺序性:客户端的更新顺序与它们被发送的顺序相一致。

读特性

由ZooKeeper的一致性可知,客户端无论连接哪个server,获取的均是同一个视图。所以,读操作可以在客户端与任意节点间完成。


写特性

ACL(访问控制列表)

ACL可以控制访问ZooKeeper的节点,只能应用于特定的znode上,而不能应用于该znode的所有子节点上。设置ACL命令为 setAcl /znode scheme:id:perm
Scheme为认证方式, ZooKeeper内置了4种方式:
world 一个单独的ID,表示任何人都可以访问
auth 不使用ID,只有认证的用户可以访问
digest 使用username:password生成MD5哈希值作为认证ID
IP 使用客户端主机IP地址来进行认证

Id:用来认证的字段,用来判断认证信息是否合法,不同的scheme的认证方式不同。
Perm:即permission,通过Acl认证的用户对该节点可拥有的操作权限

日志增强

Ephemeral node(临时节点)在session过期之后就会被系统删除,
在审计日志中添加Ephemeral node被删除的审计日志,以便了解
当时Ephemeral node的状态信息。

客户端常用命令使用

调用ZooKeeper客户端,执行命令:
sh zkCli.sh –server 172.0.0.1:24002
执行创建节点,设置ACL,查询ACL,查询节点值,删除节点操作。
创建节点:create /node
获取节点子节点: ls /node
设置Acl:setAcl /node sasl:admin@HADOOP.COM:cdrwa
查询节点Acl: getAcl /node
创建节点数据: set /node data
获取节点数据: get /node
删除节点:delete /node
删除节点及所有子节点: deleteall /node

5、与组件的关系

ZooKeeper和Storm Nimbus HA的配合关系

Storm Nimbus利用zookeeper来选主。ZooKeeper提供了以下两种能力:
 分布式锁服务多个Nimbus进程都尝试着去ZooKeeper中写入一个对应的节点,该节点只能被一个Nimbus进程创建成功,创建成功的Nimbus进程成为主Nimbus。
 事件侦听机制--watcher。 备Nimbus在侦听那个对应的ZooKeeper节点。主Nimbus进程宕掉之后,该节点会被删除,那么,备Nimbus就可以收到相应的消息。


ZooKeeper和HDFS的配合关系

ZKFC(ZKFailoverController)作为一个ZooKeeper集群的客户端,用来监控NameNode的状态信息。ZKFC进程仅在部署了NameNode的节点中存在。HDFS
NameNode的Active和Standby节点均部署有zkfc进程:

 HDFS NameNode的ZKFC连接到ZooKeeper,把主机名等信息保存到ZooKeeper中,即“/hadoop-ha”下的znode目录里。先创建znode目录的NameNode节点为主节点,另一个为备节点。HDFS NameNode Standby通过ZooKeeper定时读取NameNode信息。

 当主节点进程异常结束时,HDFS NameNode Standby通过ZooKeeper感知“/hadoop-ha”目录下发生了变化。


ZooKeeper和YARN的配合关系

 在系统启动时,ResourceManager会尝试把选举信息写入ZooKeeper,第一个成功把写入ZooKeeper的ResourceManager被选举为Active
ResourceManager,另一个为StandbResourceManager。Standby
ResourceManager定时去ZooKeeper监控Active ResourceManager选举信息。

 Active ResourceManager还会在ZooKeeper中创建Statestore目录,存储Application相关信息。当Active ResourceManager产生故障时,Standby ResourceManager会从Statestore目录获取Application相关信息,恢复数据并升为Active。


ZooKeeper和HBase的配合关系

 HRegionServer把自己以Ephemeral方式注册到ZooKeeper中。其中ZooKeeper存储HBase的如下信息:HBase元数据、HMaster地址。 HMaster通过ZooKeeper随时感知各个HRegionServer的健康状况,以便进行控制管理。

 HBase也可以部署多对HMaster类似HDFS NameNode,当HMaster主节点出现故障时,HMaster备用节点会通过ZooKeeper获取主HMaster存储的整个HBase集群状态信息。即通过ZooKeeper实现避免HBase单点故障问题。


思考

1 ZooKeeper在集群中的位置及作用是什么?
2 ZooKeeper节点结构是什么样子?节点类型有哪些?
3 ZooKeeper为什么建议奇数部署?
4 ZooKeeper一致性的含义是什么?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342