zookeeper是一个分布式协调服务,就是为用户的分布式应用程序提供协调服务的,其本身也是一个分布式程序,只要半数以上的服务器存活,就能运行
zookeeper的组成:一个leader,多个followerzookeeper的
特性:
1、全局数据一致性:每个server有一份相同的数据,client无论连接那台服务器,都可以得到相同的数据
2、分布式读写,更新请求转发:由leader实时数据更新的写操作,更新请求的顺序执行,来自同一个client的更新请求会按照发送的顺序来执行
3、数据更新的原子性:一次数据要么成功要么失败实时性:在一定范围内,client能读到更新的数据
zookeeper搭建时最好是奇数台,因为只要一半以上的节点存活,就能对外提供正常服务
leader和follower角色的决定方式:
选举
选举情况1:顺序启动 半数后id最大者为lender
同时启动 id最大者为lender
选举情况2:运行之中,lender突然死亡,则在follower中根据数据版本、逻辑时钟、id号来决定。
Zookeeper 作为 Hadoop 项目中的一个子项目,是 Hadoop 集群管理的一个必不可少的模块,它主要用来控制集群中的数据,如它管理 Hadoop 集群中的 NameNode,还有 Hbase 中 Master Election、Server 之间状态同步等。
高可用ha集群启动:
第一次:
1、启动zookeeper集群
2、启动qjounalnode(在3台机器上都要启动)
/usr/local/hadoop-2.7.1/sbin/hadoop-daemon.sh start journalnode
3、格式化hdfshdfs namenode -format
4、单机启动namenode
hadoop-daemon.sh start namenode
5、数据同步
1、scp -r /usr/local/hadoopdata/dfs /
2、hdfs namenode -bootstrapStandby
6、格式化zkfchdfs zkfc -formatZK
7、启动hdfs集群start-dfs.sh
8、启动yarn集群start-yarn.sh
高可用ha:是指通过尽量缩短因日常维护操作和突发系统崩溃所导致的停机时间,以提高系统和应用的可用性