HDFS运行Balancer失败及问题解决办法

公众号"Hadoop足迹"

作者:罗康

1.文档编写目的


本文主要讲述如何解决HDFS运行Balancer提示“Another Balancer is running..”导致Balancer失败的问题。

  • 测试环境:

1.操作系统版本为Redhat7.2

2.CM和CDH版本为5.11.2

3.HDFS已启用HA

  • 文章目录结构:

1.文档编写目的

2.问题描述

3.解决方案

    3.1问题解决思路

    3.2问题解决步骤

    3.3相关建议

4.总结

2.问题描述


运行HDFS的Balancer命令后,中止过该命令一次,再次运行Balancer命令出现如下报错:

 

Tue Jul 17 17:50:52 CST 2018
Current working directory: /run/cloudera-scm-agent/process/10390-hdfs-BALANCER
Launching one-off process: /usr/lib64/cmf/service/hdfs/hdfs.sh balancer -threshold 10.0 -policy DataNode
Tue Jul 17 17:50:52 CST 2018
JAVA_HOME=/usr/java/jdk1.8.0_111/
using /usr/java/jdk1.8.0_111/ as JAVA_HOME
using 5 as CDH_VERSION
using /run/cloudera-scm-agent/process/10390-hdfs-BALANCER as CONF_DIR
using as SECURE_USER
using as SECURE_GROUP
CONF_DIR=/run/cloudera-scm-agent/process/10390-hdfs-BALANCER
CMF_CONF_DIR=/etc/cloudera-scm-agent
unlimited
2018-07-17 17:50:52,829 INFO [main] balancer.Balancer (Balancer.java:parse(832)) - Using a threshold of 10.0
2018-07-17 17:50:52,832 INFO [main] balancer.Balancer (Balancer.java:run(647)) - namenodes = [hdfs://nameservice1]
2018-07-17 17:50:52,833 INFO [main] balancer.Balancer (Balancer.java:run(648)) - parameters = Balancer.Parameters [BalancingPolicy.Node, threshold = 10.0, max idle iteration = 5, #excluded nodes = 0, #included nodes = 0, #source nodes = 0, run during upgrade = false]
2018-07-17 17:50:52,833 INFO [main] balancer.Balancer (Balancer.java:run(649)) - included nodes = []
2018-07-17 17:50:52,834 INFO [main] balancer.Balancer (Balancer.java:run(650)) - excluded nodes = []
2018-07-17 17:50:52,834 INFO [main] balancer.Balancer (Balancer.java:run(651)) - source nodes = []
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
java.io.IOException: Another Balancer is running.. Exiting ...
Jul 17, 2018 5:50:53 PM Balancing took 1.054 seconds
Exit code: 252

HDFS运行Balancer失败及问题解决办法_hdfs

HDFS运行Balancer失败及问题解决办法_cloudera_02

异常信息提示为:”java.io.IOException: Another Balancer is running..  Exiting ...”

经过仔细检查,并未发现有任何运行Balancer的主机。

3.解决方案

3.1.问题解决思路


HDFS在运行Balancer的时候,会将运行Balancer的主机名写入到balancer.id这个文件里面,通过这个Mark File来检测Balancer是否运行,该文件存放在HDFS上的/system目录下。

3.2.问题解决步骤


1.查看/system目录下的balancer.id文件内容,内容为空,确实没有正在运行Balancer的主机

HDFS运行Balancer失败及问题解决办法_java_03

2删除balancer.id这个文件

HDFS运行Balancer失败及问题解决办法_java_04

3.重新执行Balancer命令,可以正常执行数据均衡操作

HDFS运行Balancer失败及问题解决办法_java_05

4.查看balancer.id文件内容,与实际结果一致,即运行balancer的主机为bigdata2

HDFS运行Balancer失败及问题解决办法_java_06

3.3.相关建议


如果HDFS的Balancer在非正常情况下终止,建议在重新执行Balancer前,清除掉balancer.id这个文件。

4.总结

1.HDFS在运行Balancer的时候,会产生一个以“balancer.id”命名的Mark File,通过这个Mark File来监测Balancer的运行状况。

2.以“balancer.id”命名的Mark File存储了运行Balancer主机的主机名,位于HDFS的/system目录下,如果执行Balancer出现”java.io.IOException:Another Balancer is running..  Exiting...”这类异常问题,先查看“balancer.id”文件内容,检查是否有其他主机在运行Balancer,如果没有,则删除该文件,重新执行Balancer即可恢复正常。

3.如果是HDP集群,且HDFS由非HA转换为启用HA,那么出现该类问题有可能是遇见了AMBARI-13946这个Bug,Ambari 2.2.2及以上版本已修复,详见:

 ​https://issues.apache.org/jira/browse/AMBARI-13946​

参考文章:

 ​http://mail-archives.apache.org/mod_mbox/hadoop-mapreduce-user/201601.mbox/%3CCANXtaKBEVjrZjBMY+rMbkScuMxqvNTX6fAuDpMwuNzvLC6taCA@mail.gmail.com%3E​

 ​https://stackoverflow.com/questions/35501920/hdfs-balancer-not-working​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值