pig2 发表于 2017-5-10 19:24:38

zookeeper思考与总结1:zookeeper在其它组件的作用

本帖最后由 pig2 于 2017-5-11 20:50 编辑

问题导读
1.为什么产生zookeeper?
2.你所了解的zookeeper有哪些应用?
3.如何查看zookeeper存储内容?

static/image/hrline/4.gif


1.为什么会产生zookeeper
zookeeper是模仿的谷歌的Chubby来解决分布式一致性的问题。2006年的时候Google出了Chubby,2009年3年以后Yahoo在Apache上推出了类似的产品ZooKeeper.

ZooKeeper跟Chubby一样用来存放一些相互协作的信息(Coordination),这些信息比较小一般不会超过1M,在zookeeper中是以一种hierarchical tree的形式来存放,这些具体的Key/Value信息就store在tree node中。当有事件导致node数据,例如:变更,增加,删除时,Zookeeper就会调用 triggerWatch方法,判断当前的path来是否有对应的监听者(watcher),如果有watcher,会触发其process方法,执行process方法中的业务逻辑.

2.zookeeper的应用

zookeeper在kafka的作用
kafka将zookeeper做小型数据库这里我们进入zookeeper看下保存的kafka的相关信息
通过
zkCli.sh
上面命令,自动连接本地或则通过下面命令
zkCli.sh -server master:2181

指定服务器连接master。
进入后,我们通过下面命令
ls /

查看里面的存储内容
ls /




ls /brokers/ids


命令为
ls /brokers/ids



zookeeper在hbase中的作用:

1.选举
我们知道hbase通过zookeeper选举master,也就是说zookeeper提高了hbase集群的稳定性。换句话说,没有zookeeper,hbase稳定性大大降低,甚至不能启动。

2.存储

详解:



hbase在启动的时候,hmaster启动时候会将hbase 系统表-ROOT- 加载到 zookeeper cluster,通过zookeeper cluster可以获取当前系统表.META.的存储所对应的regionserver信息。


HBase中的znode
/hbase是集群的根znode,ZookeeperWatcher初始化时创建.还有诸如/hbase/root-region-server,/hbase/master,大家可以在创建zookeeper后,进入zookeeper查看

Zookeeper在storm充当的作用
Storm的所有的状态信息都是保存在Zookeeper里面,nimbus通过在zookeeper上面写状态信息来分配任务,
supervisor,task通过从zookeeper中读状态来领取任务,同时supervisor, task也会定义发送心跳信息到zookeeper,
使得nimbus可以监控整个storm集群的状态,从而可以重启一些挂掉的task。
ZooKeeper 使得整个storm集群十分的健壮,任何一台工作机器挂掉都没有关系,只要重启然后从zookeeper上面重新获取状态信息就可以了。
下面一张图,说明了zookeeper的作用:保存了集群操作的状态



storm有哪些目录,这里简单列出来
Strom在Zookeeper中的目录结构

/assignments -> 任务分配信息
/storms -> 正在运行的topology的ID
/supervisors -> 所有的Supervisors的心跳信息
/workerbeats -> 所有的Worker的心跳
/errors -> 产生的出错信息
更多可以网上查询。

后续更新总结zookeeper的作用


wuyu8995861 发表于 2017-6-30 11:13:08

学习学习
页: [1]
查看完整版本: zookeeper思考与总结1:zookeeper在其它组件的作用