作业跟踪器设置为 66MB 时,如何在作业跟踪器中拥有 5MB mapred.user.jobconf.limit
作业配置?
$ ls -lh /mapred/jt/jobTracker/job_201309061800_0037.xml
-rwxr-xr-x 1 mapred mapred 66M Sep 6 22:21 /mapred/jt/jobTracker/job_201309061800_0037.xml
$ cat /mapred/jt/jobTracker/job_201309061800_0037.xml | grep mapred.user.jobconf.limit
<property><name>mapred.user.jobconf.limit</name><value>5242880</value><source>mapred-default.xml</source></property>
您只显示了从客户端发送的配置(job_201309061800_0037.xml)。此配置仅适用于当前作业,对作业跟踪器无效。您需要在JobTracker中检查mapred-default.xml
。
JobTracker 在初始化时将读取mapred.user.jobconf.limit
。之后,内存中的此值(MAX_JOBCONF_SIZE
在 JobTacker) 中)不会更改。您可以在此处查看代码:http://www.grepcode.com/file/repository.cloudera.com/content/repositories/releases/org.apache.hadoop/hadoop-core/0.20.2-cdh3u1/org/apache/hadoop/mapred/JobTracker.java#158
我承认 hadoop 没有提供一些机制来指示哪些配置可以由作业设置,哪些配置不能由作业设置。现在我的解决方案是在Hadoop源代码中搜索配置,并找出Hadoop如何使用这个配置。