[学习笔记]
成果剖析:
shuffle的英文是洗牌,混洗的意思,洗牌就是越乱越好的意思。当在集群的情形下是这样的,假设有三个map节点和三个reduce节点,一号reduce节点的数据会来自于三个map节点,而不是就来自于一号map节点。所以说它们的数据会混杂,线路会交叉, 3叉3。想象一下,像不像洗牌? 马克-to-win @ 马克java社区:shuffle在MapReduce中是指map输出后到reduce吸收前,按下面的官方shuffle图:具体可以分为map端和reduce端两个部份。在最开端,假定我们就提交一个大文件,MapReduce会对要处置的大文件数据进行分片(split)操作放到多台机器的集群里,(想象一个搬走大山的大活给一个师的人马,是否是要把人,安排一圈,展开,一人干一起,现在是一样的道理。现在你要玩弄一个1.5T的文件, 须要先把它切开, 分配到不同机器)为每一个分片分配一个MapTask义务,接下来会对每一个分片中的每行数据进行处置,得到键值对(key,value),其中key为偏移量,value为一行的内容。预备给我们的自己的map办法。履行完咱自己的map办法,便进入shuffle阶段。马克-to-win @ 马克java社区:为进步效力,mapreduce会把我们的写出的成果先存储到map节点的“环形内存缓冲区”(不深刻探讨),当写入的数据量到达预先设置的阙值后(默许80%)便会启动溢出(spill)线程将缓冲区中的那部份数据溢出写(spill)到磁盘的临时文件中,可能会发生很多,并在写入前依据key进行排序(sort)和合并(combine,本章不讨论)。shuffle的英文是洗牌,混洗的意思,洗牌就是越乱越好的意思。当在集群的情