我有一个map reduce作业,它使用大量的输入路径。因此,我在启动作业时遇到此异常:超出最大jobconf大小:6154861限制:5242880我意识到最大jobconf大小由系统属性控制:mapred.user.jobconf.limit,默认为5 mb。除了提高这一限制,还有什么办法可以绕过这个问题吗?
vzgqcmou1#
或者,您可以尝试使用 DistributedCache 如果可能的话。而不是将这么多的名称-值对加载到 JobConf ,您可以将它们放入一个文件中并将该文件添加到 DistributedCache . 这取决于应用程序存储的内容 JobConf .
DistributedCache
JobConf
ss2ws0br2#
我不这么认为,除非你准备好改变来源本身。根据jobtracker的source,如果用户没有明确指定,这是允许的最大值。
/**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 将使用:
mapred.user.jobconf.limit
5*1024*1024L
MAX_JOBCONF_SIZE = conf.getLong(MAX_USER_JOBCONF_SIZE_KEY, MAX_JOBCONF_SIZE);
2条答案
按热度按时间vzgqcmou1#
或者,您可以尝试使用
DistributedCache
如果可能的话。而不是将这么多的名称-值对加载到
JobConf
,您可以将它们放入一个文件中并将该文件添加到DistributedCache
. 这取决于应用程序存储的内容JobConf
.ss2ws0br2#
我不这么认为,除非你准备好改变来源本身。根据jobtracker的source,如果用户没有明确指定,这是允许的最大值。
如果没有通过指定任何值
mapred.user.jobconf.limit
那么5*1024*1024L
将使用: