居然没有人总结Zookepeer技术,这可是大数据必学技术之一啊

学习大数据技术已经有一段时间了,再此期间学到了不少,下面是近期的学习笔记总结:Zookepeer技术总结。

我将从以下六个方面展开总结:

1、Zookepeer的角色

2、Zookepeer的三大功能,四大特性

3、Zookepeer的三大应用场景

4、Zookepeer的选举机制

5、HA机制

6、脑裂的解决方法

一、Zookepeer的角色

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。

解决:

居然没有人总结Zookepeer技术,这可是大数据必学技术之一啊

当第一次启动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下发名字节点指令,李如删除、复制数据块指令等等。

以上就此总结完毕,欢迎各位大佬批评指正!

相关推荐