美文网首页
2 MapReduce

2 MapReduce

作者: 阿健在长安 | 来源:发表于2017-04-20 11:43 被阅读11次

    1.MapReduce概述

    1.设计理念

    Paste_Image.png

    把代码拷贝到节点上,而不是拷贝数据。

    2.计算框架

    Paste_Image.png

    数据来源于HDFS的block。

    Paste_Image.png

    解读:图为统计文本中单词出现次数

    • 一共4个步骤:spliting/mapping/shuffing/reducing
    • split把输入文件分割(但不一定是按行分割)
    • map从split的结果取出单词,单词为键,值为1,形成键值对的形式
    • shuffling把相同的单词合并
    • reduce把结果汇总,值相加(reduce也可能只有一个,汇总时先统计Bear,再统计Car……)

    3.Shuffler

    Paste_Image.png

    其框架如下:

    Paste_Image.png
    • map后的数据存放在内存中,经过分区和排序,再溢写到磁盘中(此任务在map所在当前节点本地完成)
    • partition分区就是把map的数据分成一个个部分,规则由程序员指定,默认由哈希模运算分区,分区的目的是把map的输出数据进行负载均衡
    • sort比较规则为按照ASCII码大小进行比较
    • merge on disk:合并到磁盘,默认规则为按照哈希值进行合并
    • 分区在把数据传入reduce的时候起作用。例如:分区在0区,就传给第1个reduce;在1区,就传给第2个reduce……
    Paste_Image.png Paste_Image.png

    主要考点:partition/sort/combiner,combiner可以没有。
    上面统计单词个数的框架中,map阶段就可以使用combiner,使第2个map中的(car,1)(car,1)变成(car,2)。
    下图为reduce的工作流程:

    Paste_Image.png

    过程如上上图所说,reduce从task tracker拷贝数据,存入内存缓冲区中,満了就溢写到disk中,再合并成一个大文件(合并规则是按照键进行合并),然后作为reduce的输出。

    4.split

    split为把block切割成一个个片段。

    Paste_Image.png

    上图前3行为说明,最后一行为计算split大小的算法:先取max.split和block的最小值,再取min.split和刚才得到的最小值的最大值。

    5.JobTracker和TaskTracker

    Paste_Image.png
    • JobTracker在2.x版本后就没有了
    • TaskTracker负责执行每一个任务是指map任务或reduce任务
    • JobTracker可以运行在任何节点,而TaskTracker一般运行在DataNode上

    相关文章

      网友评论

          本文标题:2 MapReduce

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