Hadoop HA介绍

article/2025/9/14 10:31:21

1、HA 概述

  1. 所谓HA(High Available),即高可用(7*24小时不中断服务)。
  2. 实现高可用最关键的策略是消除单点故障。Hadoop-HA严格来说应该分成各个组件的HA机制: HDFS的HA和YARN的HA。
  3. Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。
  4. NameNode主要在以下两个方面影响HDFS集群
    1. NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启
    2. NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用

        HDFS HA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备,来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。

2、HDFS-HA 工作机制

通过双NameNode消除单点故障(Active/Standby)

2.1、HDFS-HA工作要点

  1. 元数据管理方式需要改变
    1. 内存中各自保存一份元数据;
    2. Edits日志只有Active状态的NameNode节点可以做写操作;
    3. 两个NameNode都可以读取Edits;
    4. 共享的Edits放在一个共享存储中管理(qjournal和NFS两个主流实现);
  2. 需要一个状态管理功能模块

    实现了一个zkfailover,常驻在每⼀个namenode所在的节点,每一个zkfailover负责监控自己所在 NameNode节点,利用zk进行状态标识,当需要进行状态切换时,由zkfailover来负责切换,切换 时需要防⽌brain split现象的发生(集群中出现两个Active的Namenode)。

  3. 必须保证两个NameNode之间能够ssh无密码登录
  4. 隔离(Fence),即同一时刻仅仅有一个NameNode对外提供服务

2.2、HDFS-HA工作机制

        配置部署HDFS-HA进行自动故障转移。自动故障转移为HDFS部署增加了两个新组件:ZooKeeper和 ZKFailoverController(ZKFC)进程,ZooKeeper是维护少量协调数据,通知客户端这些数据的改变和监视客户端故障的高可用服务。HA的自动故障转移依赖于ZooKeeper的以下功能:

  • 故障检测

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

  • 现役NameNode选择

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

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

  • 健康监测

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

  • ZooKeeper会话管理

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

  • 基于ZooKeeper的选择

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


http://chatgpt.dhexx.cn/article/EBqllCnZ.shtml

相关文章

HAL 库

HAL库 1、初识HAL库 1.1 CMSIS 简介 CMSIS(微控制器软件接口标准):Crotex Microcontroller Software Interface Standard,是由ARM和与其合作的芯片厂商、软件工具厂商,共同制定的标准 ARM官方提供的CMSIS规范架构 …

HIDL(HAL interface definition langguage)

HIDL的相关介绍 HIDL的全称是HAL interface definition language(硬件抽象层接口定义语言),在此之前 Android 有AIDL,架构在Android binder 之上,用来定义Android 基于Binder通信的Client 与Service之间的接口。HIDL…

内部类

一、非静态内部类。 1、修饰符 非静态内部类有四个作用域,所以有四个修饰符。 private : 只能在外部类的内部使用。 protected : 可被与外部类处于同一个包中的其他类和外部类的子类所访问。 省略 : 只能被与外部类处于同一个包中的其他类访问。 public : 可…

python的类作用_python中类的作用是什么

简单来说,类是一种高级抽象,就是一种高级的数据类型,是对象的蓝图,就是用来定义你要用的对象的属性和行为的。 以下是面向对象简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性…

C# 内部类的作用

作用一:限制对类的可访问性 有时候会遇到这样的需求,希望一个类仅能被另一个类(以及其派生类)访问。 代码 class BaseClass {public class PublicNestedClass { }protected class ProtectedNestedClass { }private class Priva…

内部类详解

1.成员内部类 1.样例 class OutClass {class InnerClass {public String SayHi() {return "你好";}} }2.特点 内部类能够无条件的访问外部类的成员变量,外部类要访问内部类成员变量需要使用new。内部类和外部类有相同名称的变量或者是方法,…

Java 静态内部类作用

需要了解2个概念:内部类和静态修饰符static 1)首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。 2)静态都是用来修饰类的内部成员的。…

java内部类的四大作用

一、内部类的作用 我们为什么需要内部类?或者说内部类为啥要存在?其主要原因有如下几点: 内部类方法可以访问该类定义所在作用域中的数据,包括被 private 修饰的私有数据内部类可以对同一包中的其他类隐藏起来内部类可以解决java …

Flink--- 批处理 / 流处理

目录 Flink的主要特点 Flink 和 Spark Streaming 搭建maven工程 FlinkTutorial 添加Scala框架 和 Scala文件夹 Flink-批处理wordcount Flink---流处理wordcount Flink 是一个框架和分布式的处理引擎,用于对无界和有界数据流进行状态计算。 传统数据处理架构 事…

流数据处理利器

流处理 (Stream processing) 是一种计算机编程范式,其允许给定一个数据序列 (流处理数据源),一系列数据操作 (函数) 被应用到流中的每个元素。同时流处理工具可以显著提高程序员的开发效率,允许他们编写有效、干净和简洁的代码。 流数据处理在…

流处理(Stream)和批处理(Batch)

1 流处理和批处理的概念 在程序计算当中,同一节点或者不同节点之间的数据的传递是实时传递还是延迟传递,这就引出了两个概念。其实在非大数据领域这两个概念所起的作用也是很有限,但是在大数据领域,处理上亿级别的时候&#xff0…

管道模式 流处理

(一)介绍 管道这个名字源于自来水厂的原水处理过程。原水要经过管道,一层层地过滤、沉淀、去杂质、消毒,到管道另一端形成纯净水。我们不应该把所有原水的过滤都放在一个管道中去提纯,而应该把处理过程进行划分&#…

Flink流处理API大合集:掌握所有flink流处理技术,看这一篇就够了

大家好,我是百思不得小赵。 创作时间:2022 年 5 月 18 日 博客主页: 🔍点此进入博客主页 —— 新时代的农民工 🙊 —— 换一种思维逻辑去看待这个世界 👀 今天是加入CSDN的第1172天。觉得有帮助麻烦&#x…

Python流处理

转自 :https://www.toutiao.com/a6589000256896107015/?tt_frommobile_qq&utm_campaignclient_share&timestamp1534156143&appnews_article&utm_sourcemobile_qq&iid40708017633&utm_mediumtoutiao_ios&group_id6589000256896107015 F…

Stream流式处理

Stream流的三类方法 获取Stream:流创建一条流水线,并把数据放到流水线上准备。 中间方法:流水线上的操作一次操作完毕之后,还可以继续进行其他操作。 终结方法:一个Stream流只能有一个终结方法是流水线上的最后一个操作。 生成Stream流的…

流数据处理与分析

环境 名称 版本 系统 Ubuntu 18.04.4 LTS 内存 7.5GiB 处理器 Intel Core i7-8565U CPU 1.80GHz *8 图形 Intel UHD Graphics(Whiskey Lake 3*8 GT2) GNOME 3.28.2 操作系统类型 64位 磁盘 251.0 GB Storm 2.1.0 Zookeeper…

流处理系统

文章目录 引言如何发送事件流流处理不可靠的时钟容错总结 引言 清楚数据的类型有助于我们设计一个性能更高,更有针对性的数据系统,比如在线系统,离线系统(批处理)。近实时系统(流处理)等等。比如说批处理系统&#xf…

流处理简介

一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现。比如我们希望对一个包含整数的集合中筛选出所有的偶数,…

【节点流和处理流】

节点流和处理流 基本介绍 节点流可以从特定数据源读取数据,如FileReader、FileWriter处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一…

流数据处理

流数据处理strom 在2011年Storm开源之前,由于Hadoop的火红,整个业界都在喋喋不休地谈论大数据。Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据。但是,Hadoop的缺点也和它的优点同样鲜明——延迟大&#xff0…