超过JobConf的大小



我有一个使用大量输入路径的map reduce作业。因此,我在开始工作时遇到了这个异常:

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

我意识到最大作业配置大小是由系统属性控制的:

mapred.user.jobconf。

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

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

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

相关内容

  • 没有找到相关文章

最新更新