Hadoop HA架构

1.命名空间

在这里插入图片描述
当001是active,那么读写没问题;但是当001挂了,002变为active,那么是不是还要去修改 代码 脚本为ruozedata002 ?是要修改的,但是想一想 是不是很麻烦?所以引入一个概念:命名空间
注意:命名空间是配置参数 不是进程
dfs.nameservices - the logical name for this new nameservice
从而实现不需要去修改脚本代码,由命名空间路由到active节点。

2.HDFS HA的架构

在这里插入图片描述
以上是最小版的集群,集群角色如下:

ruozedata001ruozedata002ruozedata003
ZooKeeper
NameNode
DataNode
JournalNode
DFSZKFailoverControl
1.Active NN

接收client的rpc请求,同时自己的editlog文件写一条记录。同时发给jn日志集群写一条。也同时接收dn的心跳和块报告。

2.Standby NN

1.同时会接收jn日志集群的这条记录,在自己本身执行一下,使得自己的元数据和active nn的元数据是一致的。这步叫做重演。
2.也同时接收dn的心跳和块报告。也随时等待从standby–>active状态,对外提供服务。

3.Journal Node

1.是nn active standby的同步数据,至少3台,奇数。
2.允许失败 (N - 1) / 2 failures and continue to function normally.
3.为了防止脑裂,JN在某一时刻仅允许一个NN写
JN官网:https://hadoop.apache.org/docs/r2.10.1/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

4.DataNode

同时向两个NN发送心跳和块报告(哪些文件的哪些块)

5.ZKFC进程

1.监控nn的健康状态
2.向zk集群定期发送心跳,使得自己被选举上
3.当被zk集群选举为active时,zkfc进程通过rpc调用nn状态变为active。
4.zkfc的元数据在zookeeper上,当执行zkfc初始化的时候会在zookeeper上生成/hadoop-ha
5.ZK和JN一样,最多只能失败(n-1)/2个

脑裂解决思路

要么重启集群,要么通过hdfs haadmin -transition Toactive辅助指定Standby结合,强制指定哪个为Active/Standby

命令
hdfs haadmin -transition Toactive

3.YARN HA

在这里插入图片描述
以上是最小版的集群,集群角色如下:

ruozedata001ruozedata002ruozedata003
ZooKeeper
ResourceManager
NodeManager
DFSZKFailoverControl(此处是线程)
JobHistroyServer

ResourceManager的zkfc是线程,存在于RM中,HDFS的HA中ZKFC是单独的进程,如果NN挂 ZKFC不受任何影响更加健壮;RM的元数据信息存储在ZK集群的/rmstore目录,HA信息存储在/yarn-leader-election

1.Resource Manager

1.启动时会向zk集群的/yarn-leader-election目录写个lock文件,写成功就标识为Active,否则为Standby。Standby RM会一直监控lock文件是否存在,如果不存在就尝试去创建,争取为active。

2.会接收client客户端的请求,接收和监控NM的资源汇报,负责资源的分配和调度,启动和监控Application master。

2.Node Manager

1.启动container,运行task计算,上报资源和计算情况给Application master。
2.NM发送心跳指向Active的RM发送,因为如果Active挂了,Standby的转为Active后,会从/rmstore里边读取对应的作业的信息,能重新构建作业的内存信息。

3.元数据(rmstore)

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

4.HDFS HA和YARN HA对比

HDFS HAYARN HA
zkfc是进程zkfc是线程
小弟汇报是2个nn小弟汇报是active节点(1个)
老大的状态存储是专门的日志集群利用现成的zk集群
zookeeper存储此相关数据的位置是/hadoop-hazookeeper存储此相关数据的位置是/rmstore、/yarn-leader-election
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值