Hadoop 超出了JobConf大小

Hadoop 超出了JobConf大小,hadoop,mapreduce,Hadoop,Mapreduce,我有一个MapReduce作业,它使用了大量的输入路径。因此,我在启动作业时遇到此异常: 超出最大作业配置大小:6154861限制:5242880 我意识到最大jobconf大小由系统属性控制: mapred.user.jobconf.limit,默认为5 MB 除了增加这个限制之外,还有什么办法可以避免这个问题吗?我不这么认为,除非您准备更改源代码本身。根据JobTracker的来源,如果用户未明确指定,则这是允许的最大值 /** the maximum allowed size of the

我有一个MapReduce作业,它使用了大量的输入路径。因此,我在启动作业时遇到此异常:

超出最大作业配置大小:6154861限制:5242880

我意识到最大jobconf大小由系统属性控制:

mapred.user.jobconf.limit,默认为5 MB


除了增加这个限制之外,还有什么办法可以避免这个问题吗?

我不这么认为,除非您准备更改源代码本身。根据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);

或者,如果可能,您可以尝试使用
DistributedCache

您不必将这么多的名称-值对加载到
JobConf
,而可以将它们放入一个文件中,并将该文件添加到
DistributedCache
。 这取决于应用程序在
JobConf
中存储的内容