居然没有人总结Zookepeer技术,这可是大数据必学技术之一啊
学习大数据技术已经有一段时间了,再此期间学到了不少,下面是近期的学习笔记总结:Zookepeer技术总结。
我将从以下六个方面展开总结:
1、Zookepeer的角色
2、Zookepeer的三大功能,四大特性
3、Zookepeer的三大应用场景
4、Zookepeer的选举机制
5、HA机制
6、脑裂的解决方法
一、Zookepeer的角色
zookepeer在知识体系中扮演了极为重要的角色,它可以是领导者,学习者,跟随者,观察者,具体讲,如下图所示:
二、Zookepeer的三大功能,四大特性
功能包括:
1.为用户提供注册和查询服务。
2.为用户提供数据节点的监听服务。
3.跟用户保持心跳,检测用户的状态。
特性表现为:
1.全局数据一致性:每个server都保存一份相同的数据,client无论链接那台,都会得到相同的数据。
2.分布式读写,更新请求转发,有lender执行数据的更新,lender按照请求顺序执行
3.原子性,要么成功、要么失败
4.特定时间实时性
三、Zookepeer的三大应用场景
基于Zookepeer的分布式协调服务:
1.主节点的主备切换
2.主节点的选举
3.分布式共享锁
四、Zookepeer的选举机制
具体根据优先级规则:
1.数据版本:最新的节点。
2.逻辑时钟:在选举过程中投了多少票。
3.ID号大:因为Zookeper命名规则是根据序列化命名。
这里需要注意:如果逻辑时钟小的投票结果被忽略,需重新投。统一逻辑时钟后,选举数据ID为大的胜出。
五、HA机制
1.需求:HDFS是master/slave结构 ,namenode如果出现问题会给集群带来问题。
2.解决:准备两台namenode,当namenode挂了之后立即启用standby namenode
这样会出现的问题?怎么同步namenode的fsimage。
解决:
当第一次启动HA的过程?可进行如下操作:
启动集群:(注意:第一次启动时需要严格按照以下顺序进行:)
1.启动zookeeper集群(自己实现一个批量启动zk的脚本)
2.启动qjounalnode(在3台机器上都要启动)
/usr/local/hadoop-2.7.1/sbin/hadoop-daemon.sh start journalnode
3.格式化hdfs hdfs namenode –format
4.单机启动namenode hadoop-daemon.sh start namenode
5.数据同步。
6.scp -r /usr/local/hadoopdata/dfs /
7.hdfs namenode -bootstrapStandby/
8.格式化zkfc hdfs zkfc -formatZK
9.启动hdfs集群 start-dfs.sh
10.启动yarn集群 start-yarn.sh
六、脑裂的解决方法
在HA架构中有一个非常重非要的问题,就是需要保证同一时刻只有一个处于Active状态的Namenode,否则机会出现两个Namenode同时修改命名空间的问,也就是脑裂。
脑裂的HDFS集群很可能造成数据块的丢失,以及向Datanode下发错误的指令等异常情况。为了预防脑裂的情况,HDFS提供了三个级别的隔离机制(fencing): 1.共享存储隔离:同一时间只允许一个Namenode向JournalNodes写入editlog数据。 2.客户端隔离:同一时间只允许一个Namenode响应客户端的请求。 3.Datanode隔离:同一时间只允许一个Namenode向Datanode下发名字节点指令,李如删除、复制数据块指令等等。
以上就此总结完毕,欢迎各位大佬批评指正!