ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MapReduce(一)DataFlow

2021-06-15 16:33:18  阅读:254  来源: 互联网

标签:mapper HDFS 输出 DataFlow reducer MapReduce key


原文链接:
https://data-flair.training/blogs/how-hadoop-mapreduce-works/

1、什么是MapReduce?

MapReduce是Hadoop的数据处理层. 它作为一个框架被设计地能让用户轻松简单地处理位于HDFS上的大量的结构化或者非结构化数据. 它会利用由提交任务分割出来子任务或者task来并行地处理大量的数据。基于这种并行机制,集群的处理数据的速度和可靠性得到改善。在使用Hadoop过程中,我们只需要以某种方式提交我们的业务代码,后面的事情将都由引擎来完成。

2、MapReduce是如何工作的?

在Hadoop中,MapReduce会被分解成两个阶段:Map阶段和Reduce阶段。Map阶段是处理数据的第一个阶段,我们会将复杂的业务逻辑或者耗时的代码放在这个阶段。Reduce是第二个阶段,这个阶段我们做一些轻量级的操作,比如聚合或者求和。

3、MapReduce的数据流

3.1、Input Files

MapReduce所依赖的数据都来自输入文件中,这个文件一般都是存在HDFS中。这些文件的格式是任意的,比如基于行的日志或者二进制格式。

3.2、InputFormat

现在,InputFormat定义如何分割和读取输入文件,它选择了一些文件或者其他对象作为输入。InputFormat创建InputSplit。

3.3、InputSplits

它是由InputFormat创建的,是Mapper处理的数据的逻辑视图。一个map任务会为每一个split而创建,因此map任务的数量和InputSplit的数量相同。split会被分割成records,每个records都会被mapper处理。

3.4、RecordReader

它和InputSplit通信,然后将数据转换成适合mapper读取的key-value键值对。默认情况下,它会用TextInputFormat来将数据转换为key-value对,RecordReader会和InputSplit持续通信直到文件读取结束。
It assigns byte offset (unique number) to each line present in the file(没读懂). 接着, 这些key-value键值对会发送给mapper做后续处理。

3.5、Mapper

它处理每一个输入的record(来自RecordReader)然后生成一个新的key-value对,这个新的key-value对和输入的键值对完全不同。Mapper的输出会被写入本地磁盘上,它被称为中间输出。Mapper的输出不会存储在HDFS上,因为这些都是临时数据,而且写到HDFS上还会生成没有比如的副本(另外HDFS是高延迟系统)。Mapper的输出会传递给combiner处理。

3.6、Combiner

Combiner也被称为“mini-reducer”。Combiner对mapper的输出执行本地的聚合,这有助于降低mapper和reducer之间的数据传输量。一旦combiner的功能被执行,它的输出会被传递给partitioner。

3.7、Partitioner

Partitioning allows even distribution of the map output over the reducer.

当我们的解决方案中需要多个reducer时,Partitioner就会派上用场。Partitioner接收combiners的输出,然后执行分区。Partitioning of output takes place on the basis of the key and then sorted. 依靠hash函数,键(或者部分键)会被用来指派分区。

根据MapReduce中的键值,每一个combiner输出会被分区,相同的键的记录会被分配到相同的分区中,然后每个分区的数据会发送到一个reducer。分区能让mapper的输入均匀地分布到reduce中。

3.8、Shuffling and Sorting

现在,输出已经被shuffle到reduce节点(运行reduce阶段的任务slave节点被称为reduce节点)。Shuffling是一个实质的基于网络的数据移动。一旦所有的mapper都结束了,且他们的输出都被shuffle到了reduce节点,接着的就是合并与排序这些中间数据数据,然后作为reduce阶段的输入。

3.9、Reducer

它用由mapper生成key-value对的集合作为输入,并且运行reducer函数处理每一个键值对然后生成输出。reducer的输出是最后的输出,它会被存储于HDFS。

标签:mapper,HDFS,输出,DataFlow,reducer,MapReduce,key
来源: https://www.cnblogs.com/ralgo/p/14885760.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有