2012-04-29 5 views
3

私はAmazon Elastic MapReduceクラスタのコマンドラインから〜1500の短いドキュメントをキャノピーしようとしていますが、エラー:Javaヒープスペース"メッセージ。ここでは、他の場所前の質問に基づいてMahout on Elastic MapReduce:Javaヒープスペース

は、私が見つけることができるすべてのメモリノブをクランクました:

  • のconf/hadoop-env.sh:上の1.5ギガバイトまでそこにすべてのヒープスペースを設定小規模なインスタンス、さらには大規模なインスタンスでは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

あなたの地元のHadoopの設定はどのようにとは何の関係もないだろう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」に何かを設定して、マップ/リダンダントの子タスクのメモリ割り当てを増やします「-Xmx3g」のように。

ただし、AWSで実行している場合は、これらの設定を直接制御することはできません。 Amazonは起動時に "ブートストラップアクション"と呼ばれるEMRクラスタを設定するためのメカニズムを提供しています。

メモリ集中型のワークフロー(つまりMahout :)の場合は、「MemoryIntensive」ブートストラップをチェックしてください。

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

+0

これは正しい答えです。ありがとう! –

関連する問題