IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop HA 高可用 -> 正文阅读

[大数据]Hadoop HA 高可用

HA简介

HA,即高可用(7*24 小时不中断服务)。实现高可用最关键的策略是消除单点故障。HA 严格来说应该分成各个组件的 HA机制:HDFS 的 HA 和 YARN 的 HA。

HDFS HA简介

在Hadoop2.0版本之前,HDFS集群中一旦NameNode节点所在的机器发生意外,如宕机,集群将无法使用,直到管理员重启。或者NameNode节点的机器需要升级,包括软件、硬件升级,此时集群也将无法使用。

HDFS HA就是为了解决上述问题。他可以在同一个集群中运行两个NameNode,其中一个处于活动那个状态(active),另一个处于备用状态(standby),且只有活动状态的NameNode可以对外提供读写服务。当活动状态的NameNode崩溃时,HDFS集群可以快速切换到备用的NameNode,这样也就实现了故障转移功能,保证了高可用。

HDFS HA架构原理

为了能够实现实时无缝的进行故障切换,需要让备用NameNode的状态保持与活动NameNode同步,即元数据信息同步。

因此,两个NameNode都需要一组名为JournalNode的独立守护进程进行通信。当活动状态的NameNode的元数据有任何修改时,会将修改记录持久地记录到大多数的JournalNode中,备用NameNode不断监视JournalNode并读取变更信息,以便将变化应用于自己的命名空间。

这种实现方式称为QJM(Qurom Journal Manager),使用2N+1台JornalNode存储元数据信息,当活动NameNode向QJM写入信息时,只要多数(≥N+1)JornalNode返回成功,即可认为该次数据写入成功,以此保证数据高可用性。

QJM集群最多容忍N台计算机宕机,多于N台则写数据失败。此外,还需要备用NameNode拥有关于集群中块位置的最新信息。DataNode配置两个NameNode的位置,并将块位置信息和心跳发送到这两个位置。

HDFS自动故障转移

虽然系统配备了两个NameNode,但即使活动NameNode出现故障,系统也不会自动触发从活动NameNode切换到备用NameNode的故障转移。

要实现故障自动转移,还需要添加两个组件:ZooKeeper和ZKFailoverController(ZKFC)。

ZooKeeper

主要是为了故障检测和NameNode选举。

1.故障检测:集群中的每个NameNode在ZooKeeper中维护了一个持久会话,如果机器崩溃,ZooKeeper 中的会话将终止,ZooKeeper 通知另一个 NameNode 需要触发故障转移。

2.NameNode选举:ZooKeeper提供了一个简单的机制用于唯一的选择一个节点为 active 状态。如果目前现役 NameNode 崩溃,另一个节点可能从 ZooKeeper 获得特殊的排外锁以表明它应该成为现役 NameNode。

ZKFailoverController(ZKFC)进程

ZKFC是自动故障转移中的另一个新组件,是ZooKeeper的客户端,也监视和管理NameNode 的状态。每个运行 NameNode 的主机也运行了一个ZKFC进程,ZKFC负责。

1.健康监测:ZKFC使用一个健康检查命令定期地ping与之在相同主机的NameNode,只要该NameNode及时地回复健康状态,ZKFC认为该节点是健康的。如果该节点崩溃,冻结或进入不健康状态,健康监测器标识该节点为非健康的。

2.ZooKeeper会话管理:当本地NameNode是健康的,ZKFC保持一个在ZooKeeper中打开的会话。如果本地NameNode处于active状态,ZKFC也保持一个特殊的znode锁,该锁使用了ZooKeeper对短暂节点的支持,如果会话终止,锁节点将自动删除。

3.基于ZooKeeper的选择:如果本地NameNode是健康的,且ZKFC发现没有其它的节点当前持有znode锁,它将为自己获取该锁。如果成功,则它已经赢得了选择,并负责运行故障转移进程以使它的本地NameNode为Active。故障转移进程与前面描述的手动故障转移相似,首先如果必要保护之前的现役NameNode,然后本地NameNode转换为Active状态。

YARN HA简介

在Hadoop的YARN集群中,ResourceManager负责跟踪集群中的资源,以及调度应用程序(例如MapReduce作业)。在Hadoop 2.4之前,Hadoop集群只有一个ResourceManager,当ResourceManager出现故障,将影响整个集群。YARN HA增加了冗余,即一个活动/备用ResourceManager对,以便可以进行故障转移。

YARN HA架构原理

与HDFS HA类似,同一个时间只有一个ResourceManager处于活动状态,当不启用自动故障转移时,必须手动将其中一个ResourceManager转换为活动状态。可以结合ZooKeeper实现自动故障转移,当活动ResourceManager无响应或故障时,另一个ResourceManager自动被ZooKeeper选为活动ResourceManager。与HDFS HA不同的是,ResourceManager中的ZKFC只作为ResourceManager的一个线程,而不是一个独立的进程。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:15:32  更:2022-09-25 23:15:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:16:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码