1.为什么要使用hadoop HA部署
① 当使用非HA部署方式时,只有一个NN(namenode),当该namenode 即整个集群的master宕机时,整个集群将会面临短期内乃至长期无法访问的窘境直到问题解决
②非HA部署方式时,使用的是SNN的时间为一小时checkpoint机制,无法做到灵活切换,即高可用,所以要使用HA方式部署
2.hadoop HA部署整体思路
①部署两个namenode,其中一台为另外一台的备份,为了防止脑裂现象的产生,同一时间只能有一个namenode以active形式被外界访问,另一个namenode为standby状态
②当通过命名空间访问namenode时,会根据配置文件进行轮询请求,直到请求到状态为active的namenode节点
3.hadoop HA 整体架构图
JN集群:
- 共享状态
- 用于active standby节点的数据同步
- 一般部署2n+1个
ZKFC:
选举active机器
- 单独进程
- 监控NN健康状况
- 向ZK集群定期发送心跳,使得自己可以被选举
- 当自己被ZK选举为active的时候,zkfc进程通过RPC协议调用使NN节点的状态变为active,对外提供服务,这个过程是无感知的
ACTIVE NN:
- 操作记录写到自己的editlog
- 同时写JN集群
- 接收DN的心跳和块报告
standby NN:
- 同步接收JN集群的日志
- 显示读取执行log操作(重演),使得自己的元数据和active nn节点保持一致
- 接收DN的心跳和块报告