HDFS优化
HDFS优化
1.HDFS存在的问题
-
NameNode:单点故障,难以运用与在线场景
-
NameNode:压力过大,且内存受限,影响系统扩展性.
2.解决问题HA
- ActionNameNode(主节点)
- 接受客户端请求,发送指令
- 工作
- 保存元数据信息:关机之后存放在磁盘里…fsimage
- 保存文件与block的映射
- 保存block与DN的映射:并不会持久化到磁盘里,需要开机启动汇报
- 启动时: 接受汇报
- 运行时: 保存心跳
- StandbyNameNode
- 防止出现单点故障
- 工作
- 理论上与主节点相同 :切换主备时备用节点的内存状态和主节点的内存状态几乎一致
- 备节点不发送任何指令 :脑裂
- 专门的工作
- 合并fsimage和Edits
- 当取回的日志达到阈值,开始合并
- JournalNode
- 共享日志文件
- 当主节点产生日志的时候就会发送给QJM集群
- 每个节点都会接受到日志
- 为了保证效率:只要超过半数就认为这个数据有效
- 备NameNode每隔一段时间就会去QJM取回对应的日志
- FailoverController
- 监控ANN和SNN的健康状态
- 对应的线程为ZKFC
- 当状态发生变化
- Zookeeper
- 执行投票
- 监听ZKFC
- DateNode
- 保存数据
- 同时与ANN和SNN保持心跳
- 同时向两个NameNode发送汇报
3.Federation (联邦)
- 水平上对集群进行扩展
- namenode.namespace管理不同的路径
- 所有的namenode还是共享所有的DN
pace管理不同的路径
- 所有的namenode还是共享所有的DN