1 HA机制

NameNode维护了HDFS所有的元数据信息,当该节点所在服务器宕机或服务不可用时,整个HDFS都将处于不可用状态,那么怎么才能避免这个NameNode节点宕机呢?一个容易想到的解决方案是部署两台NameNode节点,形成主备模式(active/standby模式),这样一旦active节点宕机,standby节点立即切换到active模式。事实上HA机制就是采取的这种方案。但实现该机制,需要解决以下问题:

1)为什么选择主备模式,而不是主主模式(active/active模式)?也即让两个NameNode节点都响应客户端的请求,但前提是两个NameNode都需要保存致的元数据

2)怎么同步两个NameNode节点的元数据?响应客户端请求的是active节点保存了最新的元数据 ,元数据分为两部分:一是刚写入新的元数据 (edits),二是合并后的较旧的(fsimage)。HA机制解决同步问题的方法是将active节点新写入的edits元数据放在zookeeper集群上(zookeeper集群主要功能是实现少量数据的分布式同步管理),standby节点在active节点正常情况下只需要将zookeeper集群上edits文件同步到自己的fsimage中就可以。Hadoop框架为这个集群专门写了个分布式应用qjournal(依赖zookeeper实现),实现qjournal的节点称为JournalNode。

3)怎么感知Active节点是否宕机,并将standby节点快速切换到active状态?解决方案是专门在NameNode节点上启动一下监控进程,时刻监控NameNode的状态。对于处在active状态的NameNode,如果发现不正常就向zookeeper集群中写入一些数据。对于处在standby状态的namenode,监控进程从zookeeper集群中读数据,从而感知到active节点是否正常。如果发现异常,监控进程负责将standby状态切换到active状态。这个监控进程在hadoop中叫做ZKFC(依赖zookeeper实现)。

4)如何在状态切换时避免brain split(脑裂)?解决方案:standby NameNode感知到主节点出现异常后不会立即切换状态,ZKFC会首先通过ssh远程杀死active节点的NameNode进程(kill -9 进程号)。如果在一段时间内没有收到执行成功的回执,standby节点会执行一个自定义脚本,尽量保证不会出现脑裂问题。这个机制在Hadoop中称为fencing(包括ssh发送kill指令,执行自定义脚本两道保障),如下图:

2 HA架构

  • ZKFC

主要作用:作为一个ZK集群的客户端,用来监控NN的状态信息。

ZKFC即ZKFailoverController,作为独立进程存在,负责控制NameNode的主备切换,ZKFC会监测NameNode的健康状况,当发现Active NameNode出现异常时会通过Zookeeper集群进行一次主备选举,完成Active和Standby状态的切换;

  • HealthMonitor

定时调用NameNode的HAServiceProtocol RPC接口(monitorHealth和getServiceStatus),监控NameNode的健康状态并向ZKFC反馈

  • ActiveStandbyElector

接收ZKFC的选举请求,通过Zookeeper自动完成主备选举,选举完成后回调ZKFC的主备切换方法对NameNode进行Active和Standby状态的切换;

  • JournalNode集群

共享存储系统,负责存储HDFS的元数据,Active NameNode(写入)和Standby NameNode(读取)通过共享存储系统实现元数据同步,在主备切换过程中,新的Active NameNode必须确保元数据同步完成才能对外提供服务。

  1. Standby NameNode拥有之前Active NameNode的对外提供的所有服务信息,这就需要ZK维护一组守护进程JournalNode,处于工作状态的Active NameNode需要将自己对外提供的所有服务信息写在一半以上的JournalNode的目录里(这些信息被记为editlog),处于热备状态的Standby NameNode会随时监听JournalNode的工作目录,只要有所更新改变,热备状态下的Standby NameNode会读取这些信息,并更新自己内部的命名空间,此时Standby NameNode和Active NameNode都拥有对外提供的服务信息
  2. 所有的DataNode都要向主NameNode和热备NameNode进行心跳报告,使得2个NameNode都了解DataNode的健康状态以及数据存放在哪个DataNode上。

NameNode的HA机制相关推荐

  1. 解决HDFS NameNode启动时Loading edits时间超长的问题(NameNode数据同步机制介绍)

    背景 有个好久好久没怎么维护的Hadoop集群,一直在提供服务,也做了HA,由于某些原因要对HDFS做重启,重启前检查了遍服务,发现另一个NameNode已经挂了有一段时间了. 重启过程倒是没啥问题, ...

  2. Hadoop的HA机制

    Hadoop的HA机制 前言:正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 1.1HA的运作机制 (1)hadoop-HA集群运作机制介绍 所谓HA,即高可用(7*24小时不中 ...

  3. 一脸懵逼学习Hadoop-HA机制(以及HA机制的配置文件,测试)

    一脸懵逼学习Hadoop-HA机制(以及HA机制的配置文件,测试) 1:能否让两个NameNode都正常影响客户端请求? 应该让两个NameNode节点在某个时间只能有一个节点正常影响客户端请求,相应 ...

  4. 什么是Hadoop的HA机制?

    Hadoop的HA机制 前言:正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 1.1 HA的运作机制 (1)hadoop-HA集群运作机制介绍 所谓HA,即高可用(7*24小时不 ...

  5. hadoop namenode管理元数据机制

    一.简要namenode管理元数据机制: 二.详细namenode管理元数据机制: 三.secondary namenode 合并edits和fsimage: 四.namenode存储元数据细节: 五 ...

  6. 【Flink】 Flink JobManager HA 机制的扩展与实现

    1.概述 转载:Flink 源码阅读笔记(21)- Flink JobManager HA 机制的扩展与实现 在 Flink 1.12 中,Flink on Kubernetes 的 Native 部 ...

  7. namenode的ha配置,亲测

    namenode的ha配置 一.Namenode HA部署: 目标: 防止单个Namenode宕机以后,整个HDFS集群无法访问 规划: bigdata01.com bigdata02.com big ...

  8. Hadoop的HA机制原理解析,与HA高可用集群环境搭建

    2019独角兽企业重金招聘Python工程师标准>>> Hadoop的HA工作机制示意图 下面我们开始搭建这一套高可用集群环境 hadoop2.0已经发布了稳定版本了,增加了很多特性 ...

  9. Hadoop HA 机制学习:HA是怎么运作,QJM又是怎么发挥功效的

    一.Hadoop 系统架构 1.1 Hadoop1.x和Hadoop2.x 架构 在介绍HA之前,我们先来看下Hadoop的系统架构,这对于理解HA是至关重要的.Hadoop 1.x之前,其官方架构如 ...

最新文章

  1. Windows 技术篇 - 退出s模式解决surface无法安装和使用第三方应用问题:于安全和性能的考虑,此Windows模式只运行经Microsoft验证的应用
  2. python的核心数据类型_Python核心数据类型-集合
  3. 实现多租户系统的一点思考
  4. mac php oracle11g,Oracle11G函数整理
  5. 【整理】更改MSSQL默认字符集
  6. 写一篇Hook Driver.
  7. JavaScript 自定义对象 及 new()原理与实现 如何完整地手写实现new
  8. 自动驾驶 5-3 前馈速度控制 Feedforward Speed Control
  9. python语言程序设计教程课后答案刘卫国_Visual FoxPro程序设计教程(主编:刘卫国 第三版)1-5课后答案...
  10. 卸载重装Netmeeting
  11. 【转】RTF格式分析
  12. oracle裁员原因_Oracle中国良心裁员:首批900人,赔偿N+6
  13. Android R 设置壁纸流程和 Launcher 闪烁问题
  14. 第九章 姜小白大难不死登君位 公子纠迟来一步梦成空
  15. sms 短信通平台 发送短信
  16. 简述DDNS和DNS区别
  17. 晶体硅太阳能电池产线性能跟踪项目
  18. 安装sql server 2008 报错“检查 Microsoft Visual Studio 2008 的早期版本”失败的问题解
  19. 【Linux】syscall系统调用原理及实现
  20. 相对基址加变址寻址方式

热门文章

  1. fm2018 ajax,FM2018妖人推荐攻略_足球经理2018最有潜力妖人名单
  2. softmax回归(Softmax Regression)
  3. Pytorch笔记:线性回归、softmax回归
  4. python波形图librosa_对python中Librosa的mfcc步骤详解
  5. Unity读取和写入json中文乱码\转码\UTF-8编码
  6. 数学建模学习(66):支持向量机 (SVM)案例实战
  7. 面试知识java基础(查漏补缺笔记)
  8. QT 绘制贝塞尔曲线,并且获得曲线上的点的坐标
  9. tkMybatis的Example使用
  10. 职场经理人拍马屁必读