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