2012-04-29 2 views
3

캐노피 클러스터 ~ 1500 개의 짧은 문서를 만들려고 Amazon Elastic MapReduce 클러스터에서 명령 행에서 Mahout 0.6을 실행 중이고 작업이 "오류 : Java 힙 공간 " 메시지. 여기에 다른 곳에서 이전의 질문을 바탕으로Mahout on Elastic MapReduce : Java 힙 공간

, 나는 내가 찾을 수있는 모든 메모리 노브를 마약했습니다

  • 의 conf/hadoop-env.sh :에 1.5GB까지이 모든 힙 공간을 설정 작은 인스턴스 및 대규모 인스턴스의 경우 4GB까지 지원합니다.

  • 의 conf/mapred-site.xml 파일이 :. 증가 JAVA_HEAP_MAX : mapred를 부가

  • $ MAHOUT_HOME/빈/조련사를 -Xmx4000m 속성을 .child.java.opts {지도 감소}, 그 값을 설정 MAHOUT_HEAPSIZE를 6GB (큰 인스턴스의 경우)로 설정합니다.

그리고 문제가 지속됩니다. 나는 너무 오랫동안 이것에 반대하는 내 머리를 두드리고있다 - 누구든지 어떤 제안이 있니?

과 같이 전체 명령 및 출력 보이는 무언가가 (이 문제를 완화 할 것을 희망, 대형 인스턴스 클러스터에서 실행) :

지역 하둡 구성 방법과는 아무 상관이없는 것
[email protected]:~$ mahout-distribution-0.6/bin/mahout canopy -i sparse-data/2010/tf-vectors -o canopy-out/2010 -dm org.apache.mahout.common.distance.TanimotoDistanceMeasure -ow -t1 0.5 -t2 0.005 -cl 
run with heapsize 6000 
-Xmx6000m 
MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath. 
Running on hadoop, using HADOOP_HOME=/home/hadoop 
No HADOOP_CONF_DIR set, using /home/hadoop/conf 
MAHOUT-JOB: /home/hadoop/mahout-distribution-0.6/mahout-examples-0.6-job.jar 
12/04/29 19:50:23 INFO common.AbstractJob: Command line arguments: {--clustering=null, --distanceMeasure=org.apache.mahout.common.distance.TanimotoDistanceMeasure, --endPhase=2147483647, --input=sparse-data/2010/tf-vectors, --method=mapreduce, --output=canopy-out/2010, --overwrite=null, --startPhase=0, --t1=0.5, --t2=0.005, --tempDir=temp} 
12/04/29 19:50:24 INFO common.HadoopUtil: Deleting canopy-out/2010 
12/04/29 19:50:24 INFO canopy.CanopyDriver: Build Clusters Input: sparse-data/2010/tf-vectors Out: canopy-out/2010 Measure: [email protected]8 t1: 0.5 t2: 0.0050 
12/04/29 19:50:24 INFO mapred.JobClient: Default number of map tasks: null 
12/04/29 19:50:24 INFO mapred.JobClient: Setting default number of map tasks based on cluster size to : 24 
12/04/29 19:50:24 INFO mapred.JobClient: Default number of reduce tasks: 1 
12/04/29 19:50:25 INFO mapred.JobClient: Setting group to hadoop 
12/04/29 19:50:25 INFO input.FileInputFormat: Total input paths to process : 1 
12/04/29 19:50:25 INFO mapred.JobClient: Running job: job_201204291846_0004 
12/04/29 19:50:26 INFO mapred.JobClient: map 0% reduce 0% 
12/04/29 19:50:45 INFO mapred.JobClient: map 27% reduce 0% 
[ ... Continues fine until... ] 
12/04/29 20:05:54 INFO mapred.JobClient: map 100% reduce 99% 
12/04/29 20:06:12 INFO mapred.JobClient: map 100% reduce 0% 
12/04/29 20:06:20 INFO mapred.JobClient: Task Id : attempt_201204291846_0004_r_000000_0, Status : FAILED 
Error: Java heap space 
12/04/29 20:06:41 INFO mapred.JobClient: map 100% reduce 33% 
12/04/29 20:06:44 INFO mapred.JobClient: map 100% reduce 68% 
[.. REPEAT SEVERAL ITERATIONS, UNITL...] 
12/04/29 20:37:58 INFO mapred.JobClient: map 100% reduce 0% 
12/04/29 20:38:09 INFO mapred.JobClient: Job complete: job_201204291846_0004 
12/04/29 20:38:09 INFO mapred.JobClient: Counters: 23 
12/04/29 20:38:09 INFO mapred.JobClient: Job Counters 
12/04/29 20:38:09 INFO mapred.JobClient: Launched reduce tasks=4 
12/04/29 20:38:09 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=94447 
12/04/29 20:38:09 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0 
12/04/29 20:38:09 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0 
12/04/29 20:38:09 INFO mapred.JobClient: Rack-local map tasks=1 
12/04/29 20:38:09 INFO mapred.JobClient: Launched map tasks=1 
12/04/29 20:38:09 INFO mapred.JobClient: Failed reduce tasks=1 
12/04/29 20:38:09 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=23031 
12/04/29 20:38:09 INFO mapred.JobClient: FileSystemCounters 
12/04/29 20:38:09 INFO mapred.JobClient: HDFS_BYTES_READ=24100612 
12/04/29 20:38:09 INFO mapred.JobClient: FILE_BYTES_WRITTEN=49399745 
12/04/29 20:38:09 INFO mapred.JobClient: File Input Format Counters 
12/04/29 20:38:09 INFO mapred.JobClient: Bytes Read=24100469 
12/04/29 20:38:09 INFO mapred.JobClient: Map-Reduce Framework 
12/04/29 20:38:09 INFO mapred.JobClient: Map output materialized bytes=49374728 
12/04/29 20:38:09 INFO mapred.JobClient: Combine output records=0 
12/04/29 20:38:09 INFO mapred.JobClient: Map input records=409 
12/04/29 20:38:09 INFO mapred.JobClient: Physical memory (bytes) snapshot=2785939456 
12/04/29 20:38:09 INFO mapred.JobClient: Spilled Records=409 
12/04/29 20:38:09 INFO mapred.JobClient: Map output bytes=118596530 
12/04/29 20:38:09 INFO mapred.JobClient: CPU time spent (ms)=83190 
12/04/29 20:38:09 INFO mapred.JobClient: Total committed heap usage (bytes)=2548629504 
12/04/29 20:38:09 INFO mapred.JobClient: Virtual memory (bytes) snapshot=4584386560 
12/04/29 20:38:09 INFO mapred.JobClient: Combine input records=0 
12/04/29 20:38:09 INFO mapred.JobClient: Map output records=409 
12/04/29 20:38:09 INFO mapred.JobClient: SPLIT_RAW_BYTES=143 
Exception in thread "main" java.lang.InterruptedException: Canopy Job failed processing sparse-data/2010/tf-vectors 
at org.apache.mahout.clustering.canopy.CanopyDriver.buildClustersMR(CanopyDriver.java:349) 
at org.apache.mahout.clustering.canopy.CanopyDriver.buildClusters(CanopyDriver.java:236) 
at org.apache.mahout.clustering.canopy.CanopyDriver.run(CanopyDriver.java:145) 
at org.apache.mahout.clustering.canopy.CanopyDriver.run(CanopyDriver.java:109) 
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
at org.apache.mahout.clustering.canopy.CanopyDriver.main(CanopyDriver.java:61) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68) 
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139) 
at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:188) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.hadoop.util.RunJar.main(RunJar.java:156) 

답변

1

EMR이 실행되거나 이러한 환경 변수가 실행되지 않습니다. EMR 자체를 구성해야하며 이에 대한 일부는 이에 해당하지 않습니다. 작업자 메모리는 요청한 인스턴스의 종류에 따라 결정됩니다.

이 오류는 메모리와 관련이 없음을 나타내지 않습니다. EMR은 어떤 이유로 작업이 완료되기를 기다리는 동안 작업을 중단했습니다. 실패 했나요?

+0

답장을 보내 주셔서 감사합니다! 명확히하기 위해 : 변경된 구성은 모두 내 로컬 컴퓨터가 아닌 EMR 마스터 노드에 있습니다. 동일한 클러스터링은 동일한 데이터 세트의보다 작은 변형으로 작동했습니다. 어떤 문제가 메모리 문제 외에 어떤 문제를 야기 했을까? –

+0

자신의 클러스터를 실행하고 있습니까? 어쨌든 나는 그 기억이 문제라는 것을 알지 못한다. 주자는 일이 끝나기를 기다리지 않고 일을 끝내지 못했습니다. 작업자 로그를 확인 하시겠습니까? –

+0

로그에 OOM에 대한 참조가 있습니다. Sean, 12/04/29 20:06:20에 축소 작업이 실패한 것을 볼 수 있습니다. 모든 재 시도도 실패한 것 같습니다. 나는 캐노피에 익숙하지 않지만 4 가지 감축 작업을 결정하는 것은 무엇입니까? –

3

정상적인 상황에서는 "mapred.map.child.java.opts"및/또는 "mapred.reduce.child.java.opts"를 무언가로 설정하여 map/reduce 하위 작업의 메모리 할당을 늘리십시오 "-Xmx3g"와 같습니다.

그러나 AWS에서 작업 할 때 이러한 설정을 직접 제어 할 수는 없습니다. Amazon은 시작시 "부트 스트랩 작업"이라고하는 EMR 클러스터를 구성하는 메커니즘을 제공합니다.

메모리 집약적 인 워크 플로 (예 : Mahout :)의 경우 "MemoryIntensive"부트 스트랩을 확인하십시오.

http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/Bootstrap.html#PredefinedBootstrapActions_MemoryIntensive

+0

이것은 올바른 대답입니다. 도움이되었습니다. 감사! –

관련 문제