gpt4 book ai didi

hadoop - 关于 MR inputsplit

转载 作者:可可西里 更新时间:2023-11-01 14:57:53 24 4
gpt4 key购买 nike

据我所知,在将文件复制到 HDFS 时进行文件拆分和在文件上为映射器输入进行输入拆分是完全两种不同的方法。

这是我的问题--

假设我的 File1 大小是 128MB,它被分成两个 block 并存储在 hadoop 集群中的两个不同数据节点(Node1,Node2)中。我想在这个文件上运行 MR 作业,得到两个大小分别为 70MB 和 58MB 的输入分割。第一个映射器将通过获取输入拆分数据(大小为 70 MB)在节点 1 上运行,但节点 1 只有 64 MB 数据,其余 6 MB 数据显示在节点 2 中。

To complete Map task on Node1, Does hadoop transfer 6MB of data from Node2 to Node1? if yes, what if Node1 do not have enough storage to store 6MB data from Node2.

如果我的担心很尴尬,我深表歉意。

最佳答案

64 MB 的数据将写入节点 1,6 MB 的数据将写入节点 2。

Map Reduce 算法不适用于文件的物理 block 。它适用于逻辑输入拆分。输入拆分取决于记录的写入位置。一条记录可能跨越两个映射器。

在您的示例中,假设记录在 63 KB 数据之后开始并且记录长度为 2 MB。在这种情况下,1 MB 是节点 1 的一部分,其他 1 MB 是节点 2 的一部分。其他 1 MB 的数据将在映射操作期间从节点 2 传输到节点 1。

请看下图以更好地理解logical split Vs physical blocks

看看一些 SE 问题:

How does Hadoop process records split across block boundaries?

About Hadoop/HDFS file splitting

enter image description here

MapReduce 数据处理是由这种输入拆分概念驱动的。为特定应用程序计算的输入拆分数决定了映射器任务的数量。

这些映射器任务中的每一个都在可能的情况下分配给存储输入拆分的从节点。资源管理器(或 JobTracker,如果您使用的是 Hadoop 1)尽最大努力确保在本地处理输入拆分。

如果由于输入拆分跨越数据节点的边界而无法实现数据局部性,则一些数据将从一个数据节点传输到另一个数据节点

关于hadoop - 关于 MR inputsplit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33763772/

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