Hadoop框架基础分享_光环大数据培训
光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cnHadoopHadoop 框架基础分享框架基础分享_ _光环大数据培训光环大数据培训已经部署了 Hadoop 的完全分布式集群,我们知道 NameNode 节点的正常运行对于整个 HDFS 系统来说非常重要,如果 NameNode 宕掉了,那么整个HDFS 就要整段垮掉了,所以人类思考,能不能让世界多一点爱:),我们能不能弄个备用的 NameNode,一旦正在使用的 NameNode 原地爆炸了,另一台备用的 NameNode 能立刻代替原先 NameNode 的位置,继续让 HDFS系统正常运行?(同理,ResourceManager 也是可以的。)世界果然充满爱,动物管理员横空出世zookeeper 框架* ZooKeeper这个框架的翻译为动物园管理员,想想其实是有道理的,大数据领域,Hadoop 框架是大象,Hive 框架是蜜蜂(为啥是个大象头哎喂?),Pig 框架是猪,都是人类的好朋友,所以有个动物管理员也不差异。接下来简单介绍一下 zookeeper 框架。光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn* zookeeper 功能:* 统一命名服务(Name Service)* 配置管理(Configuration Management)* 集群管理(Group Membership)* 共享锁(Locks)/同步锁* zookeeper 简述:apache 开源项目,提供分布式集群,属于 Hadoop 底下的一个分支,为分布式应用提供协调服务,官方网站:zookeeper.apache.org,zookeeper 服务器为奇数个,即 2n+1 个服务器,允许有 n 个机器宕机,不影响整个系统的运行。比如:3 台机器,其中有 1 台机器宕机,且存活的 Server 的数目不得少于n+1.,不会影响整个系统运行。 zookeeper 集群会选择出一个 leader 服务器,光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn其他服务器角色是 follower,它使用的 FastLeaderELection 选举算法是类fast paoxs 的算法(有兴趣的可以周边查阅下),投票数量结果过半的服务器选为 leader 服务器。* zookeeper 原理简述当 leader 崩溃或者 leader 失去大多数的 follower,这时候 zookeeper 进入恢复模式,恢复模式需要重新选举出一个新的 leader,让所有的 Server 都恢复到一个正确的状态,系统默认的选举算法为 fast paxos。* zookeeper 的 Fast Leader 选举机制首先介绍几个概念服务器 ID比如有三台服务器,编号分别是 1,2,3。光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn编号越大在选择算法中的权重越大。数据 ID服务器中存放的最大数据 ID.值越大说明数据越新,在选举算法中数据越新权重越大。逻辑时钟或者叫投票的轮数,同一轮投票过程中的逻辑时钟值是相同的。每投完一轮票这个数据就会增加,然后与接收到的其它服务器返回的投票信息中的数值相比,根据不同的值做出不同的判断。选举状态LOOKING,竞选状态。光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cnFOLLOWING,随从状态,同步 leader 状态,参与投票。OBSERVING,观察状态,同步 leader 状态,不参与投票。LEADING,领导者状态。选举消息内容在投票完成后,需要将投票信息发送给集群中的所有服务器,它包含如下内容。服务器 ID数据 ID光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn逻辑时钟(或者理解为选举轮数,从 0 开始递增)选举状态开始投票:1、恢复数据zookeeper 服务器中的每份数据,都有一个对应的 id 值,这个值是依次递增的,越新的数据,对应的 ID 值就越大,所以先把数据恢复到最新。2、广播投票到其他服务器恢复数据到最新之后,每个 zookeeper 服务器发送自己选举的 leader(崭新状态首次投票推选自己),这个协议中包含了以下几部分的数据:光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn* 当前的服务器的 id,即 sid* 当前服务器的最大的数据 id,这个值大的服务器,说明存放了更新的数据.* 当前服务器本次的逻辑时钟的值* 当前机器的选举状态3、接收其他服务器的广播每个服务器将自己的数据(以上 4 个)广播给其他服务器,同时也接收其他服务器广播过来的数据,之后:光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn如果所接收数据中服务器的状态还是在选举阶段(LOOKING 状态),那么首先判断逻辑时钟值,又分为以下三种情况:* 如果发送过来的逻辑时钟大于目前的逻辑时钟,那么说明这次选举更加的新,此时需要更新一下本机的逻辑时钟值,同时将之前收集到的来自其他服务器的选举清空,因为这些数据已经过期了。然后判断是否需要更新当前自己的选举情况。在这里是根据选举 sid 和保存的最大数据 id 来进行判断的,这两种数据之间对这个选举结果的影响的权重关系是:首先看数据 id,数据 id 大者胜出;其次再判断 sid,sid 大者胜出。然后再将自身最新的选举结果广播给其他服务器。* 如果发送过来数据的逻辑时钟小于本机的逻辑时钟,说明对方在一个相对较早的选举进程中,此时只需要发送自己的选举数据即可。* 两边的逻辑时钟相同,此时只需要判断是否需要更新本机的数据,如果更新了再将自己最新的选举结果广播出去就是了。然后再处理两种情况:光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn* 服务器判断是不是已经收集到了所有服务器的选举状态,如果是,那么这台服务器选举的 leader 就定下来了,然后根据选举结果设置自己的角色(FOLLOWING 还是 LEADER),选举结束。* 即使没有收集到所有服务器的选举状态,也可以根据该节点上选择的最新的leader 是不是得到了超过半数以上服务器的支持,如果是,那么当前线程将被阻塞等待一段时间(这个时间在 finalizeWait 定义)看看是不是还会收到当前leader 的数据更优的 leader,如果经过一段时间还没有这个新的 leader 提出来,那么这台服务器最终的 leader 就确定了,否则进行下一次选举。如果所接收服务器不在选举状态,也就是在 FOLLOWING 或者 LEADING 状态做以下两个判断:* 如果逻辑时钟相同,将该数据保存到 recvset,如果所接收服务器宣称自己是leader,那么将判断是不是有半数以上的服务器选举它,如果是则设置选举状态,选举结束。* 否则这是一条与当前逻辑时钟不符合的消息,那么说明在另一个选举过程中已经有了选举结果,于是将该选举结果加入到集合中,再根据集合来判断是否可以结束选举,如果可以也是保存逻辑时钟,设置选举状态,选举结束。原理引用网络上的一张图,如图所示:在此举个例子:假设有 5 台机器服务器 1 启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器 1 的状态一直属于 Looking。光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn服务器 2 启动,给自己投票,同时与之前启动的服务器 1 交换结果,由于服务器 2 的编号大所以服务器 2 胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是 LOOKING。服务器 3 启动,给自己投票,同时与之前启动的服务器 1,2 交换信息,由于服务器 3 的编号最大所以服务器 3 胜出,此时投票数正好大于半数,所以服务器 3 成为 leader,服务器 1,2 成为 follower。服务器 4 启动,给自己投票,同时与之前启动的服务器 1,2,3 交换信息,尽管服务器 4 的编号大,但之前服务器 3 已经胜出,所以服务器 4 只能成为follower。服务器 5 启动,后面的逻辑同服务器 4 成为 follower。zookeeper 安装:* 下载地址传送门:* 解压到 modules 目录中* 修改配置文件(cp -a 命令意为保留原文件属性的情况下,复制文件)复制 conf 目录下的 zoo_sample.cfg 文件并重命名为 zoo.cfg 文件光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn$ cp -a zoo_sample.cfg zoo.cfg,执行后,如图:对文件做如下修改:$ vi zoo.cfgdataDir=/opt/modules/zookeeper-3.4.5/zkData, 如图:创建这个目录:$ mkdir /opt/modules/zookeeper-3.4.5/zkData* 启动 zookeeper单节点启动,切换到 zookeeper 的安装根目录:$ bin/zkServer.sh start查看启动状态:$ bin/zkServer.sh status,如图:* zookeeper 集群的部署集群规划如下:* 修改 zoo.cfgdataDir=/opt/modules/zookeeper-3.4.5/zkData光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura