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,换另一台。
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集群。
HDFS HA工作流程图及说明
当一个请求过来的时候,client先到nameservice,
通过nameservice可以找到active NameNode,到底是读还是写,告诉active NameNode
读写的记录传给jounalnode集群,再传给stand by NameNode,进行一个重演的过程。
DN会同时向NN1 NN2发送心跳及块报告
注意点
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
作业的运行状态以及请求的记录都存储在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节点上的