【完全分布式Hadoop】(七)HDFS高可用、Yarn高可用介绍以及集群规划

Hadoop admin 2年前 (2018-10-27) 127次浏览 0个评论 扫描二维码

一、HDFS HA

1.1 HDFS HA架构


HA是为了解决单点问题,通过JournalNode集群共享状态,通过ZKFC 选举active,监控状态,自动备援。
DN会同时向active NN和 standby NN发送心跳。

流程:
当我们在Client使用hdfs进行上传、下载、删除、创建时,
active NN会将操作日志写入JN,standby NN从JN中取出操作日志进行数据同步
ZKFC(ZookeeperFailoverController)监控NN的状态,当active NN挂掉之后,zkfc监控到状态后通知ZK,ZK启动选举机制,选择standby NN,将其切换成active NN对外提供服务

1.2 各个组件功能

1)ActiveNN:

操作记录写到自己的editlog;
同时JN集群也会写一份;
接收 DN的心跳和blockreport

2)StandbyNN:

接收JN集群的日志,
先是读取执行log操作(重演),使得自己的元数据和activenn节点保持一致;
接收 DN的心跳和blockreport;

3)JounalNode:

用于 active standby nn节点的同步数据,
部署是2n+1个(3个/5个-->7个)

4)ZKFC:

单独的进程
监控NN的健康状态
向ZK定期发送心跳,使自己可以被选举;当自己被ZK选举为主的时候,
zkfc进程通过RPC调用使NN的状态变为active,对外提供实时服务,无感知。

1.3 学习集群/生产集群 HDFS组件规划

hostname NN ZKFC JN ZK DN
hadoop000 1 1 1 1
hadoop001 1 1 1 1
hadoop002 1 1 1
hadoop003-hadoop009 1

那么生产上是否需要将ZK单独列出来:
这个问题具体需要看数据量以及机器的配置,如:
48core 256G ZK 不单独 需要DN NM等等
4core 8G ZK 单独

二、Yarn HA

1.1 Yarn HA架构

1.2 各个组件功能

1)ZKFC: 线程

只作为RM进程的一个线程而非独立的守护进程来独立存在

2)RMStateStore:

a.RM把job信息存在在ZK的/rmstore下,activeRM会向这个目录写app信息
b.当active RM挂了,另外一个standby RM通过zkfc选举成功为active,会从/rmstore读取相应的作业信息。
重新构建作业的内存信息,启动内部服务,开始接收NM的心跳,构建集群的资源信息,并且接收客户端的作业提交请求。

3)RM:

a.启动时候的会向ZK的目录?写个lock文件,写成功的话,就为active,否则为standby。
然后standby rm节点会一直监控这个lock文件是否存在,假如不存在,就试图创建,假如成功就为active。
b.接收client的请求。接收和监控NM的资源状况汇报,负则资源的分配和调度。
c.启动和监控ApplicationMaster(AM) on NM的container

ApplicationsManager RM
ApplicationMaster JOB的老大 spark driver NM的container

4)NM: 节点的资源管理

启动container运行task计算
上报资源
汇报task进度给AM ApplicationMaster

三、两者架构的区别

1.hdfs zkfc单独进程|yarn zkfc RM中的线程
2.hdfs:DN向active NN和standby NN发送心跳,汇报blockreport | yarn NM只向active RM汇报资源信息

hdfs ha集群启动的进程顺序


codeobj , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:【完全分布式Hadoop】(七)HDFS高可用、Yarn高可用介绍以及集群规划
喜欢 (0)
[a37free@163.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址