获得"设备上没有空间"约.EMR m1.large实例上的10 GB数据

Abh*_*ain 6 hadoop diskspace amazon-ec2 amazon-web-services elastic-map-reduce

当我使用m1.large作为要由作业流创建的hadoop实例的实例类型运行我的Amazon EMR作业时,我收到错误"设备上没有剩余空间".这项工作产生约.最大10 GB的数据,因为m1.large实例的容量应该是420GB*2(根据:EC2实例类型)).我很困惑,只有10GB的数据才能导致"磁盘空间已满"的消息.我知道如果我们已经完全耗尽了文件系统上允许的inode总数,也可能会产生这种错误,但这可能是数百万的大数字,我很确定我的工作不是产生那么多文件.我已经看到,当我尝试创建一个独立于m1.large类型的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

Abh*_*ain 3

在 @slayedbylucifer 的帮助下,我发现问题在于默认情况下集群上的 HDFS 可以使用完整的磁盘空间。因此,默认安装有 10GB 空间可供机器本地使用。有一个名为--mfs-percentagewhich 的选项可用于(在使用 Hadoop 的 MapR 发行版时)指定本地文件系统和 HDFS 之间的磁盘空间划分。它将本地文件系统配额安装在/var/tmp。确保该选项mapred.local.dir设置为内部目录,/var/tmp因为这是任务跟踪器尝试的所有日志所在的位置,对于大型作业来说,该日志的大小可能会很大。在我的例子中,日志记录导致了磁盘空间错误。我将 的值设置--mfs-percentage为 60,此后能够成功运行该作业。