2

非常に多数の入力パスを使用するマップ削減ジョブがあります。その結果、ジョブの開始中にこの例外が発生しています。

最大 jobconf サイズを超えました: 6154861 制限: 5242880

jobconf の最大サイズはシステム プロパティによって管理されていることに気付きました。

mapred.user.jobconf.limit のデフォルトは 5 MB です。

この制限を増やす以外に、この問題を回避する方法はありますか?

4

2 に答える 2

1

ソース自体を変更する準備ができていない限り、そうは思いません。JobTracker のソースによると、ユーザーが明示的に指定しない場合、これは最大許容値です。

/** the maximum allowed size of the jobconf **/
long MAX_JOBCONF_SIZE = 5*1024*1024L;

/** the config key for max user jobconf size **/
public static final String MAX_USER_JOBCONF_SIZE_KEY = "mapred.user.jobconf.limit";

値を指定していない場合は、mapred.user.jobconf.limit次の値5*1024*1024Lが使用されます。

MAX_JOBCONF_SIZE = conf.getLong(MAX_USER_JOBCONF_SIZE_KEY, MAX_JOBCONF_SIZE);
于 2013-06-12T23:23:14.620 に答える
1

DistributedCacheまたは、可能であれば使用してみてください。

非常に多くの名前と値のペアを にロードする代わりに、JobConfそれらをファイルに入れて、そのファイルを に追加できますDistributedCache。アプリケーションが に何を格納しているかによって異なりますJobConf

于 2013-06-14T09:40:29.537 に答える