2015-01-30 3 views
2

나는 (genome.fa) 파일을 의존성 (참조)으로 실행해야하는 Python 스크립트를 실행 중입니다.컨테이너가 실제 메모리를 넘어서 실행 중입니다. Hadoop Streaming python MR

hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/had                            oop-streaming-2.5.1.jar -file ./methratio.py -file '../Test_BSMAP/genome.fa' -                            mapper './methratio.py -r -g ' -input /TextLab/sravisha_test/SamFiles/test_sam                            -output ./outfile 

나는이 오류가 무엇입니까 :

15/01/30 10:48:38 INFO mapreduce.Job: map 0% reduce 0% 
    15/01/30 10:52:01 INFO mapreduce.Job: Task Idattempt_1422600586708_0001_m_000 009_0, Status : FAILED 
Container [pid=22533,containerID=container_1422600586708_0001_01_000017] is running beyond physical memory limits. Current usage: 1.1 GB of 1 GB physical memory used; 2.4 GB of 2.1 GB virtual memory used. Killing container. 

내가 클라우 데라 매니저를 사용하고 있습니다 (무료 버전) 내 설정 .These 있습니다

yarn.app.mapreduce.am.resource.cpu-vcores = 1 
ApplicationMaster Java Maximum Heap Size = 825955249 B 

mapreduce.map.memory.mb = 1GB 
mapreduce.reduce.memory.mb = 1 GB 
mapreduce.map.java.opts = -Djava.net.preferIPv4Stack=true 
mapreduce.map.java.opts.max.heap = 825955249 B 

yarn.app.mapreduce.am.resource.mb = 1GB 
Java Heap Size of JobHistory Server in Bytes = 397 MB 

수있는 사람이 내가이 명령을 실행하면 왜 내가이 오류가 발생하는지 말해 주시겠습니까 ??

답변

3

파이썬 스크립트가 큰 입력 파일 (단서 : genome.fa)을 읽는 동안 많은 메모리를 소비한다고 생각합니다. 여기

내 이유이다 (참조 : http://courses.coreservlets.com/Course-Materials/pdf/hadoop/04-MapRed-6-JobExecutionOnYarn.pdf, Container is running beyond memory limits, http://hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/)

컨테이너의 메모리 사용 = JVM 힙 크기 + 양산 공정

마지막 변수 '메모리에서 사용하는 JVM 파마 세대 + 네이티브 라이브러리 + 메모리 생성 된 프로세스 (파이썬 코드)에 의해 사용되는 것이 범인이 될 수 있습니다. 이 2 개 개의 매개 변수의 (MEM)의 크기를 증가

시도 : mapreduce.map.java.opts
mapreduce.reduce.java.opts.

0

실행시 생성되는 맵을 증가 시키십시오. 실행 횟수를 늘릴 수 있습니다. 분할 크기를 줄임으로써 mappers 수 ... mapred.max.split.size ... 오버 헤드가 있지만 문제를 완화합니다 ....