美文网首页
【2019-04-26】关于mapreduce

【2019-04-26】关于mapreduce

作者: BigBigFlower | 来源:发表于2019-04-26 12:28 被阅读0次

mapreduce程序本质上是并行运行的。

数据流过程

mapreduce 作业 (job)是客户端需要执行的一个工作单元:包括输入数据、MapReduce程序和配置信息。

Hadoop将作业分成若干个任务(task)来执行,包含两类任务:map任务和reduce任务。这些任务运行在集群节点上,并通过yarn进行调度。如果一个任务失败,将在另一个不同的节点上自动重新调度。

Hadoop将MapReduce的输入数据划分成等长的小数据块,称为输入分片(input split)。合理的分片大小趋向于HDFS的一个块的大小,默认128MB。

数据本地优化:Hadoop在存储有输入数据(HDFS中的数据)的节点上运行map任务。

在map时,存储数据的节点可能在运行其他的map任务,此时作业调度需要从某一数据块所在的几家中的一个节点上寻找一个空闲的map槽(slot)来运行该map分片任务,在非常偶然的情况下,会使用其他机架中的节点运行该map任务(机架与机架之间的网络传输)。

map任务输出写入本地硬盘,而非HDFS。map产生的是中间结果,由reduce处理出最终的结果。

reduce任务的mapreduce数据流 多个reduce任务,map任务和reduce任务之间的数据流称为shuffle(混洗) 当数据可以完全并行不需要shuffle时,会出现无reduce任务的情况。

集群的可用带宽限制map reduce作业的数量,尽量避免map和reduce任务之间的数据传输。Hadoop允许用户针对map任务指定一个combiner,combiner函数作为reduce函数的输入。

example:找1950对应的最大气温值

第一个map输出(1950,0),(1950,20),(1950,10)

第二个map输出(1950,25),(1950,15)

则reduce的输入:(1950,[0,20,10,25,15])输出(1950,25)

使用combiner函数可以找出每个任务的最大气温值 

reduce接受的输入为:(1950,[20,25]) 输出(1950,25)

相关文章

网友评论

      本文标题:【2019-04-26】关于mapreduce

      本文链接:https://www.haomeiwen.com/subject/aiougqtx.html