Hadoop HA——hdfs haadmin 详解

本文详细解析了Hadoop集群中NameNode的手动切换过程,包括使用hdfshaadmin命令进行状态切换的注意事项及操作步骤。特别强调了在自动故障转移配置下手动切换的限制,并提供了调整参数实现手动切换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • NameNode切换

 

Hadoop版本:hadoop-2.6.0-CDH5.5.4

 

namenode切换需要用到hdfs haadmin 命令,该命令有如下方法:

 

hdfs haadmin -transitionToActive <serviceId> 将<serviceId>namenode过渡到active状态

当前状态: nn1:standby nn2:active

执行hdfs haadmin -transitionToActive -forcemanual nn1 将nn1过渡为Active状态,

报出以下信息,提示nn2已经为active状态

19/01/11 11:31:01 WARN ha.HAAdmin: Proceeding with manual HA state management even though

automatic failover is enabled for NameNode at e3base04/192.168.1.131:12001

transitionToActive: Node nn2 is already active

Usage: HAAdmin [-transitionToActive <serviceId> [--forceactive]]

再次查看两个namenode状态,两个namenode节点状态并没有变化。

 

执行hdfs haadmin -transitionToActive -forcemanual nn2 将nn2过渡为Active状态,

报出以下信息:

19/01/11 11:44:04 WARN ha.HAAdmin: Proceeding with manual HA state management even though

automatic failover is enabled for NameNode at e3base03/192.168.1.130:12001

19/01/11 11:44:05 WARN ha.HAAdmin: Proceeding with manual HA state management even though

automatic failover is enabled for NameNode at e3base04/192.168.1.131:12001

没有明显报错,再次查看两个namenode状态,两个namenode节点状态并没有变化。

 

综合以上情况:当active节点正常时,使用hdfs haadmin -transitionToActive命令对两个namenode节点切换都不起作用.

 

 

hdfs haadmin -transitionToStandby <serviceId>

将<serviceId>namenode过渡到standby状态

当前状态: nn1:standby nn2:active

 

执行hdfs haadmin -transitionToStandby -forcemanual nn1 将nn1过渡到standby状态:

报出以下信息:

19/01/11 13:56:18 WARN ha.HAAdmin: Proceeding with manual HA state management even though

automatic failover is enabled for NameNode at e3base03/192.168.1.130:12001

两个namenode状态并没有变化:

 

执行hdfs haadmin -transitionToStandby -forcemanual nn2 将nn2过渡到standby状态:

报出以下信息:

19/01/11 14:07:59 WARN ha.HAAdmin: Proceeding with manual HA state management even though

automatic failover is enabled for NameNode at e3base04/192.168.1.131:12001

两个namenode状态发生变化:

 

综合以上情况:当active节点正常时,执行hdfs haadmin -transitionToStandby命令可以将active的namenode节点转换成standby状态。

 

hdfs haadmin [-failover [--forcefence] [--forceactive] <serviceId> <serviceId>]

在两个namenode节点之间进行故障转移,例:

当前namenode状态: nn1:active nn2:standby

hdfs haadmin -failover -forcefence -forceactive nn1 nn2,表示将nn2设置成active状态。

报出以下信息:

[e3base@e3base03 e3base]$ hdfs haadmin -failover -forcefence -forceactive nn1 nn2

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

这句话表示,配置了自动切换之后,就不能进行手动切换了,故此次切换失败。

dfs.ha.automatic-failover.enabled参数需要在hdfs-site.xml或者core-site.xml中添加。

将nn1和nn2调换,执行hdfs haadmin -failover -forcefence -forceactive nn2 nn1,

以及强制手动执行:hdfs haadmin -failover -forcefence -forceactive -forcemanual nn1 nn2

也是同样的结果。

 

将2台namenode节点中的hdfs-site.xml中的dfs.ha.automatic-failover.enabled参数值改为false后(不需要重启namenode进程),再次执行hdfs haadmin -failover -forcefence -forceactive nn1 nn2,

从日志中可以看到在进行故障转移时,采用了第一个故障转移方法:ssh方法,该方法原理是ssh到出现故障的主机,并将namenode进程kill掉。(第二个为shell方法:运行任何的shell命令去过滤active状态的namenode)

 

综上:hdfs haadmin [-failover [--forcefence] [--forceactive] <serviceId> <serviceId>]命令在配置故障自动切换(dfs.ha.automatic-failover.enabled=true)之后,无法手动进行。可将该参数更改为false(不需要重启进程)后,重新执行该命令即可。

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值