8

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>

誰でもそれを修正する方法を知っていますか? ありがとうございました!

4

1 に答える 1