gpt4 book ai didi

hadoop - 当对多个输入文件完成 mapreduce 任务时,hadoop 如何确定映射器或输入拆分的数量?

转载 作者:可可西里 更新时间:2023-11-01 14:30:28 26 4
gpt4 key购买 nike

我有四个输入文件 (CSV),大小分别为 453MB、449MB、646MB 和 349MB。所有这些构成了 1.85GB 的总大小。HDFS block 大小为 128MB。记录大小非常小,因为几乎没有 20 个字段。完成 mapreduce 任务后,我可以观察到 16 个映射器已用于我提供的输入文件:

enter image description here

我想知道 hadoop 如何确定多个输入文件的映射器或输入拆分的数量?

最佳答案

除非您使用 CombileFileInputFormat,否则每个文件都会单独进行拆分(基于拆分大小) .

假设 mapreduce.input.fileinputformat.split.minsizemapreduce.input.fileinputformat.split.maxsize 属性为默认值。然后拆分大小将大约等于 dfs.blocksize

所以,在这种情况下

File 1: 453MB = 4 splits 
File 2: 449MB = 4 splits
File 3: 646MB = 5 splits (boundary being very close ~640MB)
File 4: 349MB = 3 splits

共有 16 个拆分。每次拆分一个映射器,总共会生成 16 个映射器。另请参阅此 answer用于拆分大小计算公式。

更新:虽然文件 3 有 6 个 block ,但第 6 个 block 将保留为第 5 个拆分的一部分。这由 SPLIT_SLOP 因素决定,默认情况下为 1.1(最后一个溢出 10% 的 block )。

关于hadoop - 当对多个输入文件完成 mapreduce 任务时,hadoop 如何确定映射器或输入拆分的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42528001/

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