zookeeper

来源:互联网 发布:apache zip jar 编辑:程序博客网 时间:2024/06/05 15:29

zookeeper分布式应用程序协调服务,是Hadoop和Hbase的重要组件。提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

Zookeeper:主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
zookeeper架构

Znode维护着数据、ACL(access control list,访问控制列表)、时间戳等交换版本号等数据结构,它通过对这些数据的管理来让缓存生效并且令协调更新。每当Znode中的数据更新后它所维护的版本号将增加,这非常类似于数据库中计数器时间戳的操作方式。

另外Znode还具有原子性操作的特点:命名空间中,每一个Znode的数据将被原子地读写。读操作将读取与Znode相关的所有数据,写操作将替换掉所有的数据。
Zookeeper运用场景

数据发布与订阅
应用配置集中到节点上,应用启动时主动获取,并在节点上注册一个watcher,每次配置更新都会通知到应用。

命名空间服务
分布式命名服务,创建一个节点后,节点的路径就是全局唯一的,可以作为全局名称使用。

分布式通知/协调
不同的系统都监听同一个节点,一旦有了更新,另一个系统能够收到通知。

分布式锁
Zookeeper能保证数据的强一致性,用户任何时候都可以相信集群中每个节点的数据都是相同的。一个用户创建一个节点作为锁,另一个用户检测该节点,如果存在,代表别的用户已经锁住,如果不存在,则可以创建一个节点,代表拥有一个锁。

集群管理
每个加入集群的机器都创建一个节点,写入自己的状态。监控父节点的用户会受到通知,进行相应的处理。离开时删除节点,监控父节点的用户同样会收到通知。

开启zookeeper
./zkServer.sh start
create /节点名称 值
zookeeper只能监控安装zookeeper的节点信息:
get 节点

/letv/data/zookeeper-3.4.5/tmp中的myid,这个id是很重要的,一定要保证整个集群中唯一。
/letv/data/zookeeper-3.4.5/conf /zoo.cfg 配置信息
端口是2181
数据目录:dataDir=/letv/data/zookeeper-3.4.5/tmp
必须要启动集群的一半以上:
查看状态:./zkServer.sh status
最开始启动的是leader,其余是follower
启动自己的客户端:
./zkCli.sh
进程名称:QuorumPeerMain
功能:
1、数据同步,对集群上一台机器上做的操作,会同步到另一台
2、leader死掉后会有内部选举,重新选举leader
3、Hadoop-Ha 中只有一个nameNode处于激活状态,zookeeper用来确保这一点,同时,如果挂掉,zookeeper负责切换,同时将故障转移
4、Zkfc 监控nameNode状态
5、启动journalnode
sbin/hadoop-daemons.sh start journalnode

参考:
http://blog.csdn.net/nsrainbow/article/details/42836479
http://blog.163.com/wm_at163/blog/static/1321734902012325103119779/?suggestedreading&wumii
http://www.yiibai.com/zookeeper/zookeeper_cli.html

Curator API
http://ifeve.com/zookeeper-curato-framework/

搭建:
http://eksliang.iteye.com/blog/2107002
http://eksliang.iteye.com/blog/2226986
http://blog.csdn.net/u011414200/article/details/50248079

启动集群出现如下错误:
Error contacting service. It is probably not running

sh zkServer.sh status #查看当前状态,他会报异常,不要紧,因为是集群,其他两台没有起来,无法进行相互连接,当然报错,启动另外两台就不会报错了!

0 0
原创粉丝点击