2013-06-12 27 views
2

我有一個使用大量輸入路徑的map reduce作業。因此我遇到了這個例外,同時開始作業:已超出JobConf大小

超出最大jobconf大小:6154861限制:5242880

我意識到,最大jobconf大小由系統屬性決定:

mapred.user .jobconf.limit默認爲5 MB。

除了增加此限制之外,是否有辦法規避此問題?

回答

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); 
1

或者,你可以嘗試,如果能夠利用DistributedCache

您可以將它們加載到文件中並將該文件添加到DistributedCache,而不是將如此多的名稱值對加載到JobConf中。 這取決於您的應用程序在JobConf中存儲的內容。

相關問題