복붙노트

[HADOOP] 대략 "장치에 남은 공간 없음"을 얻습니다. EMR m1.large 인스턴스에 10GB의 데이터

HADOOP

대략 "장치에 남은 공간 없음"을 얻습니다. EMR m1.large 인스턴스에 10GB의 데이터

작업 흐름에 의해 생성되는 hadoop 인스턴스의 인스턴스 유형으로 m1.large를 사용하여 Amazon EMR 작업을 실행할 때 "장치에 남은 공간이 없습니다"라는 오류가 발생합니다. 작업이 약을 생성합니다. 최대 10GB의 데이터 및 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

해결법

  1. ==============================

    1.@slayedbylucifer를 사용하여 기본적으로 클러스터의 HDFS에서 전체 디스크 공간을 사용할 수 있다는 문제점을 파악할 수있었습니다. 따라서 머신에 로컬로 사용하기 위해 /에 마운트 된 기본 10GB 공간이 있습니다. 로컬 파일 시스템과 HDFS 사이의 디스크 공간 분할을 지정하기 위해 (Hadoop의 MapR 배포를 사용하는 동안) 사용할 수있는 --mfs-percentage라는 옵션이 있습니다. / var / tmp에 로컬 파일 시스템 할당량을 마운트합니다. mapred.local.dir 옵션이 / var / tmp 내의 디렉토리로 설정되었는지 확인하십시오. 그 이유는 이것이 tasktracker 시도의 모든 로그가 들어가기 때문에 커다란 작업에 큰 크기가 될 수 있기 때문입니다. 제 경우의 로깅 때문에 디스크 공간 오류가 발생했습니다. --mfs-percentage의 값을 60으로 설정하고 그 이후에 작업을 성공적으로 실행할 수있었습니다.

    @slayedbylucifer를 사용하여 기본적으로 클러스터의 HDFS에서 전체 디스크 공간을 사용할 수 있다는 문제점을 파악할 수있었습니다. 따라서 머신에 로컬로 사용하기 위해 /에 마운트 된 기본 10GB 공간이 있습니다. 로컬 파일 시스템과 HDFS 사이의 디스크 공간 분할을 지정하기 위해 (Hadoop의 MapR 배포를 사용하는 동안) 사용할 수있는 --mfs-percentage라는 옵션이 있습니다. / var / tmp에 로컬 파일 시스템 할당량을 마운트합니다. mapred.local.dir 옵션이 / var / tmp 내의 디렉토리로 설정되었는지 확인하십시오. 그 이유는 이것이 tasktracker 시도의 모든 로그가 들어가기 때문에 커다란 작업에 큰 크기가 될 수 있기 때문입니다. 제 경우의 로깅 때문에 디스크 공간 오류가 발생했습니다. --mfs-percentage의 값을 60으로 설정하고 그 이후에 작업을 성공적으로 실행할 수있었습니다.

  2. from https://stackoverflow.com/questions/19561578/getting-no-space-left-on-device-for-approx-10-gb-of-data-on-emr-m1-large-inst by cc-by-sa and MIT license