美文网首页
Hadoop HA:active节点失效后standby 节点无

Hadoop HA:active节点失效后standby 节点无

作者: 凉茶_b852 | 来源:发表于2017-04-21 19:26 被阅读0次

被这个问题困扰很久,网上也查不到类似的问题;因此记录下来希望帮到其他小伙伴

当然也是因为我话多/困扰太久/解决后太兴奋/想嘚瑟/想锻炼下表述能力/加深理解/整理思路/记性太差怕忘记等诸多原因。。。

第一次写,写得不好还请见谅(当然这是我的托辞,下次要是还写不好我也能找出其他理由)

另外,如果有错误或表述不清的地方还请指正;

所以我们现在开始正题:

hadoop集群结构:

Cluser结构;两台namenode;一主一备

使用JournalNode+zookeeper(※)实现HA

※:

JournalNode:

用于同步namenode(active&standby)间的数据;

Zookeeper:

用于监控namenode状态;若发现active节点异常;则将standby状态切换到active状态

错误现象:

将主备namenode都启动;kill掉active机上的namenode进程后;standby主机的状态并没有变成active

即active节点崩坏后,standby并没有被自动切换为active

调查过程:

首先想到可能是负责实现HA的以下两个应用出了问题:

1)JournalNode(比如某些原因导致standby无法获得active的数据)

2)Zookeeper

于是清空hadoop安装目录下的日志;重现了一下错误现象;

1)hadoop安装目录下并无日志产生(active和standby均没有)

因此可以排除是journalnode同步失败引起(journalnode同步有错的话会报在该日志中)

2)zookeeper下没有事务日志产生

(PS:事务日志产生在配置文件zoo.cfgd的dataLogDir下,而安装目录下的log中产生的是运行日志);

3)输入命令zkCli.sh连接zookeeper Server命令行输入ls /,确认是否有hadoop ha目录生成(--有)

4)2),3)可以排除故障并非zookeeper不作为引起

调查陷入胶着状态;

于是转而继续研究hadoop HA的实现原理,希望能获得些思路;

调查过程中发现hadoop进行HA切换时会有一种避免脑裂(brain split)的机制:

以下援引博客中查到的相关信息:

[4.如何在状态切换时避免brain split(脑裂)?

脑裂:active namenode工作不正常后,zkfc在zookeeper中写入一些数据,表明异常,这时standby namenode中的zkfc读到异常信息,并将standby节点置为active。但是,如果之前的active namenode并没有真的死掉,出现了假死(死了一会儿后又正常了,哈哈,是不是很搞笑),这样,就有两台namenode同时工作了。这种现象称为脑裂。

解决方案:standby namenode感知到主用节点出现异常后并不会立即切换状态,zkfc会首先通过ssh远程杀死active节点的 namenode进程(kill -9 进程号)。但是(这样还不行,惊讶),如果kill指令没有执行成功咋办??如果在一段时间内没有收到执行成功的回执,standby节点会执行一个自定义脚本,尽量保证不会出现脑裂问题!这个机制在hadoop中称为fencing(包括ssh发送kill指令,执行自定义脚本两道保障)]

从解决方案中可知;当发生active节点崩坏时;hadoop会进行以下两个操作:

1)通过ssh kill掉active节点的namenode进程

2)执行自定义脚本

于是查看目前hadoop集群的配置文件hdfs-site.xml中相关属性

dfs.ha.fencing.methods

<property>

<name>dfs.ha.fencing.methods</name>

<value>shell(/bin/true)</value>

</property>

只配置上述解决方案中的2)自定义脚本;于是猜测是否为缺少ssh相关配置;导致防脑裂机制的流程有误因此standby没有被拉起来

于是追加了ssh相关设置:

重新进行kill active上的namenode试验;成功;

active挂掉后standby可自动被拉起成active节点;实现了高可用性

呃……当然为什么这么修改之后问题就解决了;究竟后台运作是什么机制,是不是就如同我的设想其实我也不是特别明白。。。

但可以肯定的是问题点就在这里;重新配置后问题解决了。。。。。

有知道的小伙伴还请不吝指教~

相关文章

  • Hadoop HA:active节点失效后standby 节点无

    被这个问题困扰很久,网上也查不到类似的问题;因此记录下来希望帮到其他小伙伴 当然也是因为我话多/困扰太久/解决后太...

  • NameNode退出原因分析

    一、背景 HDFS集群为HA模式,109节点为Standby 状态,110节点为Active状态。110 上的Ac...

  • Hadoop运维

    Hadoop集群运维 场景1:namenode节点故障,active namenode节点状态切换?如何恢复? 1...

  • kubernetes之pod选举

    1.背景 在实际应用中一组pod中统一时间内只有一个active节点,其他的节点为standby状态。即需要进行选...

  • HBase部署

    Hbase配置(单节点) 已安装hadoop 获取hbase 配置hbase环境 启动 什么是非HA模式 非HA模...

  • Zookeeper应用:hadoop的HA简单实现

    hadoop的HA简单说明 hadoop的HDFS集群的分布式存储是靠NameNode节点(namenode负责响...

  • HDFS NameNode HA环境部署

    为什么要搭建NameNode HA? 因为hadoop中NameNode存在单节点故障。hadoop1.x 中的S...

  • HADOOP FQA(常见问题记录)

    Q1: hadoop ha standby namenode 无法启动 查看启动日志ERROR org.apach...

  • HDFS HA搭建步骤

    1、HDFS HA 配置主要涉及几点 1)多NameNode配置,唯一为active,其他为standby2)多...

  • 33zookeeper

    其实在我们学习hadoop时候就已经学习了zookeeper,但是对于zk至少在我的印象中就是ha和管理节点,节点...

网友评论

      本文标题:Hadoop HA:active节点失效后standby 节点无

      本文链接:https://www.haomeiwen.com/subject/bntjzttx.html