HDFS HA
架构图如下:
HDFS HA使用Active NameNode, Standby NameNode 两个结点解决单点问题,两个节点通过JounalNode共享状态,通过ZKFC 选举Active , 监控状态,自动备援。 DN会同时向ActiveNN和StandbyNN发送心跳。
Active NameNode:
接受client的RPC请求并处理,同时写自己的Edit log和共享存储上的Edit log, 接收DataNode的Block report, block location updates和heartbeatStandby NameNode:
同样会接到来自DataNode的Block report, block location updates和heartbeat。同时会从共享存储的Edit log上读取并执行这些log操作,使得自己的NameNode中的元数据(Namespcae information + Block locations map) 都是和Active NameNode中的元数据是同步的。所以说Standby模式的NameNode是一个热备(Hot Standby NameNode), 一旦切换成Active模式,马上就可以提供NameNode服务JounalNode:
用于Active NameNode , Standby NameNode 同步数据,本身由一组JounnalNode结点组成,该组结点基数
个,支持Paxos协议,保证高可用,是CDH5唯一支持的共享方式(相对于CDH4 促在NFS共享方式)ZKFC(单独进程):
a. 监控NN的健康状态
b. 向ZK定期发送心跳,使自己可以被选举, 当自己被ZK选为主时, active FailoverController通过RPC调用使相应的NN转换为active
c.自动备援
YARN HA
架构图如下:
ResourceManager(RM):
a. 启动的时候会通过向ZK的/hadoop-ha目录下写一个Lock文件,写成功则成为Active,否则为Standby, Standby RM会一直监控Lock文件是否存在,如果不存在则会试图去创建,即争取成为Active RM。
b. 接收客户端任务请求,接收和监控NodeManager(NM)的资源情况汇报,负责资源的分配与调度,启动和监控ApplicationMaster(AM)。NodeManager:
节点上的资源管理,启动Container运行task计算,上报资源、 container情况汇报给RM和任务处理情况汇报给AM。ApplicationMaster:
单个Application(Job)的task管理和调度,向RM进行资源的申请,向NM发出launch Container指令,接收NM的task处理状态信息。RMStateStore:
a.RM 的作业信息存储在ZK的/rmstore下, Active RM向这个目录写App信息。
b.当Active RM挂掉,另外一个Standby RM成功转换为Active RM后,会从/rmstore读取相应的作业信息,重新构建作业
的内存信息。然后启动内部服务,开始接收NM的心跳,构建集群资源信息,并接收客户端提交作业的请求等。
5.ZKFC(只作为RM中一个线程而非独立的守护进程来启动):自动故障转移扫描二维码关注公众号,回复: 1035896 查看本文章