Hadoop で解析ジョブを実行しています。ソースは、それぞれが HTML ファイルを表す約 900,000 のバイナリ レコードを含む 11 GB のマップ ファイルであり、マップはリンクを抽出してコンテキストに書き込みます。このジョブ用に書かれたレデューサーはありません。
- 約 500,000 レコードで約 5GB の小さなファイルで実行すると、問題なく動作します。
- これは単一のマシン クラスタです
- 出力には約 1 億レコード、TEXT があります。
- 計画された 200 のマップ タスクのうち 11 のマップ タスクの後、失敗しました。
- Hadoop 0.22.0 で実行しています
次のエラーが表示されます。
org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: org.apache.hadoop.mapreduce.task.reduce.Shuffle.run(Shuffle.java:124) の org.apache の fetcher#1 のシャッフルでエラーが発生しました.hadoop.mapred.ReduceTask.run(ReduceTask.java:362) で org.apache.hadoop.mapred.Child$4.run(Child.java:223) で java.security.AccessController.doPrivileged(Native Method) で javax. org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153) の security.auth.Subject.doAs(Subject.java:396) org.apache.hadoop.mapred.Child.main(Child.java: 217) 原因: java.lang.OutOfMemoryError: org.apache.hadoop.io.BoundedByteArrayOutputStream.(BoundedByteArrayOutputStream.java:58) の Java ヒープ領域 (org.apache.hadoop.io.BoundedByteArrayOutputStream.(BoundedByteArrayOutputStream.java:45) の) org.apache.hadoop.mapreduce.task.reduce で。MapOutput.(MapOutput.java:104) at org.apache.hadoop.mapreduce.task.reduce.MergeManager.unconditionalReserve(MergeManager.java:267)
これは私の mapreduce-site.xml です:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>Hadp01:8012</value>
<description>The host and port that the MapReduce job tracker runs
at. If "local", then jobs are run in-process as a single map
and reduce task.
</description>
</property>
<property>
<name>mapred.local.dir</name>
<value>/BigData1/MapReduce,/BigData2/MapReduce</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx1536m</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>2048</value>
</property>
<property>
<name>mapreduce.task.io.sort.mb</name>
<value>300</value>
</property>
<property>
<name>io.sort.mb</name>
<value>300</value>
</property>
<property>
<name>mapreduce.task.io.sort.factor</name>
<value>100</value>
</property>
<property>
<name>io.sort.factor</name>
<value>100</value>
</property>
<property>
<name>tasktracker.http.threads</name>
<value>80</value>
</property>
</configuration>
誰でもそれを修正する方法を知っていますか? ありがとうございました!