【发布时间】:2015-12-28 15:55:38
【问题描述】:
我收到以下关于 mapreduce 作业的错误:
作业初始化失败:java.io.IOException:拆分元数据大小 超过 10000000。中止作业 job_201511121020_1680 在 org.apache.hadoop.mapreduce.split.SplitMetaInfoReader.readSplitMetaInfo(SplitMetaInfoReader.java:48) 在 org.apache.hadoop.mapred.JobInProgress.createSplits(JobInProgress.java:828) 在 org.apache.hadoop.mapred.JobInProgress.initTasks(JobInProgress.java:730) 在 org.apache.hadoop.mapred.JobTracker.initJob(JobTracker.java:3775) 在 org.apache.hadoop.mapred.EagerTaskInitializationListener$InitJob.run(EagerTaskInitializationListener.java:90) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:662)
此作业的输入路径是:/dir1/dir2///year/mon/day ...(7 天)
这是我从研究中收集的信息:此错误是由于拆分元信息大小超过限制(由 mapreduce.job.split.metainfo.maxsize 设置)引起的。我假设这个元数据被写入一个文件并且它的文件大小已经超过了限制。
我还有几个问题:
- 框架是为每个作业创建一个文件还是多个文件?
- 这个文件的内容是什么?然而,鉴于输入路径很深,当我将输入路径返回的所有文件写入一个文件时,它的大小只有几 MBytes。
感谢任何有助于更好地理解此错误的帮助。
【问题讨论】: