hanwentan 2012-06-21
Failure Info:Job initialization failed: java.io.IOException: Split metadata size exceeded 10000000. Aborting job job_201205162059_1073852 at org.apache.hadoop.mapreduce.split.SplitMetaInfoReader.readSplitMetaInfo(SplitMetaInfoReader.java:48) at org.apache.hadoop.mapred.JobInProgress.createSplits(JobInProgress.java:817) at org.apache.hadoop.mapred.JobInProgress.initTasks(JobInProgress.java:711) at org.apache.hadoop.mapred.JobTracker.initJob(JobTracker.java:4028) at org.apache.hadoop.mapred.EagerTaskInitializationListener$InitJob.run(EagerTaskInitializationListener.java:79) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662)
出错原因:该job的job.splitmetainfo文件大小超过限制;
1. job.splitmetainfo,该文件记录split的元数据信息,job split ----> HDFS block && slave node
存放路径位于:${hadoop.tmp.dir}/mapred/staging/${user.name}/.staging/jobId/
2. 参数mapreduce.jobtracker.split.metainfo.maxsize控制该文件的最大大小,默认为:10000000(10M)
解决方法:
1. 修改mapreduce.jobtracker.split.metainfo.maxsize参数值,但需要重启jobtracker才能生效;
2. 该问题的根本原因还是因为input小文件或者目录太多导致的,所以建议合并小文件;