一、为什么要用HA
在hadoop 2.0.0之前,在hdfs集群中,NameNode是存在单点故障问题的。每个集群只有一个NameNode,如果该机器或者进程不可用,那么集群将无法使用,直到NameNode重新启动或者在单独的机器启动。在企业中也绝对是HA的。
HDFS:NN SNN(checkpoint) DN
NN节点挂了 就不能提供对外服务
所以需要两个NN active standby,任何时候只有1台 active的NN对外,另外一台是standby 做实时备份,随时准备standby--》active状态,对外提供服务那么外界是无感知.
二、如何访问HDFS HA
nn1 active hdfs://nn1:9000/ 挂了
nn2 standby hdfs://nn2:9000/
命名空间:挂载着 nn1 nn2 ,读写操作是直接通过命名空间的操作的
hdfs://nameservice1/
思考题:
以下这三种访问方式有什么不同
hdfs dfs -ls
hdfs dfs -ls /
hdfs dfs -ls hdfs://ip:9000/
第一种访问的当前文件系统的登入用户的家目录,例如:/user/登入的用户/
第二种访问的是当前文件系统的根目录
第三种访问的是指定文件系统的跟目录
三、集群进程分布
HA最少要3台机器
机器名称 | |||||||
---|---|---|---|---|---|---|---|
ruozedata001 | ZK | NN | ZKFC(zookeeperFailoverControl) | JN(JournalNode) | DN | RM | NM |
ruozedata002 | ZK | NN | ZKFC | JN | DN | RM | NM |
ruozedata003 | ZK | NN | DN | NM |
JN:>=3台,2n+1
ZK: 2n+1 投票选举
生产上,如果集群规模<20节点,一般建议配置5台
如果集群规模20~100节点,一般建议配置7/9/11台
如果集群规模>100台,一般建议配置11台
zk 往往会和其他进程部署在同一个机器上,但是如果zk很繁忙(意味着服务器很繁忙),可能导致无法选举,那么建议单独部署zk。
zk 不是越多越好,因为机器越多进行投票选举的时间越长
四、主从架构
master--->slave
1.DN NM部署在同一个机器上 原因是由于数据本地化。
2.大数据生态圈 大部分组件都是主从架构
但是特别注意:hbase读写流程并不经过master进程。
五、HDFS HA架构图
2019-08-18_113754.pngHA使用active NN, standby NN两个节点解决单点问题。两个NN节点通过JN集群,
共享状态,通过ZKFC选举active,监控状态,自动备援。DN会同时向两个NN节点发送心跳。
active nn:
接收client的rpc请求并处理,同时自己editlog写一份,也向JN的共享存储上的editlog写一份。也同时接收DN的block report,block location updates 和 heartbeat。
standby nn:
同样会接受到从JN的editlog上读取并执行这些log操作,使自己的NN的元数据和activenn的元数据是同步的,使用说standby是active nn的一个热备。一旦切换为active状态,就能够立即马上对外提供NN角色的服务。也同时接收DN的block report,block location updates 和 heartbeat。
jn:
用于active nn,standby nn的同步数据,本身由一组的JN节点组成的集群,奇数,3台(CDH),是支持Paxos协议。保证高可用。
ZKFC:
监控NN的健康状态。向ZK集群定期发送心跳 ,让自己被选举,当自己被ZK选举为主时,zkfc进程通过rpc调用让nn转换为active状态
拓展:
结果双写:spark-->hbase(所有数据)+es(对外 两个月的数据 ttl)
数据同步双写:mysql-->habse 设置A线,B线两种同步方案
六、YARN HA架构图
2019-08-18_154538.pngRM:
a.启动时会通过向ZK的/hadoop-ha目录写一个lock文件,写成功则为active,否则standby。
standby RM会一直监控lock文件的是否存在,如果不存在就会尝试去创建,争取为active rm。
b.会接收客户端的任务请求,接收和监控nm的资源的汇报,负责资源的分配与调度,启动和监控 ApplicationMaster(AM)
NM:
节点上的资源的管理,启动container 容器 运行task的计算,上报资源,container情况汇报给RM和任务的处理情况汇报给 ApplicationMaster(AM)
ApplicationMaster(AM)driver : nm机器上的container
单个application(job)的task的管理和调度,并向rm进行资源的申请,
向nm发出 launch container指令,接收NM的task的处理状态信息。
RMstatestore:
a.RM的作业信息存储在ZK的/rmstore下,active RM向这个目录写app(作业)信息
b.当active rm挂了,另外一个standby rm成功转换为active rm后,会从/rmstore目录读取相应的作业信息,
重新构建作业的内存信息。然后启动内部服务,开始接收NM的心跳,构建集群资源的信息,并接收客户端的提交作业的请求等。
ZKFC:
自动故障转移 只作为RM进程的一个线程 而非独立的守护进程来启动
七、HDFS&Yarn HA架构两者区别
1.zkfc一个是进程,一个是线程
2.hdfs ha有独立的数据中间件的集群维护,yarn ha作业调度信息维护在zk里面。
3.HDFS中的DataNode 会向两个NameNode同时发送心跳。Yarn中NodeManager只会向activeRM上报资源
网友评论