一、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集群启动的进程顺序