Hadoop当有空间时,设备错误上没有剩余空间

时间:2017-08-22 08:22:13

标签: linux hadoop hdfs

我有5台Linux机器集群。有3个数据节点和一个主节点。目前,每个数据节点上有大约50%的hdfs存储空间可用。但是我运行了mapreduce作业,它失败并出现以下错误

2017-08-21 17:58:47,627 WARN org.apache.hadoop.hdfs.DFSClient: Error Recovery for blk_6835454799524976171_3615612 bad datanode[0] 10.11.1.42:50010
2017-08-21 17:58:47,628 WARN org.apache.hadoop.hdfs.DFSClient: Error Recovery for block blk_6835454799524976171_3615612 in pipeline 10.11.1.42:50010, 10.11.1.43:50010: bad datanode 10.11.1.42:50010
2017-08-21 17:58:51,785 ERROR org.apache.hadoop.mapred.Child: Error in syncLogs: java.io.IOException: No space left on device

在每个系统df -h上提供以下信息

Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 5.9G     0  5.9G   0% /dev
tmpfs                    5.9G   84K  5.9G   1% /dev/shm
tmpfs                    5.9G  9.1M  5.9G   1% /run
tmpfs                    5.9G     0  5.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   50G  6.8G   44G  14% /
/dev/sdb                 1.8T  535G  1.2T  31% /mnt/11fd6fcc-1f87-4f1e-a53c-54cc7117759c
/dev/mapper/centos-home  412G  155G  59M  100% /home
/dev/sda1                494M  348M  147M  71% /boot
tmpfs                    1.2G   16K  1.2G   1% /run/user/42
tmpfs                    1.2G     0  1.2G   0% /run/user/1000

从上面可以清楚地看出,我的sdb dicsk(SDD)仅使用了31%但是centos-home是100%。当有足够的HDFS可用时,hadoop在mapreduce作业中使用本地文件系统吗?问题出在哪儿?我在谷歌搜索并发现了很多这样的问题,但没有人能够解决我的问题。

1 个答案:

答案 0 :(得分:0)

syncLogs不使用HDFS,它会写入hadoop.log.dir 如果您正在使用MapReduce,请在/etc/hadoop/conf/taskcontroller.cfg中查找hadoop.log.dir的值。

如果您正在使用YARN,请在yarn-site.xml中查找yarn.nodemanager.log-dirs的值。

其中一个应该指向您编写日志的位置。一旦你弄清楚哪个文件系统有问题,你可以从那里释放空间。

要记住的另一件事是你可以得到"设备上没有空间"如果你已经耗尽了磁盘上的inode。 df -i会显示此信息。