Hadoop HA

  • HDFS HA
  • NameNode与命名空间
  • Zookeeper
  • ZKFC
  • JounalNode
  • HDFS HA工作流程图及说明
  • 注意点
  • YARN HA
  • 注意点



Hadoop HA架构即 Hadoop 高可用架构,7*24小时不中断服务。实现高可用最关键的是消除单点故障。Hadoop HA 严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA。

HDFS HA

NameNode与命名空间

HDFS是通过双namenode消除单点故障(实时的,任何时刻只有1台active对外,另外一台是standby 实时备份随时准备着从standby切换active状态,对外服务)。

而两个NameNode之间的切换实际上是无感知的,这就需要命名空间(命名空间并不是进程)。两个NameNode机器是挂在命名空间下的,这是在core-site.xml和hdfs-site.xml下配置的。

命名空间轮询两台机器,如果是standby,换另一台。

ha架构缺点 ha管理架构_HADOOP

Zookeeper

ZK集群是用来做选举的,在HDFS HA架构中用来确定哪个NameNode做active,哪个做standby。
ZK集群部署的时候都是2n+1台机器,因为做选举需要奇数台机器。20台节点:部署5台zk;20~100台:部署7/9/11。
但是:不是说ZK节点越多越好,ZK节点越多,选举的过程比较慢,对外提供的服务越慢 。
几百台节点, zk部署的机器上就它一个进程,别的进程会消耗资源(包括内存,cpu,文件数,进程数)。zk是最底层的,他是掌握命门的。如果ZK节点繁忙,standby切换不到active,就无法为外面提供服务。

ZKFC

全称为zookeeperfailovercontrol,在HDFS中为进程。
一般与NN节点放在同一台机器。
用于监控NN监控健康状态
向zk集群定期发送心跳,使得自己可以被选举;
当自己被zk选举为active的时候,zkfc进程通过RPC协议调用使NN节点的状态变为active,并对外提供实时服务,这个切换的过程是无感知的。

JounalNode

用于active nn 和standby nn节点的同步数据

由于在两个NameNode节点的内存中各自保存一份元数据,而整个系统的Edits日志只能有一份,只有Active状态的namenode节点可以做写操作

两个namenode都可以读取edits

共享的edits放在一个共享存储中管理,JN集群。

ha架构缺点 ha管理架构_ha架构缺点_02

HDFS HA工作流程图及说明

当一个请求过来的时候,client先到nameservice,

通过nameservice可以找到active NameNode,到底是读还是写,告诉active NameNode

读写的记录传给jounalnode集群,再传给stand by NameNode,进行一个重演的过程。

DN会同时向NN1 NN2发送心跳及块报告

ha架构缺点 ha管理架构_HDFS_03

注意点

HA是为了解决单点问题
通过JN集群共享状态
通过ZKFC选举active
监控状态,自动备援。
HDFS上 zkfc 是单独的进程,Yarn上的zkfc 为线程
DN: 同时向NN1 NN2发送心跳和块报告。
ACTIVE NN: 操作记录写到自己的editlog,同时写JN集群
并且接收DN的心跳和块报告
STANDBY NN: 同时接收JN集群的日志,显示读取执行log操作(重演),使得自己的元数据和active nn节点保持一致。
也接收DN的心跳和块报告

YARN HA

ha架构缺点 ha管理架构_ha架构缺点_04


ha架构缺点 ha管理架构_HDFS_05


作业的运行状态以及请求的记录都存储在RMStateStore中。

RMStateStore:

存储在zk的/rmstore目录下。

1.active RM会向这个目录写APP信息

2.当active RM挂了,另外一个standby RM通过

ZKFC选举成功为active,会从/rmstore读取相应的作业信息。

重新构建作业的内存信息,启动内部的服务,

开始接收NM的心跳,构建集群的资源信息,并且接收客户端的作业提交请求。

RM:
ZKFC为RM中的一个线程
1.启动时候会向ZK的/rmstore目录写lock文件,写成功就为active,否则standby.
rm节点的zkfc线程会一直监控这个lock文件是否存在,假如存在,就为active,否则为standby.
2.接收client的请求,接收和监控NM的资源状况的汇报,负载资源的分配和调度。
3.启动和监控APPMASTER on NM节点的container。
applicationsmanager RM
applicationmaster NM container容器里 作业的主程序

NM:
节点资源的管理 启动容器运行task计算 上报资源

注意点

ZKFC在 YARN HA上为线程
/rmstore 是在 ZK节点上的