6

當我運行使用m1.large作爲要由作業流創建的hadoop實例的實例類型的Amazon EMR作業時,出現「設備上沒有剩餘空間」錯誤。工作生成約。最大10 GB的數據,因爲m1.large實例的容量應該是420GB * 2(根據:EC2 instance types)。我很困惑10GB數據如何導致「磁盤空間已滿」類型的消息。我意識到如果我們已經完全耗盡了文件系統允許的inode總數,也可能會產生這種錯誤,但這是一個數量達數百萬的大數目,我很確定我的工作不是產生許多文件。我已經看到,當我嘗試創建獨立於m1.large類型的EC2實例時,默認情況下會爲其分配8GB的根卷。這是否也是EMR中實例配置背後的原因?那麼,420GB大小的磁盤什麼時候分配給一個實例呢?獲取「設備上沒有剩餘空間」關於EMR m1.large實例的10 GB數據

而且,這裏的「DF -hi」,輸出「摩的」

 
$ 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 

+1

你可以提供'df -hi'和'mount'的輸出嗎 – slayedbylucifer

+0

@slayedbylucifer - 根據你的需要在問題中添加了輸出。 –

+0

420g的兩個驅動器是否都顯示在'fdisk -l'中?如果是,那麼很可能它們連接到您的實例,但尚未格式化並安裝在任何地方。 'df -h'也顯示100%被使用的東西嗎? – slayedbylucifer

回答

2

隨着@slayedbylucifer我能夠找出問題的幫助是完整的磁盤空間在默認情況下可用於羣集上的HDFS。因此,機器本地使用/可用的默認10GB空間。有一個名爲--mfs-percentage的選項,可以使用它(在使用Hadoop的MapR分發時)來指定本地文件系統和HDFS之間的磁盤空間分割。它在/var/tmp上安裝本地文件系統配額。確保將選項mapred.local.dir設置爲/var/tmp中的目錄,因爲這是tasktracker嘗試進入的所有日誌所在的位置,其中大型作業的大小可能很大。在我的情況下記錄是造成磁盤空間錯誤。我將--mfs-percentage的值設置爲60,並且之後能夠成功運行該作業。

相關問題