Hadoop HA 是什么?架构?
Hadoop HA 是什么?
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 是什么?架构?相关推荐
- Hadoop HA 机制学习:HA是怎么运作,QJM又是怎么发挥功效的
一.Hadoop 系统架构 1.1 Hadoop1.x和Hadoop2.x 架构 在介绍HA之前,我们先来看下Hadoop的系统架构,这对于理解HA是至关重要的.Hadoop 1.x之前,其官方架构如 ...
- Hadoop HA 深度解析
社区hadoop2.2.0 release版本开始支持NameNode的HA,本文将详细描述NameNode HA内部的设计与实现. 为什么要Namenode HA? 1. NameNode High ...
- Hadoop HA+Federation 高可用联邦模式搭建指南
为什么80%的码农都做不了架构师?>>> 简述 Hadoop 集群一共有4种部署模式,详见<Hadoop 生态圈介绍>. HA联邦模式解决了单纯HA模式的性能瓶颈( ...
- Hadoop技术之Hadoop HA 机制学习
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:温球良 导语 最近分享过一次关于Hadoop技术主题的演讲,由于接触时间不长,很多技术细节认识不够,也没讲清楚,作为一个技术人员,本 ...
- 图说Hadoop HA
1.hadoopHA 概览 2.hadoop HA 架构图 3.架构 4.运行流程图 5.组件 转载于:https://www.cnblogs.com/dreamofintellegent/p/579 ...
- Hadoop Ha集群配置
为什么要配置HDFS HA? 首先:HDFS集群中NameNode 如果存在单点故障.对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用. 而影响HD ...
- Hadoop Ha (High avilable)配置
为什么要配置HDFS HA? 首先:HDFS集群中NameNode 如果存在单点故障.对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用. 而影响HDFS ...
- 基于Hadoop HA集群部署HBase HA集群(详细版)
文章目录 1.前言 2.ZooKeeper与Hadoop.HBase的关系 3.Hadoop与HBase的关系 4.架构资源规划 5.ZooKeeper集群设置 5.1 设置nn节点的zoo.conf ...
- 在Mac上安装Hadoop HA 高可
**Mac安装Hadoop HA高可 在Mac上安装Hadoop HA 高可用 配置环境: HA & Federation介绍 Hadoop 1.x与Hadoop 2.x Hadoop 2.x ...
最新文章
- 用Redis存储Tomcat集群的Session(转载)
- 无所不答的“自动聊天AI”
- 基于stm32f405控制三相无刷电机例程_直流有刷电机和无刷电机的区别
- nginx 配置文件的匹配规则
- freecodecamp_如何充分利用freeCodeCamp
- Hibernate操作数据库步骤(包括语法)
- 03.三月风雨愁断肠,学习大数据特别忧伤——谈谈AKS创建SQL Server大数据群集创建愁断肠
- 一路向左or一路向右
- linux 774是什么权限,Linux权限
- Python 函数详解
- HashMap 在 JDK 1.8 中新增的数据结构 – 红黑树
- 使用jquery.validate.js插件进行表单里控件的验证
- .Net 下未捕获异常的处理
- yuicompressor java_使用YUICompressor自动压缩JavaWeb项目中的JS与CSS文件
- <2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvTools(七)—— 终篇总结
- mvn 命令指定jdk版本
- 某跳动面试官:说说微信扫码登录背后的实现原理?
- html5 苹果 dock,基于JQuery模仿苹果桌面的Dock效果(初级版)
- 微信小程序配置实现中英文国际化语言切换
- SecureCRT教程——如何使用SecureCRT命令窗口将命令发送到多个会话
热门文章
- SLAM小车实现单点多点导航任务(模拟自主充电)
- 动易系统SiteWeaver™CMS6.8SQL Ac正版Build-090918-源代码下载QQ群:55317566.
- 字体过多导致样式变形
- mysql文件头标记_PHP根据文件头检测文件类型
- 关于Photoshop的JXA、UXP文档整理
- html购物车总价,最完美的购物车页面js,可全选,计算总价,传列表套字典。
- Word怎么添加乘号?
- SpringMVC实现发送邮件
- 解决CSDN阅读全部需要登录的问题
- Android 10.0WallpaperPicker2添加动态壁纸服务