内容:在前面搭建和熟悉各组件启动流程下,今天总结下hadoop的HA YEAR架构,同时看看各组件的功能,理清启动顺序,并进行相关组件对比。
*
目录结构:
- 前期搭建规划
- hadoop HA 架构及功能
- hadoop YEAR架构及功能
- 启动/关闭流程总结
- 两架构对比及其它
1、前期搭建规划
2、hadoop HA 架构及功能
HDFS HA: 是为了解决单点故障问题,通过JN集群共享状态,通过ZKFC 选举active,监控状态,自动备援。DN会同时向active standby nn发送心跳。
3、hadoop YEAR架构及功能
4、启动/关闭流程总结
启动流程和架构里从上往下一致:
ZooKeeper -> JournalNode -> NameNode -> DataNode -> ZKFC -> 主 ResourceManager/NodeManager -> 备机ResourceManager-> MapReduce JobHistory
5、两架构对比及其它
两架构对比:1、ZKFC不一样;2、接收心跳方式不一样;3、NN/RM的Active选举方式不一样,主要是因为两组件的功能不一样决定;
另外:
集群启动之后,一个namenode是active状态,来处理client与datanode之间的请求,并把相应的日志文件写到本地中或JN中;
Active NN与Standby NN之间是通过一组JN共享数据(JN一般为奇数个,ZK一般也为奇数个),Active NN会把日志文件、镜像文件写到JN中去,只要JN中有一半写成功,那就表明Active NN向JN中写成功啦,Standby NN就开始从JN中读取数据,来实现与Active NN数据同步,这种方式支持容错,因为Standby NN在启动的时候,会加载镜像文件(fsimage)并周期性的从JN中获取日志文件来保持与Active NN同步
为了实现Standby NN在Active NN挂掉之后,能迅速的再提供服务,需要DN不仅需要向Active NN汇报,同时还要向Standby NN汇报,这样就使得Standby NN能保存数据块在DN上的位置信息,因为在NameNode在启动过程中最费时工作,就是处理所有DN上的数据块的信息
为了实现Active NN高热备,增加了FailoverController和ZK,FailoverController通过Heartbeat的方式与ZK通信,通过ZK来选举,一旦Active NN挂掉,就选取另一个FailoverController作为active状态,然后FailoverController通过rpc,让standby NN转变为Active NN
FailoverController一方面监控NN的状态信息,一方面还向ZK定时发送心跳,使自己被选举。当自己被选为主(Active)的时候,就会通过rpc使相应NN转变Active状态