有没有办法确定 hdfs 平衡器是否正在运行?

问题描述

我在五台机器上以分布式模式使用 Hadoop 3.1.1。我使用 start-balancer.sh 目录中的认脚本 sbin 运行脚本以平衡节点上的磁盘空间。我很确定平衡器正在运行,因为我的名称节点处于安全模式,当我输入 hdfs dfs -df 时,我得到以下信息:

Filesystem               Size  Used  Available  Use%
hdfs://<mynamenode>:<port>     0     0          0  NaN%

现在已经有一段时间了,我怎么知道平衡器是否仍在运行以及预计到达时间是多少?我在 grep 上尝试了 ps aux,但仍然不清楚。

供参考:start-balancer.sh内容

MYNAME="${BASH_SOURCE-$0}"

function hadoop_usage
{
  hadoop_add_option "--buildpaths" "attempt to add class files from build tree"
  hadoop_add_option "--loglevel level" "set the log4j level for this command"

  hadoop_add_option "-policy <policy>" "set the balancer's policy"
  hadoop_add_option "-threshold <threshold>" "set the threshold for balancing"
  hadoop_generate_usage "${MYNAME}" false
}

bin=$(cd -P -- "$(dirname -- "${MYNAME}")" >/dev/null && pwd -P)

# let's locate libexec...
if [[ -n "${HADOOP_HOME}" ]]; then
  HADOOP_DEFAULT_LIBEXEC_DIR="${HADOOP_HOME}/libexec"
else
  HADOOP_DEFAULT_LIBEXEC_DIR="${bin}/../libexec"
fi

HADOOP_LIBEXEC_DIR="${HADOOP_LIBEXEC_DIR:-$HADOOP_DEFAULT_LIBEXEC_DIR}"
# shellcheck disable=SC2034
HADOOP_NEW_CONfig=true
if [[ -f "${HADOOP_LIBEXEC_DIR}/hdfs-config.sh" ]]; then
  . "${HADOOP_LIBEXEC_DIR}/hdfs-config.sh"
else
  echo "ERROR: Cannot execute ${HADOOP_LIBEXEC_DIR}/hdfs-config.sh." 2>&1
  exit 1
fi

# Start balancer daemon.

exec "${HADOOP_HDFS_HOME}/bin/hdfs" --config "${HADOOP_CONF_DIR}" --daemon start balancer "$@"

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)