专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Hadoop过程详解

1. 从输入到输出的总过程

86_1.png

2. 过程分解

(1)split分片–>Map

86_2.png由上图所示,是Hadoop的分片过程,在Hadoop中默认每个“块”是128M,从图中可以看出输入了两个文件,第一个文件比较大,占用了2+个块,第二个文件比较小(<128M);所以,第一个文件被分为3个分片:split1~3,第二个文件单独被分为一个分片split4。 一般来说一个分片split对应一个Map任务,所以Map任务数也为4个。但是Map任务数量其实并不是这么简单,她与很多因素有关,一般最好将一个datanode中的Map任务数控制在10~100之间。 由此可以看出,Hadoop的Hdfs文件系统更加适合处理大文件,不适合处理有大量小文件的情况,这时最好将小数据进行压缩、合并等操作。 ####(2)Map–>Shufflr–>Reduce 如果分得更细一些,这其中的过程可以表示为:

Map–>Combine–>网络混洗–>Shuffle–>Reduce

Map输出大量键值对后,需要经过网络混洗,然后经过Shuffle进入Reduce,但是大量的散片键值对会造成巨大的网络压力,所以在进行网络传输之前,要对Map输出的键值对进行一轮排序、合并,再进行网络混洗,这个过程就是Combine。过程示意图如下:

86_3.png

在得到键值对后,分别对每个Map函数输出的键值对进行排序(按字母顺序),然后将键值相同的键值对进行合并。也可以将Combine认为是对Map结果的“本地Reduce操作”。

(3)Map–>Reduce

86_4.png由上图所示,Map输出数据保存到内存缓冲区,多余溢出的数据将会保存到磁盘中,其中不同的颜色代表不同的键值,然后是将每个Map输出的数据以键值为标准合并成大数据; 然后数据进入partition中,将数据按键值合并(不累加,列表形式)输出到相应的Reduce中。 注意:在一个MapReduce中,partition、Reduce任务、输出结果的数量是相同的

文章永久链接:https://tech.souyunku.com/42577

未经允许不得转载:搜云库技术团队 » Hadoop过程详解

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们