Mapper 映射器

1. Hadoop Mapper

Mapper任务是处理每个输入记录(来自RecordReader)并生成中间键值对的第一个处理阶段。 Hadoop Mapper在本地磁盘上存储中间输出。 在本章中, 我们将讨论Hadoop MapReduce中用于运行程序的映射器数量以及如何计算给定数据所需的Hadoop映射器数量。

我们还将讨论Hadoop MapReduce中用于运行程序的映射器数量以及如何计算给定数据所需的映射器数量。

2.什么是Hadoop Mapper?

Hadoop Mapper任务处理每个输入记录,并生成一个新的<key,value>对。 <key,value>对可以与输入对完全不同。在mapper任务中,输出是所有这些<key,value>对的完整集合。在为每个映射程序任务编写输出之前,根据key对输出进行分区,然后进行排序。分区指定将每个key的所有值分组在一起。

MapReduce框架为作业的InputFormat生成的每个InputSplit生成一个Map任务。

Mapper只能理解<key,value>数据对,因此在将数据传递给映射器之前,数据应首先转换为<key,value>对。

3.如何在Hadoop中生成键值对?

现在让我们讨论Hadoop中的键 – 值对生成。

InputSplit – 它是数据的逻辑表示。它描述了在MapReduce程序中包含单个Mapper任务的工作单元。

RecordReader – 它与InputSplit通信,并将数据转换成适合Mapper读取的键值对。默认情况下,它使用TextInputFormat将数据转换为键值对。?RecordReader与Inputsplit通信,直到文件读取未完成。

4. Mapper 如何工作?

InputSplits将数据物理块转换为Hadoop Mapper的逻辑表示。 要读取200MB文件,需要两个InputSlits。 为每个块创建一个InputSplit,并为每个InputSplit创建一个RecordReader和一个mapper。

InputSpits并不总是依赖于块的数量,我们可以通过在作业执行期间设置mapred.max.split.size属性来自定义特定文件的分割数。

RecordReader的责任是不断读取/转换数据到键值对,直到文件结束。 字节偏移量(唯一编号)由RecordReader分配给文件中的每一行。 此外,这个键值对被发送给映射器。 映射器程序的输出被称为中间数据。

5. Hadoop中有多少mapper任务?

我们将讨论Hadoop MapReduce中用于运行任何程序的映射器数量以及如何计算给定数据所需的映射器数量?

输入文件的总块数决定了处理程序中mapper任务的数量。对于 map,合适的的并行执行大约为10-100个map/节点,但对于有些CPU强大的机器,它已被设置为300个map/节点。由于任务设置初始化需要一些时间,因此map至少需要一分钟来执行。

例如,如果我们的块大小为128 MB,并且我们预计有10 TB的输入数据,那么我们将拥有82,000个mappers。因此,InputFormat决定了mapper的数量。

因此,Mapper的数量= {(总数据大小)/(输入分割大小)}

例如,如果数据大小为1 TB,InputSplit大小为100 MB,

映射器数量=(1000 * 1000)/ 100 = 10,000

6. Hadoop Mapper – 结论

Mapper接受由InputSplit和RecordReader生成的一组键值对,并生成中间键值对。因此,在这个阶段,我们指定所有复杂的逻辑/业务规则/代价高昂的代码。

Mapper 映射器

发表评论

邮箱地址不会被公开。 必填项已用*标注

六十 六 − 六十 五 =

滚动到顶部