A-A+
HDFS block自动进入安全模式(safe mode)原因及解决方案
实验中碰到了如下问题:
问题描述:
The number of live datanodes 3 has reached the minimum number 0.
Safe mode will be turned off automatically once the thresholds have been reached。
可能原因: 因磁盘空间不足,内存不足,系统掉电等其他原因导致dataNode datablock丢失。
一般来说,这是由于系统断电,内存不足等原因导致dataNode丢失超过设置的丢失百分比,系统自动进入安全模式。
下面我将描述一下,由于我的什么操作导致出现了上述问题。
有两个Job,Job2的输入基于Job1的输出。我要对Job2做加速比实验,第一组实验我是在12个节点的情况下运行Job1,然后再运行Job2这个作业。接下来我将Slaves改为8个节点,然后再运行Job2。
问题很明显了,因为第一组实验中Job1生成的结果存在于12个节点,而更改Slaves后,存于去掉的4个节点的块丢失,导致HDFS自动进入安全模式。
解决:
在8个节点情况下,先运行Job1,然后运行Job2,保证Job2的输入块丢失不超过“dfs.safemode.threshold.pct”中设置的值,默认为0.999。
其中:hadoop dfsadmin -safemode leave 命令可以强制离开安全模式。