gpt4 book ai didi

hadoop - mapreduce框架写入什么拆分元信息文件

转载 作者:可可西里 更新时间:2023-11-01 15:30:24 25 4
gpt4 key购买 nike

我在 mapreduce 作业中收到以下错误:

Job initialization failed: java.io.IOException: Split metadata size exceeded 10000000. Aborting job job_201511121020_1680 at org.apache.hadoop.mapreduce.split.SplitMetaInfoReader.readSplitMetaInfo(SplitMetaInfoReader.java:48) at org.apache.hadoop.mapred.JobInProgress.createSplits(JobInProgress.java:828) at org.apache.hadoop.mapred.JobInProgress.initTasks(JobInProgress.java:730) at org.apache.hadoop.mapred.JobTracker.initJob(JobTracker.java:3775) at org.apache.hadoop.mapred.EagerTaskInitializationListener$InitJob.run(EagerTaskInitializationListener.java:90) 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)

此作业的输入路径为:/dir1/dir2///year/mon/day ...(7 天)

这是我从研究中收集到的信息:此错误是由于拆分元信息大小超过限制(由 mapreduce.job.split.metainfo.maxsize 设置)引起的。我假设此元数据已写入文件,并且文件的大小已超过限制。

我还有几个问题:

  1. 框架是为每个作业创建一个文件还是多个文件?
  2. 这个文件的内容是什么?然而,鉴于输入路径很深,当我将输入路径返回的所有文件写入一个文件时,它的大小只有几兆字节。

感谢任何有助于更好地理解此错误的帮助。

最佳答案

默认情况下,拆分元信息的最大大小设置为 10000000

public static final long DEFAULT_SPLIT_METAINFO_MAXSIZE = 10000000L

您可以通过设置配置参数来覆盖它:mapreduce.job.split.metainfo.maxsize,在 mapred-site.xml 中。

现在回答您的问题:

  1. 每个作业创建一个拆分文件。拆分文件存储在每个作业的 .staging 文件夹中。拆分文件的名称是 job.split

  2. 这个文件的内容是:

    1) Split file header: "META-SPL"

    2) Split file version: 1

    3) Number of splits

    4) Information about each split:
    a) Locations of the split (a split can be present in 3 locations, if the replication factor is 3),
    b) start offset
    c) length of the split.

您可以在此处找到有关 SplitMetaInfo 类的更多信息:JobSplit.java

关于hadoop - mapreduce框架写入什么拆分元信息文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34496630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com