9

GCのオーバーヘッド制限を超えたためにHadoopDatanodeプロセスが停止することに関連する情報を検索しましたが、あまり見つかりませんでした。そのため、質問を投稿したいと思いました。

テストを実行しており、Hadoopクラスターが最大300万個のファイルを格納できることを確認する必要があります(現在は4ノードクラスター)。64ビットJVMを使用しており、ネームノードに8gを割り当てています。ただし、テストプログラムがDFSにさらに多くのファイルを書き込むと、データノードは次のエラーで停止し始めます:スレッドの例外 "DataNode:[/ var / hadoop / data / hadoop / data]" java.lang.OutOfMemoryError:GCオーバーヘッド制限を超えました

いくつかのオプションについての投稿を見ました(並列GC?)hadoop-env.shで設定できると思いますが、構文がよくわからず、初心者なので、あまり気になりませんでしたそれがどのように行われるか。ここで助けてくれてありがとう!

4

4 に答える 4

9

これを使用して、データノードのメモリを増やしてみてください:(これが機能するにはhadoopの再起動が必要です)

export HADOOP_DATANODE_OPTS="-Xmx10g"

これにより、ヒープが10GBに設定されます...必要に応じて増やすことができます。

これをファイルの先頭に貼り付けることもでき$HADOOP_CONF_DIR/hadoop-env.shます。

于 2012-04-11T20:09:17.077 に答える
0

コマンドラインからマップリデュースジョブを実行している場合は、パラメーター-D 'mapreduce.map.java.opts=-Xmx1024m'または-D'mapreduce.reduce.java.opts=-Xmx1024m'を使用してヒープを増やすことができます。例:

hadoop --config /etc/hadoop/conf jar /usr/lib/hbase-solr/tools/hbase-indexer-mr-*-job.jar --conf /etc/hbase/conf/hbase-site.xml -D 'mapreduce.map.java.opts=-Xmx1024m' --hbase-indexer-file $HOME/morphline-hbase-mapper.xml --zk-host 127.0.0.1/solr --collection hbase-collection1 --go-live --log4j /home/cloudera/morphlines/log4j.properties

一部のClouderaドキュメントでは、古いパラメーター、、およびを引き続き使用していることに注意しmapred.child.java.optsmapred.map.child.java.optsくださいmapred.reduce.child.java.opts。これらのパラメーターは、Hadoop 2では機能しなくなりました(Apache HadoopYARNの「mapreduce.map.memory.mb」と「mapred.map.child.java.opts」の関係を参照してください)。

于 2017-01-10T14:07:21.373 に答える
0

この投稿は私にとって問題を解決しました。

したがって、重要なのは「その環境変数を追加する」ことです(このLinuxコマンド構文を初めて見たとき:))

HADOOP_CLIENT_OPTS="-Xmx10g" hadoop jar "your.jar" "source.dir" "target.dir"
于 2017-12-24T02:00:54.363 に答える
-2

GCオーバーヘッド制限は、(小さな)ヒープがいっぱいであることを示します。

これは、uが大量のデータを処理するときにMapReduce操作でよく発生することです。これを試して:

< property >

  < name > mapred.child.java.opts < /name >

   < value > -Xmx1024m -XX:-UseGCOverheadLimit < /value >

< /property >

また、次のことを試してください。

コンバイナーを使用します。レデューサーは、マップ数の小さな倍数より長いリストを取得しないでください。

同時に、OOMEからヒープダンプを生成し、YourKitなどで分析して分析することができます

于 2012-04-11T19:09:00.427 に答える