Hadoopカウンターのサイズには制限があります。デフォルトでは120です。構成「mapreduce.job.counters.limit」を使用して変更しようとしましたが、機能しません。ソースコードを見てきました。これは、クラス「org.apache.hadoop.mapred.Counters」のJobConfのインスタンスがプライベートであるようなものです。誰かが前にそれを見たことがありますか?あなたの解決策は何ですか?THX :)
5 に答える
mapred-site.xml
JT、TT、クライアントノードでそのプロパティをオーバーライドできますが、これがシステム全体の変更になることを確認してください。
<configuration>
...
<property>
<name>mapreduce.job.counters.limit</name>
<value>500</value>
</property>
...
</configuration>
次に、クラスターでmapreduceサービスを再起動します。
Hadoop 2では、この構成パラメーターは
mapreduce.job.counters.max
ただし、コマンドラインまたは構成オブジェクトで設定するだけでは不十分です。静的メソッドを呼び出す必要があります
org.apache.hadoop.mapreduce.counters.Limits.init()
マッパーまたはレデューサーのsetup()メソッドで、設定を有効にします。
2.6.0および2.7.1でテスト済み。
パラは設定ファイルによって設定されますが、以下のパラは有効になります
mapreduce.job.counters.max=1000
mapreduce.job.counters.groups.max=500
mapreduce.job.counters.group.name.max=1000
mapreduce.job.counters.counter.name.max=500
他の誰かが私たちが行ったのと同じ問題に直面した場合に備えて、これを追加するだけです。MRJobを使用してからカウンターを増やします。
カウンターの数を増やすには、に追加emr_configurations
しますmrjob.conf
(または、構成パラメーターとしてMRJobに渡します)。
runners:
emr:
emr_configurations:
- Classification: mapred-site
Properties:
mapreduce.job.counters.max: 1024
mapreduce.job.counters.counter.name.max: 256
mapreduce.job.counters.groups.max: 256
mapreduce.job.counters.group.name.max: 256
で変更を加える代わりに、特定のジョブに対してのみコマンドラインオプションとして制限をカスタマイズできますmapred-site.xml
。
-Dmapreduce.job.counters.limit=x
-Dmapreduce.job.counters.groups.max=y
注:x
およびy
は、環境/要件に基づくカスタム値です。