Hadoop HA简易剖析

583 阅读2分钟

一、HDFS HA

1、命名空间(dfs.nameservice)

  • 命名空间是配置参数,并不是进程,不需要去修改脚本和代码。

2、HDFS HA架构

Active NameNode(Active NN)

  • 接收client的RPC请求,同时向自己的editlog文件写一条记录,并向JN日志集群写一条。接收DN各个节点的心跳和块位置报告。

Standby NameNode(Standby NN)

  • 重演: 通过JN集群获取Active NN节点上执行过的读写操作,在Standby NN节点上回放执行一遍,以保持两个节点的同步。
  • 进行重演操作,接收DN各个节点的心跳和块位置报告。随时等待被切换为Active状态,对外提供服务。

JournalNode(JN)

  • 是Active NN和Standby NN数据同步的通信通道。
  • 至少部署3台,奇数
  • 最多允许失败(N-1)/2台

DataNode(DN)

  • 同时向两个NN发送心跳和块位置报告。

ZooKeeper(ZK)

  • 协调服务、统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

ZKFC进程

  • 监控NN的健康状态,向ZK集群定期发送心跳,使自己被选举。
  • 当被ZK集群选举为Active时,ZKFC进程通过RPC调用相应的NN节点,使其状态变为Active。

二、Yarn HA

ResourceManager(RM)

  • 启动时向ZK集群的hadoop-ha目录写lock文件,若写入成功就标识当前RM为Active RM,否则为Standby RM。
  • Standby RM会一直监控lock文件是否存在,如果不存在就尝试去创建,争取成为Active RM。
  • Active RM会接收client客户端的请求,接收和监控nm的资源汇报,负责资源的分配和调度,启动和监控Application Master。

NodeManager(NM)

  • 启动Container,运行task计算,上报资源和计算情况给Application Master。

RMStore

  • RM的作业信息是存储在ZK集群的/RMStore位置,Active RM会向这个目录写作业app信息。
  • 当Active RM挂了,另外一个Standby RM成功转为Active状态,就会从读取对应的作业的信息,重新构建作业的内存信息,启动内部服务,开始接收NM心跳,构建集群资源信息,且开始接收Client客户端提交的作业的请求。

三、HDFS HA与Yarn HA比较

ZKFC

  • HDFS HA的ZKFC是进程
  • Yarn HA的ZKFC是线程

主从关系

  • Active NN和Standby NN两个NN都被DN汇报
  • 只有Active RM被NM汇报

状态存储

  • NN状态存储由专门的日志集群JN
  • 利用现成的ZK集群