Hadoop-2.7.0中HDFS NameNode HA实现综述

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 一、原理      HDFS中NameNode等的HA是基于ZooKeeper实现的。它应用了ZooKeeper集群的如下功能或特性:      1、只要半数以上节点还存活,就继续能对外提供服务;      2、ZooKeeper通过Paxos算法提供了leader选举功能,其它follo...

一、原理

      HDFS中NameNode等的HA是基于ZooKeeper实现的。它应用了ZooKeeper集群的如下功能或特性:

      1、只要半数以上节点还存活,就继续能对外提供服务;

      2、ZooKeeper通过Paxos算法提供了leader选举功能,其它follower learn leader;

      3、ZooKeeper提供了watcher机制,只要ZooKeeper上znode增减,或内容发生变化,或其子znode有增减,客户端都可以通过注册的watcher获得通知;

      4、ZooKeeper提供了持久化节点和临时节点,尤其是临时节点EPHEMERAL,其在ZooKeeper客户端连接断掉后,会自动删除。

      正是基于ZooKeeper的上述特性,HDFS的NameNode实现了HA,NameNode的状态大致可分为Active和Standby两种,NameNode竞争在ZooKeeper指定路径上注册临时节点,将自己的host、port、nameserviceId、namenodeId等数据写入节点,哪个NameNode争先写入成功,哪个就成为Active NameNode。然后,会有后台工作线程周期性检查NameNode状态,并在一定条件下(比如Active NameNode节点发生故障等)发生竞选,由NameNode再去竞争,实现故障转移和状态切换。

      上述就是HDFS NameNode HA实现的大体思路。而HDFS NameNode HA的架构和实现细节是怎么样的?下面我来介绍下。

二、实现

      首先上一张Hadoop HDFS NameNode HA的设计图,如下:


        简单描述下这张图:

        首先,NameNode(NN)、DataNode(DN)均是HDFS中的组件或节点,NN有两个,分为Active和Standby状态,DN有多个,DN周期性向Active和Standby做数据块汇报;

        其次,处于中间位置的,实现HDFS NameNode HA最关键的组件是FailoverController,它是运行在NameNode节点上的守护进程,将Active NN节点的信息通过竞争的方式注册到ZooKeeper上,并实现以下三个基本功能:

            1)有一个后台线程,周期性的检查NameNode的健康状况,即粗的红色拐弯箭头的Monitor Health,触发状态选举等;

            2)定期保持与ZooKeeper的心跳,完成Leader选举(即Active节点选举)和检查Active NN ZNode节点状态等工作,即最上面与ZooKeeper交互的蓝色箭头;

            3)向NameNode发送一些命令,完成状态切换。

        所以,NN HA的主体思路就是:

        1、NN竞争在ZooKeeper上注册,即create一个临时节点,写入NN的host、port、nameserviceId、namenodeI等信息,那个写入成功,那个就是Active状态;

        2、注册成功后,通过create后的watcher机制,FailoverController会发送命令给各个NN,让其确定各自状态和职责;

        3、Monitor Health会周期性连接NN,检查NN状态,并由可能触发重新选举,即重复1-2;

        4、FailoverController会与ZooKeeper保持心跳,注册的临时节点消失后,也会触发重新选举。


        那么,HDFS是如何实现NameNode HA的呢?对应上图,Hadoop中实现了以下模型:


        上图的三个关键组件即是:

        1、DFSZKFailoverController(继承自抽象类ZKFailoverController):ZKFC,故障转移控制器,守护进程,负责总体故障转移和命令发布;

        2、ActiveStandbyElector:Active、Standby选举器,实现选举功能;

        3、HealthMonitor:健康监视器,实现NN状态的定时监控。


        上述组件各自是如何实现的,请关注后续文章。


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
3月前
|
分布式计算 资源调度 Hadoop
【赵渝强老师】基于ZooKeeper实现Hadoop HA
本文介绍了如何在4个节点(bigdata112、bigdata113、bigdata114和bigdata115)上部署HDFS高可用(HA)架构,并同时部署Yarn的HA。详细步骤包括环境变量设置、配置文件修改、ZooKeeper集群启动、JournalNode启动、HDFS格式化、ZooKeeper格式化以及启动Hadoop集群等。最后通过jps命令检查各节点上的后台进程,确保部署成功。
161 0
|
4月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
242 6
|
4月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
165 0
|
4月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
71 0
|
4月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
93 0
|
4月前
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
93 3
|
4月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
79 2
|
4月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
77 4
|
2月前
|
存储 分布式计算 大数据
Flume+Hadoop:打造你的大数据处理流水线
本文介绍了如何使用Apache Flume采集日志数据并上传至Hadoop分布式文件系统(HDFS)。Flume是一个高可用、可靠的分布式系统,适用于大规模日志数据的采集和传输。文章详细描述了Flume的安装、配置及启动过程,并通过具体示例展示了如何将本地日志数据实时传输到HDFS中。同时,还提供了验证步骤,确保数据成功上传。最后,补充说明了使用文件模式作为channel以避免数据丢失的方法。
89 4
|
3月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
200 2

热门文章

最新文章

相关实验场景

更多