HDFS 和 YARN 的 HA 故障切换【转】

来源:https://blog.csdn.net/u011414200/article/details/50336735

一 非 HDFS HA 集群转换成 HA 集群
二 HDFS 的 HA 自动切换命令
1 获得当前 NameNode 的 active 和 standby 状态
2 NameNode 的 active 和 standby 状态切换
3 HDFS HA自动切换比手工切换多出来的步骤
三 ResourceManager 的 HA 自动切换命令
1 获得当前 RM 的 active 和 standby 状态
2 RM 的 active 和 standby 状态切换
3 yarn rmadmin 所支持的命令
4 YARN HA自动切换比手工切换多出来的步骤
四 HDFS HA 故障切换后欲恢复原 active NameNode 步骤
一. 非 HDFS HA 集群转换成 HA 集群
1. 分别启动所有的 journalnode 进程,在其中一台 NameNode 上完成即可(比如 NameNode1)

$HADOOP_HOME/sbin/hadoop-daemon.sh start journalnode
1
2. 在 NameNode1上对 journalnode 的共享数据进行初始化,然后启动 namenode 进程

$HADOOP_HOME/bin/hdfs namenode -initializeSharedEdits
$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode
1
2
3. 在 NameNode2 上同步 journalnode 的共享数据,和 NameNode 上存放的元数据,然后启动 namenode 进程

$HADOOP_HOME/bin/hdfs namenode -bootstrapStandby
$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode
1
2
4. 在其中一台 NameNode 上启动所有的 datanode 进程

$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
1

二. HDFS 的 HA 自动切换命令

说明: 为了更加通俗的说明,笔者将两台运行 namenode 进程的主机名抽象为 NameNode1 和 NameNode2,笔者更倾向 NameNode1 上的运行的是 active 状态的 namenode 进程,NameNode2 上的运行的是 standby状态的 namenode 进程,而实际操作中,master5 就是这个 NameNode1 ,master52 就是这个 NameNode2。

抽象主机名 实际操作主机名 初始状态 理想稳定状态
NameNode1 master5 standby active
NameNode2 master52 standby standby
2.1 获得当前 NameNode 的 active 和 standby 状态
当未启动 ZK 服务时,发现两个 NameNode 都是 standby 的状态,通过以下命令可以查得:

hdfs haadmin -getServiceState master5
hdfs haadmin -getServiceState master52
1
2
2.2 NameNode 的 active 和 standby 状态切换
根据集群是否已经在 hdfs-site.xml 中设置了 dfs.ha.automatic-failover.enabled 为 true (即自动故障状态切换)来分两种情况

1. 未设置自动故障切换 (false)

确定要转为 active 状态的主机名,这里将 NameNode1 设为 active,使用命令行工具进行状态切换:

hdfs haadmin -failover --forcefence --forceactive NameNode2 NameNode1
1
此处 “NameNode2 NameNode1” 的顺序表示 active 状态由 NameNode2 转换到 NameNode1 上(虽然 NameNode2 在转化前也是 standby 状态)。

有时候,当我们系统中 NameNode2 出现故障了,就可以利用上一步中把 NameNode1 的状态切换为active 后,系统自动把 NameNode2 上的 namenode 进程关闭,再把错误原因排除后重启该 namenode进程,启动后该 namenode 状态为 standby,等待下一次 NameNode1 出现故障时即可将 NameNode2 状态切换为 active。

亦或者使用以下命令将 NameNode1 主机上的 namenode 状态切换到 active 或 standby 状态

hdfs haadmin -transitionToActive NameNode1
hdfs haadmin -transitionToStandby NameNode1
1
2
但是需要注意的是这两个命令不会尝试运行任何的 fence,因此不应该经常使用。应该更倾向于用 hdfs haadmin -failover 命令。

2. 设置自动故障切换 (true)

如果执行下面命令,则会报错

hdfs haadmin -failover --forcefence --forceactive NameNode2 NameNode1
1
错误信息:

forcefence and forceactive flags not supported with auto-failover enabled.

若要手工切换其中一个 NameNode 节点的 Active 状态改变为 Standby 状态,将另一个 NameNode 节点的 Standby 状态改变为 Active 状态,则可以 kill -9 <pid of NN> 来杀死当前 Active 状态的 NameNode 上的 namenode 进程号,此时发现另一个 NameNode 节点就由 Standby 状态改变为 Active 状态,这个时候在重启被杀死进程的 NameNode 上的 namenode 进程,此时就成为了 Standby 状态,切换成功!

假设此时 master52 上 namedode 是 active 状态,而 master5 上 namenode 是 standby 状态,下图呈现了该过程:

另外一种方法就是,关闭当前为 active namenode 状态的上的 DFSZKFailoverController 进程(这个方法可靠性有待考察…)

hadoop-daemon.sh stop zkfc
1
此时,active 状态的 namenode 立刻更变为 standby 状态,另一个 standby 状态的 nameNode 立刻更变为 active 状态,如下图所示:

当继续关闭了另一个 namenode 的 zkfc 服务之后,它依旧是 active 状态,且两个 namenode 仍然正常工作!

在经过上述之后,master5 的 namenode 变为了 standby ,如果通过它提供的命令转化为 active 会怎样?失败了呗,看英文解释吧…

hdfs haadmin -transitionToActive master5
1

更多命令可以通过 help 查看,更多详细解释请看 管理员命令

hdfs haadmin -help
1

其中 checkHealth 检查 NameNode1 的状态。正常就返回 0,否则返回非 0 值。

hdfs haadmin -checkHealth NameNode1
1
关键人家官网也说了,这个功能还没有实现,现在将总是返回 success,除非给定的 NameNode 完全关闭。

2.3 HDFS HA自动切换比手工切换多出来的步骤
配置文件 core-site.xml 增加了配置项 ha.zookeeper.quorum(zk集群的配置)

配置文件 hdfs-site.xml 中把 dfs.ha.automatic-failover.enabled 改为true

操作上格式化 zk,执行命令 bin/hdfs zkfc -formatZK

在两个 NameNode 上启动 zkfc,执行命令 sbin/hadoop-daemon.sh start zkfc

三. ResourceManager 的 HA 自动切换命令

说明: 为了更加通俗的说明,笔者将两台运行 resourcemanager 进程的主机名抽象为 RM1 和 RM2,笔者更倾向 RM1 上的运行的是 active 状态的 resourcemanager 进程,RM2 上的运行的是 standby 状态的 resourcemanager 进程,而实际操作中,master5 就是这个 RM1 ,master52 就是这个 RM2。

抽象主机名 实际操作主机名 初始状态 理想稳定状态 ha-id
RM1 master5 active active rm1
RM2 master52 standby standby rm2

其中关于 ha-id 是在 yarn-site.xml 配置文件中设置的。

hadoop也为管理员提供了 CLI 的方式管理 RM HA,但在没有启用 HA 的情况下,也就是在 yarn-site.xml 配置文件中没有设置 yarn.resourcemanager.ha.enabled 为 true 时 (默认为false,不启用),下面的命令是不可用的。

3.1 获得当前 RM 的 active 和 standby 状态
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2
1
2
3.2 RM 的 active 和 standby 状态切换
根据集群是否已经在 yarn-site.xml 中设置了 yarn.resourcemanager.ha.automatic-failover.enabled 为 true (即自动故障状态切换)来分两种情况

1. 未设置自动故障切换 (false)

yarn rmadmin -transitionToStandby rm1
yarn rmadmin -transitionToActive rm2
1
2
2. 设置自动故障切换 (true)

yarn rmadmin -transitionToStandby rm1
yarn rmadmin -transitionToActive rm2
1
2

显而易见,失败了。如果需要手工切换,这时候可以

kill -9 <pid of RM> 杀掉 active 状态的 RM 的 resourcemanager 进程
或关闭 active 状态的 RM 的 resourcemanager 进程
yarn-daemon.sh stop resourcemanager
1
然后再重启 RM 的 resourcemanager 进程

yarn-daemon.sh start resourcemanager
1
此时就可以成功切换状态了…

3.3 yarn rmadmin 所支持的命令
更多命令可以通过 help 查看

yarn rmadmin -help
1

其中列出的 -failover 选项,yarn rmadmin 不支持此选项。更多详细解释请看 使用 yarn rmadmin 管理 ResourceManager HA

3.4 YARN HA自动切换比手工切换多出来的步骤
配置文件 yarn-site.xml 中把 yarn.resourcemanager.ha.automatic-failover.enabled 改为 true。该属性的含义是:是否启用自动故障转移。默认情况下,在启用 HA 时,启用自动故障转移
配置文件 yarn-site.xml 中把 yarn.resourcemanager.ha.automatic-failover.embedded 改为 true。启用内置的自动故障转移。默认情况下,在启用 HA 时,启用内置的自动故障转移

四. HDFS HA 故障切换后欲恢复原 active NameNode 步骤
假设原本是 active NameNode 的 master5 的主机因为某种突发情况而失效了,此时之前处于 standby 的 master52 变为了 active 继续承担 namenode 的责任。 一段时间后, master5 恢复正常了,但只能是 standby 的状态。这时若想将 master5 恢复成 active ,该如何做呢?以下是笔者自己总结的,准确性有待商榷…

在 Journal 和 QuorumPeerMain 进程正常启动的情况下

将所有的 datanode 进程关闭,将 master5 上的 namenode 进程也关闭
在 master5 上执行 hdfs namenode -bootstrapStandby
再将 master52 上重启 namenode 进程, OK 了
HDFS-HA的配置-----自动Failover
15059

转帖请注明本空间地址:http://blog.csdn.net/chenpingbupt 1、概述在手动FailOver的基础上,自动Failover增加了两个东西:一个是ZooKeeper集群,一个...
来自: chenpingbupt

Hadoop 2.2.0 HDFS HA(Automatic Failover)搭建
阅读数 2912

因为在工作中没有使用hadoop1,虽然前2年自己也搭建过hadoop1,但是理解不深,这次搭建hadoop2的hdfs,还是花了不少时间,文章主要用于自己归纳整理知识,如果不对的地方,欢迎指正。HA...
博文
来自: diana_cherry的专栏
cdh-启用hdfs ha
阅读数 225

HDFS高可用性(HA)群集使用两个NameNode(活动NameNode和备用NameNode)。只有一个NameNode可以在任何时间点处于活动状态。HDFSHA依赖于在两个NameNode可用的...
博文
来自: lisery的博客
HDFS高可用性 手动故障转移和自动故障转移配置教程
阅读数 479

本文适用范围,对于任何官方开源包安装的集群环境要配置HANameNode,你必须将多个配置选项添加到你的hdfs-site.xml配置文件。这里我先给出全部的配置项,然后接下来会逐步提及各配置项。&a...
博文
来自: longshilin.com

Hadoop HA——hdfs haadmin 详解
阅读数 135

NameNode切换  Hadoop版本:hadoop-2.6.0-CDH5.5.4 namenode切换需要用到hdfshaadmin命令,该命令有如下方法: hdfshaadmin-transi...
博文
来自: 猿说新宇的博客
HA
阅读数 4208

http://hadoop.apache.org/docs/r2.0.3-alpha/hadoop-yarn/hadoop-yarn-site/HDFSHighAvailabilityWithQJM....
博文
来自: oaimm的专栏
如何使用Cloudera Manager启用HDFS的HA
阅读数 993

1.文档编写目的在HDFS集群中NameNode存在单点故障(SPOF),对于只有一个NameNode的集群,如果NameNode机器出现意外,将导致整个集群无法使用。为了解决NameNode单点故障...
博文
来自: 我就是隔壁老袁
Yarn常用命令
阅读数 2万+

概述yarn命令由bin/yarn下面的脚本调用。不带任何参数运行yarn脚本会打印所有命令的描述。用法: yarn[--configconfdir]COMMANDyarn有一个选项解析框架作为运行类...
博文
来自: lantian0802的专栏
hadoop集群之YARN`s ResourceManager HA(三)
阅读数 3972

如果有看蒙圈的地方,请看下HDFSHA官方给出的方案如下配置目标:node1node2node3:3台ZooKeepernode1node2:为2台ResourceManager首先配置node1,配...
博文
来自: 萝卜Master的博客
3月起,石岩有种学历叫免考本科,一年课程,正规本科,学信网可查
爱华国际 · 鹓鶵
HDFS HA和Yarn HA的区别 - weixin_40420525的博客 - CSDN博客
11-30

HDFS中ZKFC作为单独的进程 Yarn中ZKFC是RM中的线程 2.从节点HDFS中的DataNode ...HDFS 和YARN 的HA 故障切换 - Zephyr‘s Blog 01-01 7868 一非HDFS HA ...

hadoop2 resourcemanager 主备切换 - senvil的专栏 - CSDN博客
2-25

HDFS 和 YARN 的 HA 故障切换 01-01 阅读数 8331 一非HDFSHA集群转换成...博文 来自: Zephyr‘s Blog Hadoop主从切换失败 12-17 阅读数 43 主节点node...

HDFS、YARN和MapReduce简介
阅读数 2897

HadoopHadoop是一个Apache旗下的分布式系统基础架构。Hadoop1由HDFS和MapReduce构成;Hadoop2框架核心设计有HDFS、MapReduce、YARN。Hadoop2...
博文
来自: xraw999的博客
两个resourcemanager都处于standby,zkfc无法切换resourcem
---------------------
作者:该昵称已经被占用
来源:CSDN
原文:https://blog.csdn.net/u011414200/article/details/50336735
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/cwind/p/10540299.html

时间: 2024-08-28 19:03:13

HDFS 和 YARN 的 HA 故障切换【转】的相关文章

Hadoop详解 - HDFS - MapReduce - YARN - HA

为什么要有Hadoop? 从计算机诞生到现今,积累了海量的数据,这些海量的数据有结构化.半结构化.非 结构的数据,并且这些海量的数据存储和检索就成为了一大问题. 我们都知道大数据技术难题在于一个数据复杂性.数据量.大规模的数据计算. Hadoop就是为了解决这些问题而出现的. Hadoop的诞生 Doug Cutting是Lucene的作者,当时Lucene面临和谷歌同样的问题,就是海量的数据存储和检索,于是就诞生了Nutch. 在这之后,谷歌的大牛就为解决这个问题发了三篇论文(GFS.Map-

yarn.resourcemanager.ha.id设置

resourcemanager启动报错,其中一个启动成功,另一个启动报8088端口被成功启动的rm占用 2016-11-18 17:08:49,478 INFO org.apache.zookeeper.ZooKeeper: Client environment:java.library.path=/usr/lib/hadoop/lib/native 2016-11-18 17:08:49,478 INFO org.apache.zookeeper.ZooKeeper: Client envir

利用QJM实现HDFS自动主从切换(HA Automatic Failover)源码详析

最近研究了下NameNode HA Automatic Failover方面的东西,当Active NN因为异常或其他原因不能正常提供服务时,处于Standby状态的NN就可以自动切换为Active状态,从而到达真正的高可用 NN HA Automatic Failover架构图 为了实现自动切换,需要依赖ZooKeeper和ZKFC组件,ZooKeeper主要用来记录NN的相关状态信息,zkfc组件以单独的JVM进程的形式运行在NN所在的节点上.下面首先分析下NN的启动流程,NN对象在实例化过

Tarball安装CDH5.2.1(一)--基础服务HDFS/MR2/YARN

最近公司云主机可以申请使用了,搞了几台机器打算弄个小集群,便于调试目前使用的各个组件.本系列只是个人备忘使用,会怎么方便怎么来,并不一定是正常的ops操作方法.同时,因为专注点有限(目前主要是spark.storm),并不会将目前CDH的各个组件都完整都搭一遍,只是按照个人需要进行,然后会记录下来,备忘一下. 虽然看起来只是一个安装过程,可是我们仍然有必要了解现在的CDH的软件栈,下文围绕的CDH5.2.1版本. 选择CDH5.2.X的原因有几个: 1.集成了MR2,同时还向后兼容MR1,这样就

hadoop集群之HDFS和YARN启动和停止命令

假如我们只有3台linux虚拟机,主机名分别为hadoop01.hadoop02和hadoop03,在这3台机器上,hadoop集群的部署情况如下: hadoop01:1个namenode,1个datanode,1个journalnode,1个zkfc,1个resourcemanager,1个nodemanager: hadoop02:1个namenode,1个datanode,1个journalnode,1个zkfc,1个resourcemanager,1个nodemanager: hadoo

利用VRID/VMAC实现更安全的netscaler HA故障切换

利用VRID/VMAC实现更安全的netscaler HA故障切换 virtual MAC在故障切换(failover)中的作用.    在一个HA模式中,首要节点(primary node)拥有所有浮动IP,包括MIP(mapped IP).VIP(virtual IP)等等.在网络环境中,首要节点会把这些浮动IP和自身的MAC地址返回给ARP请求,从而使得子网外的设备(例如路由器)的ARP表把该MAC和这些IP匹配起来.    当failover发生的时候,次要节点(secondary no

HDFS Federation和NameNode HA的搭建

1. HDFS Federation产生背景 在Hadoop 1.0中,HDFS的单NameNode设计带来诸多问题,包括单点故障.内存受限制约集群扩展性和缺乏隔离机制(不同业务使用同一个NameNode导致业务相互影响)等,为了解决这些问题,Hadoop 2.0引入了基于共享存储的HA解决方案和HDFS Federation,这里重点介绍HDFS Federation. HDFS Federation是指HDFS集群可同时存在多个NameNode,这些NameNode分别管理一部分数据,且共享

HDFS、YARN、Mapreduce简介

一. HDFS介绍: Hadoop2介绍 HDFS概述 HDFS读写流程   1.  Hadoop2介绍 Hadoop是Apache软件基金会旗下的一个分布式系统基础架构.Hadoop2的框架最核心的设计就是HDFS.MapReduce和YARN,为海量的数据提供了存储和计算. HDFS主要是Hadoop的存储,用于海量数据的存储: MapReduce主要运用于分布式计算: YARN是Hadoop2中的资源管理系统. Hadoop1和Hadoop2的结构对比: Hadoop2主要改进: YARN

HDFS原理分析之HA机制:avatarnode原理

一.问题描述 由于namenode 是HDFS的大脑,而这个大脑又是单点,如果大脑出现故障,则整个分布式存储系统就瘫痪了.HA(High Available)机制就是用来解决这样一个问题的.碰到这么个问题,首先本能的想到的就是冗余备份,备份的方式有很多种,前辈们设计的有元数据备份方案,secondary namenode以及avatarnode等方案.而这些方案中最有优势的自然是能够让HDFS以最短的时间完成故障切换的方案.也就是我们今天要讨论的avatarnode. 二.基本结构 primar