Hadoop  HA 是什么?

hadoop2版本中可以有多个namenode结点,一个是活跃(active)状态,一个是准备(standby)状态。(haoop 1不存在此特性)

Hadoop HA架构详解

1.1 HDFS HA背景

HDFS集群中NameNode 存在单点故障(SPOF)。对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用,直到NameNode 重新启动。

影响HDFS集群不可用主要包括以下两种情况:一是NameNode机器宕机,将导致集群不可用,重启NameNode之后才可使用;二是计划内的NameNode节点软件或硬件升级,导致集群在短时间内不可用。

为了解决上述问题,Hadoop给出了HDFS的高可用HA方案:HDFS通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,比如处理来自客户端的RPC请求,而Standby NameNode则不对外提供服务,仅同步Active NameNode的状态,以便能够在它失败时快速进行切换。

1.2 HDFS HA架构

一个典型的HA集群,NameNode会被配置在两台独立的机器上,在任何时间上,一个NameNode处于活动状态,而另一个NameNode处于备份状态,活动状态的NameNode会响应集群中所有的客户端,备份状态的NameNode只是作为一个副本,保证在必要的时候提供一个快速的转移。

为了让Standby Node与Active Node保持同步,这两个Node都与一组称为JNS的互相独立的进程保持通信(Journal Nodes)。当Active Node上更新了namespace,它将记录修改日志发送给JNS的多数派。Standby noes将会从JNS中读取这些edits,并持续关注它们对日志的变更。Standby Node将日志变更应用在自己的namespace中,当failover发生时,Standby将会在提升自己为Active之前,确保能够从JNS中读取所有的edits,即在failover发生之前Standy持有的namespace应该与Active保持完全同步。

为了支持快速failover,Standby node持有集群中blocks的最新位置是非常必要的。为了达到这一目的,DataNodes上需要同时配置这两个Namenode的地址,同时和它们都建立心跳链接,并把block位置发送给它们。

任何时刻,只有一个Active NameNode是非常重要的,否则将会导致集群操作的混乱,那么两个NameNode将会分别有两种不同的数据状态,可能会导致数据丢失,或者状态异常,这种情况通常称为“split-brain”(脑裂,三节点通讯阻断,即集群中不同的Datanodes却看到了两个Active NameNodes)。对于JNS而言,任何时候只允许一个NameNode作为writer;在failover期间,原来的Standby Node将会接管Active的所有职能,并负责向JNS写入日志记录,这就阻止了其他NameNode基于处于Active状态的问题。

基于QJM的HDFS HA方案如上图所示,其处理流程为:集群启动后一个NameNode处于Active状态,并提供服务,处理客户端和DataNode的请求,并把editlog写到本地和share editlog(这里是QJM)中。另外一个NameNode处于Standby状态,它启动的时候加载fsimage,然后周期性的从share editlog中获取editlog,保持与Active节点的状态同步。为了实现Standby在Active挂掉后迅速提供服务,需要DataNode同时向两个NameNode汇报,使得Stadnby保存block to DataNode信息,因为NameNode启动中最费时的工作是处理所有DataNode的blockreport。为了实现热备,增加FailoverController和Zookeeper,FailoverController与Zookeeper通信,通过Zookeeper选举机制,FailoverController通过RPC让NameNode转换为Active或Standby。

1.3 HDFS HA配置要素

NameNode机器:两台配置对等的物理机器,它们分别运行Active和Standby Node。

JouralNode机器:运行JouralNodes的机器。JouralNode守护进程相当的轻量级,可以和Hadoop的其他进程部署在一起,比如NameNode、DataNode、ResourceManager等,至少需要3个且为奇数,如果你运行了N个JNS,那么它可以允许(N-1)/2个JNS进程失效并且不影响工作。

在HA集群中,Standby NameNode还会对namespace进行checkpoint操作(继承Backup Namenode的特性),因此不需要在HA集群中运行SecondaryNameNode、CheckpointNode或者BackupNode。

1.5 HDFS自动故障转移

HDFS的自动故障转移主要由Zookeeper(Zookeeper很重要啊)和ZKFC两个组件组成。

Zookeeper集群作用主要有:

一:是故障监控。每个NameNode将会和Zookeeper建立一个持久session,如果NameNode失效,那么此session将会过期失效,此后Zookeeper将会通知另一个Namenode,然后触发Failover;

二:是NameNode选举。ZooKeeper提供了简单的机制来实现Acitve Node选举,如果当前Active失效,Standby将会获取一个特定的排他锁,那么获取锁的Node接下来将会成为Active。

ZKFC是一个Zookeeper的客户端,它主要用来监测和管理NameNodes的状态,每个NameNode机器上都会运行一个ZKFC程序,它的职责主要有:一是健康监控。ZKFC间歇性的ping NameNode,得到NameNode返回状态,如果NameNode失效或者不健康,那么ZKFS将会标记其为不健康;二是Zookeeper会话管理。当本地NaneNode运行良好时,ZKFC将会持有一个Zookeeper session,如果本地NameNode为Active,它同时也持有一个“排他锁”znode,如果session过期,那么次lock所对应的znode也将被删除;三是选举。当集群中其中一个NameNode宕机,Zookeeper会自动将另一个激活。

1.6 YARN HA架构

YARN的HA架构和HDFS HA类似,需要启动两个ResourceManager,这两个ResourceManager会向ZooKeeper集群注册,通过ZooKeeper管0理它们的状态(Active或Standby)并进行自动故障转移。

2 高可用集群规划

2.1 集群规划

根据Hadoop的HA架构分析,规划整个集群由5台主机组成,具体情况如下表所示:

主机名

IP地址

安装的软件

JPS

hadoop-master1

172.16.20.81

Jdk/hadoop

Namenode/zkfc/resourcemanager/

JobHistoryServer

hadoop-master2

172.16.20.82

Jdk/hadoop

Namenode/zkfc/resourcemanager/

WebProxyServer

hadoop-slave1

172.16.20.83

Jkd/hadoop/zookeepe

Datanode/journalnode/nodemanager/

quorumPeerMain

hadoop-slave2

172.16.20.84

Jkd/hadoop/zookeeper

Datanode/journalnode/nodemanager/

quorumPeerMain

hadoop-slave3

172.16.20.85

Jkd/hadoop/zookeeper

Datanode/journalnode/nodemanager/

quorumPeerMain

需要说明以下几点:

HDFS HA通常由两个NameNode组成,一个处于Active状态,另一个处于Standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步Active NameNode的状态,以便能够在它失败时快速进行切换。

Hadoop 2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode,这里还配置了一个Zookeeper集群,用于ZKFC故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为Active状态。

YARN的ResourceManager也存在单点故障问题,这个问题在hadoop-2.4.1得到了解决:有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调。

YARN框架下的MapReduce可以开启JobHistoryServer来记录历史任务信息,否则只能查看当前正在执行的任务信息。

Zookeeper的作用是负责HDFS中NameNode主备节点的选举,和YARN框架下ResourceManaer主备节点的选举。

Hadoop HA 是什么?架构?相关推荐

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

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

  2. Hadoop HA 深度解析

    社区hadoop2.2.0 release版本开始支持NameNode的HA,本文将详细描述NameNode HA内部的设计与实现. 为什么要Namenode HA? 1. NameNode High ...

  3. Hadoop HA+Federation 高可用联邦模式搭建指南

    为什么80%的码农都做不了架构师?>>>    简述 Hadoop 集群一共有4种部署模式,详见<Hadoop 生态圈介绍>. HA联邦模式解决了单纯HA模式的性能瓶颈( ...

  4. Hadoop技术之Hadoop HA 机制学习

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:温球良 导语 最近分享过一次关于Hadoop技术主题的演讲,由于接触时间不长,很多技术细节认识不够,也没讲清楚,作为一个技术人员,本 ...

  5. 图说Hadoop HA

    1.hadoopHA 概览 2.hadoop HA 架构图 3.架构 4.运行流程图 5.组件 转载于:https://www.cnblogs.com/dreamofintellegent/p/579 ...

  6. Hadoop Ha集群配置

    为什么要配置HDFS HA?   首先:HDFS集群中NameNode 如果存在单点故障.对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用. 而影响HD ...

  7. Hadoop Ha (High avilable)配置

    为什么要配置HDFS HA? 首先:HDFS集群中NameNode 如果存在单点故障.对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用. 而影响HDFS ...

  8. 基于Hadoop HA集群部署HBase HA集群(详细版)

    文章目录 1.前言 2.ZooKeeper与Hadoop.HBase的关系 3.Hadoop与HBase的关系 4.架构资源规划 5.ZooKeeper集群设置 5.1 设置nn节点的zoo.conf ...

  9. 在Mac上安装Hadoop HA 高可

    **Mac安装Hadoop HA高可 在Mac上安装Hadoop HA 高可用 配置环境: HA & Federation介绍 Hadoop 1.x与Hadoop 2.x Hadoop 2.x ...

最新文章

  1. 阿里云微服务引擎 MSE 2022 年 3 月产品动态
  2. nssl1270-创世纪【树形dp,基环树】
  3. python中gmtime的hour错误_python中gmtime的hour错误_在Python中操作日期和时间之gmtime()方法的使用...
  4. 不能将brassplus类型的值分配到brass类的实体_Java 基础 - 类与对象
  5. Android设置透明效果的三种方法(转)
  6. SpringBoot 实现热部署有哪几种方式
  7. ROS在rviz中实时显示轨迹(nav_msgs/Path消息的使用)
  8. popen函数的实现
  9. ETF:一种让美国“80后”趋之若鹜的投资工具
  10. 我和Linux,不得不说的故事
  11. cs229 课程知识点 简要记录
  12. 蛋糕店选址该注意什么,如何了解客群画像和竞品情况
  13. 人工神经网络的算法原理,人工智能神经网络算法
  14. VMWare Fusion 导入已有的虚拟机
  15. sqli-labs 第八关盲注脚本
  16. 系统盘清理,便携小助手一键清理系统垃圾
  17. 企业邮箱哪个最好用?企业内部邮箱多少钱? 企业邮箱安全怎么选择?
  18. 吉他屋-吉他谱-吉他教程
  19. Cadence 添加图片 LOGO
  20. 用MATLAB将bilibili缓存视频批量转换成MP4的方法

热门文章

  1. 亮度 对比度 饱和度 灰度
  2. OpenStack的普及仍江湖道远
  3. c语言读取.ppm文件,孙其功陪你学之——C语言读取.ppm文件
  4. 广告广告:为您的WordPress网站创建广告
  5. 桌面式虹膜识别仪P1/P10,万级虹膜库检索,即插即用,支持电脑、手机、Pad
  6. python开发搜索引擎_简明Python开发教程(5):用爬虫实现个性化搜索引擎
  7. 【Javaweb】JSP基础教程
  8. c#程序设计 音乐播放器
  9. android 大作业
  10. 一文让你了解PCB打样及SMT全流程