gpt4 book ai didi

Hadoop2.4.0 创建 39063 映射任务以在具有无效 Inputsplit 配置的本地模式下处理 10MB 文件

转载 作者:可可西里 更新时间:2023-11-01 16:31:07 28 4
gpt4 key购买 nike

我正在使用 hadoop-2.4.0,所有默认配置如下:

FileInputFormat.setInputPaths(job, new Path("in")); //10mb file;  just one file.

FileOutputFormat.setOutputPath(job, new Path("out"));

job.getConfiguration().set("mapred.max.split.size", "64");

job.getConfiguration().set("mapred.min.split.size", "128");

PS:我设置的max split size小于min(一开始我设置错了后来发现了)

并且,根据输入拆分计算逻辑

max(minimumSize, min(maximumSize, blockSize))

max(128,min(64,128) --> 128MB 它比文件大小大,所以它应该只创建一个 inputsplit(一个映射器)

很好奇当我在 eclipse 中运行这个程序时,框架如何计算每次 39063 映射器?

日志:

2015-07-15 12:02:37 DEBUG LocalJobRunner Starting mapper thread pool executor.

2015-07-15 12:02:37 DEBUG LocalJobRunner Max local threads: 1

2015-07-15 12:02:37 DEBUG LocalJobRunner Map tasks to process: 39063

2015-07-15 12:02:38 INFO LocalJobRunner Starting task:
attempt_local192734774_0001_m_000000_0

谢谢,

最佳答案

在您指定的代码中:

job.getConfiguration().set("mapred.max.split.size", "64");

job.getConfiguration().set("mapred.min.split.size", "128");

它计算成字节。因此,您获得了大量的 Mapper。

我认为你应该使用这样的东西:

job.getConfiguration().set("mapred.min.split.size", 67108864);

67108864 是 64MB 字节的值

计算:64*1024*1024 = 67108864

mapred.max.split.size 基本用于组合小文件以定义拆分大小,您正在处理大量小文件和 mapred.min.split.size 用于定义处理大文件的拆分。

如果您使用的是 YARN 或 MR2,那么您应该使用 mapreduce.input.fileinputformat.split.minsize

关于Hadoop2.4.0 创建 39063 映射任务以在具有无效 Inputsplit 配置的本地模式下处理 10MB 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31437165/

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