hdfs 架构
hdfs 不采用ha架构,会有nn snn,snn会每隔1h,checkpoint一次,但是在1个小时之中挂了的话,那在这几间的时间的数据会丢失
为了保证高可用生产环境需要hdfs ha架构
架构图如下
首先ha架构下会有 2个NN节点:
active:(对外提供服务)并将faimage,editlog读写请求记录写入JN节点,并接受DN的心跳检测,跟块报告(绿线),
standby:(实时备份)实时读取JN的文件,将主节点的操作记录自身重演一次让自己的元数据跟主机点保持一致,并一样接受DN的心跳检测跟块报告(红色)。
因为文件块的映射关系是存在内存里的,不是存在磁盘上的,因此datanodes必须向两个namenodes同时汇报自己的存储情况。
JounalNode: 采用QJM分布式日志存储共享状态的JN一般设置2n+1台,主要负责active standby的数据同步,只要日志成功写入半数以上就会返回成功,standby读取时会随机找一台读取,任意时刻只能有一个节点写防止脑裂,另一个节点读。
zkfc:(zookeeperfailovercontrol )实时监控NN节点的健康状态,并定期想zk发送心跳,让自己可以被选举,它是一个单独的进程,当其中一个zkfc被zk选举为active时,zkfc进程会通过rpc协议调用让NN节点变为active
ha环境搭建 节点部署如下
hadoop001:ZK NN ZKFC JN DN
hadoop002:ZK NN ZKFC JN DN
hadoop003:ZK JN DN
注意,zkfc nn必须在同一个节点上
yarn 架构图
ResourceManager(RM):
1. 启动的时候会通过向ZK的目录下写一个Lock文件,写成功则成为Active,否则为Standby,Standby RM会一直监控Lock文件是否存在,如果不存在则会试图去创建,即争取成为Active RM,如果存在那还是Standby。
2.接收客户端任务请求,接收和监控NodeManager(NM)的资源情况汇报,负责资源的分配与调度,启动和监控ApplicationMaster(AM)。
RMStateStore:
a.RM 的作业信息存储在ZK的/rmstore下,Active RM向这个目录写App信息。
b.当Active RM挂掉,另外一个Standby RM成功转换为Active RM后,会从/rmstore读取相应的作业信息,重新构建作业的内存信息。然后启动内部服务,开始接收NM的心跳,构建集群资源信息,并接收客户端提交作业的请求等。