一 什么是zookeeper
自己的理解:zookeeper 其实就是个管理员,监控 协调 所有需要同步的设备或进程。
官方: Zookeeper 是一个分布式的,开放源码的应用协调服务。是以Fast paxos 算法为基础,实现同步服务,配置维护和命名服务等分布式应用。
Zookeeper的稳定性
Zookeeper通过一种和文件系统很像的层级命名空间让分布式进程互相协同工作。这些命名空间有一系列数据寄存器组成,我们也叫这些数据寄存器为znodes。这些znodes存储在内存中。所以zookeeper有着高的吞吐和低延迟。
zookeeper实现了高性能、高可靠性、和有序的访问、高性能保证了其能应用在大型的分布式文件系统中。高可靠性保证其不会因为单一节点的故障而造成任何问题。有序的访问能保证客户端实现较为复杂的同步操作。
zookeeper的有序: 使用数字来对每一个更新进行标记。后续的操作可以根据这个顺序实现诸如同步操作这样更高更抽象的服务。即:每个服务器都按这个顺序进行操作,所以只要初始状态一样,那么结束状态也就一样,保证了每个服务器的一致性。
zookeeper 高效性表现在以读为主的系统集群上。
zookeeper在hadoop和hbase上的作用:
在hadoop上 保证整个集群中只有一个namenode,以及存储配置信息等。
在Hbase上:
1 保证集群中只有一个Hmaster
2 由于Hregionserver 也在zookeeper中注册了,所以可以监控Hregion server的状态,及时的region server进行处理。
3 存储了region的寻址入口(即.root表中的信息)
4 存储了Hbase的schema,包括有哪些table,每个table有哪些column family。