在emr m1.large示例上获得大约10gb数据的“设备上没有空间”

xyhw6mcr  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(353)

当我使用m1.large作为jobflow创建的hadoop示例的示例类型来运行amazonemr作业时,出现了一个错误“设备上没有剩余空间”。由于m1.large示例的容量应该是420gb*2(根据:ec2示例类型),因此该作业最多生成约10gb的数据。我很困惑,仅仅10gb的数据怎么会导致“磁盘空间满了”这样的消息。我知道,如果我们已经完全耗尽了文件系统上允许的inode总数,也可能会产生这种错误,但这是一个相当大的数字,总计数百万个,我非常确定我的工作不会产生那么多文件。我已经看到,当我尝试独立于m1.large type创建一个ec2示例时,默认情况下,它会为它分配一个8gb的根卷。这是否也是在emr中提供示例的原因呢?那么,大小为420gb的磁盘何时分配给示例?
另外,这里是“df-hi”和“mount”的输出

$ df -hi
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/xvda1              640K    100K    541K   16% /
tmpfs                   932K       3    932K    1% /lib/init/rw
udev                    930K     454    929K    1% /dev
tmpfs                   932K       3    932K    1% /dev/shm
ip-10-182-182-151.ec2.internal:/mapr
                        100G     50G     50G   50% /mapr

$ mount
/dev/xvda1 on / type ext3 (rw,noatime)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/var/run on /run type none (rw,bind)
/var/lock on /run/lock type none (rw,bind)
/dev/shm on /run/shm type none (rw,bind)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
ip-10-182-182-151.ec2.internal:/mapr on /mapr type nfs (rw,addr=10.182.182.151)
$ lsblk
NAME  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
xvda1 202:1    0    10G  0 disk /
xvdb  202:16   0   420G  0 disk 
xvdc  202:32   0   420G  0 disk
e4yzc0pl

e4yzc0pl1#

在@slayedbylucifer的帮助下,我发现了一个问题:默认情况下,集群上的hdfs可以使用完整的磁盘空间。因此,机器上安装了默认的10gb空间,可供本地使用。有一个选项叫做 --mfs-percentage 它可以用来(在使用hadoop的mapr发行版时)指定本地文件系统和hdfs之间的磁盘空间分割。它在上装载本地文件系统配额 /var/tmp . 确保选项 mapred.local.dir 设置为内部目录 /var/tmp 因为tasktracker尝试的所有日志都在这里,对于大任务来说,日志的大小可能很大。我的案例中的日志记录导致了磁盘空间错误。我设置了 --mfs-percentage 到60,并能够成功运行该作业。

相关问题