Hadoop的HDFS高可用方案

一、Hadoop高可用简介

Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用,两者的实现基本类似,但 HDFSNameNode 对数据存储及其一致性的要求比 YARN ResourceManger 高得多,所以它的实现也更加复杂

1、HDFS系统高可用简介
在这里插入图片描述
HDFS高可用的核心:NameNode高可用,部署多个NameNode,同时实现数据的同步和故障切换

HDFS 高可用架构主要由以下组件所构成:

Active NameNode 和 Standby NameNode】:两台 NameNode 形成互备,一台处于 Active 状态,为主NameNode,另外一台处于 Standby 状态,为备 NameNode,只有主 NameNode 才能对外提供读写服务。

主备切换控制器 ZKFailoverController】:ZKFailoverController 作为独立的进程运行,对 NameNode 的主备切换进行总体控制。ZKFailoverController 能及时检测到 NameNode 的健康状况,在主 NameNode 故障时借助 Zookeeper 实现自动的主备选举和切换,当然 NameNode 目前也支持不依赖于 Zookeeper 的手动主备切换。

Zookeeper 集群:】为主备切换控制器提供主备选举支持。

共享存储系统:】共享存储系统是实现 NameNode 的高可用最为关键的部分,共享存储系统保存了NameNode 在运行过程中所产生的 HDFS 的元数据。主 NameNode 和 NameNode 通过共享存储系统实现元数据同步。在进行主备切换的时候,新的主 NameNode 在确认元数据完全同步之后才能继续对外提供服务。

DataNode 节点:】除了通过共享存储系统共享 HDFS 的元数据信息之外,主 NameNode 和备 NameNode还需要共享 HDFS 的数据块和 DataNode 之间的映射关系。DataNode 会同时向主 NameNode 和备NameNode 上报数据块的位置信息。

二、HDFS的NameNode高可用方案实现

目前主流方式:基于 QJM 的共享存储系统的数据同步机制分析目前 Hadoop 支持使用 Quorum Journal Manager (QJM) 或 Network File System (NFS) 作为共享的存储系统,这里以 QJM 集群为例进行说明:Active NameNode 首先把 EditLog 提交到 JournalNode 集群,然后 StandbyNameNode 再从 JournalNode 集群定时同步 EditLog,当 Active NameNode 宕机后, Standby NameNode 在确认元数据完全同步之后就可以对外提供服务

JournalNode 集群写入 EditLog 是遵循 “过半写入则成功” 的策略,所以你至少要有 3 个JournalNode 节点,当然你也可以继续增加节点数量,但是应该保证节点总数是奇数。同时如果有 2N+1 台JournalNode,那么根据过半写的原则,最多可以容忍有 N 台 JournalNode 节点挂掉

在这里插入图片描述
1、 NameNode 主备切换
NameNode 实现主备切换的流程下图所示:

在这里插入图片描述
2、具体流程:
(1)、HealthMonitor 初始化完成之后会启动内部的线程来定时调用对应 NameNode 的 HAServiceProtocol RPC接口的方法,对 NameNode 的健康状态进行检测

(2)、 HealthMonitor 如果检测到 NameNode 的健康状态发生变化,会回调 ZKFailoverController 注册的相应方法进行处理。

(3)、 如果 ZKFailoverController 判断需要进行主备切换,会首先使用 ActiveStandbyElector 来进行自动的主备选举。

(4)、ActiveStandbyElector 与 Zookeeper 进行交互完成自动的主备选举。5. ActiveStandbyElector 在主备选举完成后,会回调ZKFailoverController 的相应方法来通知当前的NameNode 成为主 NameNode 或备 NameNode。

(5)、 ZKFailoverController 调用对应 NameNode 的 HAServiceProtocol RPC 接口的方法将 NameNode 转换为Active 状态或 Standby 状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/140820.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp 离线打包 plus.runtime.install 安装页面不弹起

uniapp 离线打包 plus.runtime.install 安装页面不弹起 updateVersion(webview : any, eventTitle : string, eventContent : string) {const loading plus.nativeUI.showWaiting(准备下载);var dtask plus.downloader.createDownload(eventContent,{method: GET,timeout: 5…

Linux:文本搜索命令grep

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html grep是类Unix系统中用于搜索并打印文件中符合某种模式(pattern)的行。grep命令的的基本语法如下所示: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [F…

无需root,删除安卓内置应用

今天在家里反到一台比较老的安卓手机,直接恢复出厂设置,开机后一堆自带的应用,卡的一匹,于是就想办法把内置软件卸载掉。 1、手机开启开发者模式,打开usb调试。 2、手机与安卓连接,然后执行adb devices&a…

Minecraft 1.20.x Forge模组开发 06.建筑生成

我们本次尝试在主世界生成一个自定义的建筑。 效果展示 效果展示 效果展示 由于版本更新缘故,1.20的建筑生成将不涉及任何Java包的代码编写,只需要在数据包中对建筑生成进行自定义。 1.首先我们要使用游戏中的结构方块制作一个建筑,结构方块使用教程参考1.16.5自定义建筑生…

机器学习——pca降维/交叉验证/网格交叉验证

1、pca降维:目的是提升模型训练速度 定义: 使用方法:给训练数据或者测试数据进行降维处理 给训练数据降维 给测试数据降维:这里1就要用transform,而不是fit_transform,因为之前训练数据降维时特征已经确定…

JimuReport积木报表 v1.6.2 版本正式发布—开源免费的低代码报表

项目介绍 一款免费的数据可视化报表,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报…

基于SpringBoot的墙绘产品展示交易平台设计与实现

目录 前言 一、技术栈 二、系统功能介绍 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本墙绘产…

IMX6ULL ARM Linux开发板SD卡启动,SD卡的分区与分区格式化创建

一、确定TF卡挂载到ubuntu上的设备名称及分区情况 1. 在ubuntu不接入TF卡的情况下, 使用df -lh /dev/sd*命令查看当前"/dev/sd开头"的设备。 ##输入df -lh /dev/sd*命令,敲回车键 ~$ df -lh /dev/sd* 2.将TF卡接入到ubuntu,再次使…

使用Kalibr工具线对相机+IMU离线标定

传感器标定的准确后面做算法才会更准确,所以对Kalibr进行学习。 一、Kalibr编译 1、下载kalibr包 GitHub下载地址 2、 解压后放到/catkin_ws/src文件夹下 重新命令文件夹为kalibr 3、 安装依赖库 sudo apt-get install python-setuptools python-rosinstall…

你写过的最蠢的代码是?

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

驱动开发练习,platform驱动模型的使用

一.总线模型介绍 linux中将一个挂载在总线上的驱动的驱动模型分为三部分:device、driver和bus; device部分:用来保存设备信息对象,在内核中一个klist_device链表中进行管理; driver部分:用来保存驱动信息对…

爬虫 — 验证码反爬

目录 一、超级鹰二、图片验证模拟登录1、页面分析1.1、模拟用户正常登录流程1.2、识别图片里面的文字 2、代码实现 三、滑块模拟登录1、页面分析2、代码实现(通过对比像素获取缺口位置) 四、openCV1、简介2、代码3、案例 五、selenium 反爬六、百度智能云…

云计算与大数据——部署Hadoop集群并运行MapReduce集群(超级详细!)

云计算与大数据——部署Hadoop集群并运行MapReduce集群(超级详细!) Linux搭建Hadoop集群(CentOS7hadoop3.2.0JDK1.8Mapreduce完全分布式集群) 本文章所用到的版本号: CentOS7 Hadoop3.2.0 JDK1.8 基本概念及重要性 很多小伙伴部署集群用hadoop用mapr…

通讯录的实现(详解)

本篇博客将为大家带来通讯录的实现!!! 目录 通讯录的基本介绍: 通讯录的实现过程: 1.设计通讯录的目录 2.基础菜单的实现: 3.定义人的信息 4.定义通讯录的信息 5.创建通讯录并且初始化 6.添加联系人…

面试问题之如何解释微服务

这次的面试还是感觉非常愉快,没有那么憋屈,问的问题也非常有意思。 问题 假设现在有一个人完全不懂微服务,你能和对方解释下什么是微服务吗? 面试回答 这个问题如果要完全回答好,感觉不是那么容易。 什么是微服务 …

基于springboot高校场馆预订系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

JAXB(Java Architecture for XML Binding)下载、使用

简介 JAXB(Java Architecture for XML Binding)就是XML数据绑定的java架构。JAXB可以根据XML Schema生成java类,也能根据java类生成XML Schema,XML数据绑定指定了XML请求和XML响应如何映射成java对象。 JAXB提供了API和工具&…

笔记 | 非素数个数(朴素筛查 || 埃式筛查法)

非素数个数 题目描述朴素筛查方法题解 题目描述 求a-b之间的非素数个数 特别的&#xff0c;1也算作素数&#xff0c;区间是[a, b]。 输入输出格式 输入描述: 多组测试数据。 输入两个正整数数a,b&#xff0c;其中a<b<10^7。 输出描述: 输出答案。 输入输出样例 输入样例…

浅谈SpringMVC的请求流程

目录标题 浅谈SpringMVC的请求流程SpringMVC的介绍SpringMVC的逻辑概念运行图解知识总结 浅谈SpringMVC的请求流程 对于SpringMVC而言重点是了解它的底层运行逻辑&#xff0c;从而可以根据其逻辑来进行实际业务的操作或者是利用原理增强业务的功能性&#xff0c;最终达到项目预…