Hadoop有时会有unhealthy Node不健康的非Active节点存产生,具体错误内容如下。
一、错误内容
-== log-dirs usable space is below configured utilization percentage/no more usable space [ /hadoop/hadoop-2.9.0/logs/userlogs : used space above threshold of 90.0% ]==
如下图所示。
二、错误解释
日志目录可用空间已经低于可用空间阈值90%。因此此DataNode节点不可使用。
- 使用df -h 命令查看磁盘空间使用情况由于使用了默认的日志存放目录即HADOOP_HOME/logs此处为/hadoop/hadoop-2.9.0/logs/,而此处/根目录的使用已经到达92%,所以低于90%可用日志空间阈值,所以产生了此不健康节点,原因一清二楚,解决方法也比较清楚。
/dev/sda4 50G 43G 3.9G 92% /
devtmpfs 3.6G 0 3.6G 0% /dev
tmpfs 3.6G 0 3.6G 0% /dev/shm
tmpfs 3.6G 283M 3.3G 8% /run
tmpfs 3.6G 0 3.6G 0% /sys/fs/cgroup
/dev/sda2 3.8G 136M 3.4G 4% /boot
/dev/sda1 200M 9.8M 191M 5% /boot/efi
/dev/sda3 90G 7.6G 78G 9% /data
tmpfs 728M 0 728M 0% /run/user/0
三、解决方法
方法一:清除无用的根目录/下的其他资源,使磁盘可用空间保持在阈值90%之下即可。
方法二:修改所有数据文件存储目录(此处为了都指向/data目录下,因为有90G)。
- 修改tmp文件目录在core-site.xml文件里
修改为/data/hadoop/tmp
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
</property>
- 修改namenode.name.dir和datanode.data.dir在hdfs-site.xml文件里
此处修改为/data/hadoop/dfs/name和/data/hadoop/dfs/data
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop/dfs/data</value>
</property>
- 修改log dir在hadoop-env.sh文件里
加入下面内容export HADOOP_LOG_DIR=/data/hadoop/logs
export HADOOP_LOG_DIR=/data/hadoop/logs
- 修改yarn log dir在yarn-env.sh文件里
加入export YARN_LOG_DIR=/data/hadoop/logs,注意此yarn目录如果不修改还是会提示90%阈值问题,他默认也是在HADOOP_HOME/logs之下存放,因此必须明确显式指定。
export YARN_LOG_DIR=/data/hadoop/logs
if [ "$YARN_LOG_DIR" = "" ]; then
YARN_LOG_DIR="$HADOOP_YARN_HOME/logs"
fi
if [ "$YARN_LOGFILE" = "" ]; then
YARN_LOGFILE='yarn.log'
fi
- 此时在sbin目录下./start-all.sh启动hadoop集群,浏览http://172.16.16.15:8088/cluster/nodes 问题节点已经恢复正常。