MapReduce数据流

MapReduce是Hadoop的核心组件,它通过将工作划分为一组独立的任务来并行处理大量数据。在 MapReduce 中,数据是一步一步从 Mapper 流向 Reducer。

本教程详细介绍了 MapReduce 作业执行的各个阶段, Input Files, InputFormat in Hadoop, InputSplits, RecordReader, Mapper, Combiner, Partitioner, Shuffling and Sorting, Reducer, RecordWriter and OutputFormat

在这里插入图片描述

什么是MapReduce

MapReduce是 Hadoop 的数据处理层。它是一个软件框架,用于轻松编写处理存储在Hadoop 分布式文件系统 (HDFS)中的大量结构化和非结构化数据的应用程序。它通过将作业(提交的作业)划分为一组独立的任务(子作业)来并行处理大量数据。通过这种并行处理速度和集群的可靠性得到提高。我们只需要按照 map reduce 工作的方式放置自定义代码(业务逻辑),其余的事情将由引擎处理。

MapReduce 是如何工作的

Hadoop 中,MapReduce 的工作原理是将数据处理分为两个阶段:Map 阶段和 Reduce 阶段。映射是处理的第一阶段,我们指定所有复杂的逻辑/业务规则/昂贵的代码。Reduce 是处理的第二阶段,我们指定轻量级处理,如聚合/求和

Input Files

MapReduce 任务处理的数据通常存储在文件中,输入文件通常位于HDFS 中。这些文件的格式是任意的,也可以使用基于行的日志文件和二进制格式。

InputFormat

InputFormat定义了如何拆分和读取这些输入文件。它选择用于输入的文件或其他对象。

InputSplits

InputSplits由InputFormat创建,代表每个Mapper逻辑处理的数据,每个Map任务处理一个split。map任务数代表InputSplits的数量。

RecordReader

与InputSplit通信,将数据转化为key-value形式,用于mapper处理。一般来说, 使用TextInputFormat 来将数据转换为key-value。。RecordReader 与 InputSplit 通信,直到文件读取完。它为文件中存在的每一行分配字节偏移量(唯一编号)。此外,这些键值对被发送到映射器进行进一步处理。

Mapper

它处理每条输入记录(来自 RecordReader)并生成新的键值对,而 Mapper 生成的这个键值对与输入对完全不同。Mapper 的输出也称为中间输出,写入本地磁盘。Mapper 的输出不存储在 HDFS 上,因为这是临时数据,在 HDFS 上写入会创建不必要的副本(HDFS 也是一个高延迟系统)。映射器的输出传递给组合器进行进一步处理

Combiner

Combiner被称为Mini-reducer。MapReduce的Combiner主要作用在本地合并,他会减小mapper和reducer之间的数据传输。一旦combiner被执行,他的输出将通过partitioner进一步执行。

Partitioner

如果我们正在处理多个 reducer(因为一个 reducer partitioner 没有被使用) Partitioner就会出现。Partitioner从Combiner中获取输出并执行分区。输出的分区基于键进行,然后进行排序。通过哈希函数,密钥(或密钥的子集)用于派生分区。根据MapReduce中的key值,对每个combiner输出进行分区,具有相同key值的记录进入同一个partition,然后每个partition发送给reducer。

Shuffling and Sorting

一旦所有的Mapper完成,他们的输出就会被shuffled到各个Reduce节点上,这是通过网络的数据物理移动。这些移动的数据都是局部合并和排序好的。mapper的输出作为reduce的输入。

Reducer

Reducer主要是让mapper产生的中间数据作为输入数据,并调用reducer函数对每对键值对进行处理。并且Reducer的输出是最后的输出。存储在HDFS中。

RecordWriter

用于将Reducer产生的key-value写入到输出文件中。

OutputFormat

RecordWriter 将这些输出键值对写入输出文件的方式由 OutputFormat 决定。Hadoop 提供的OutputFormat 实例用于在HDFS或本地磁盘上写入文件。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值