zoukankan      html  css  js  c++  java
  • Hadoop Mapreduce的流程处理

    MapReduce的输入输出

      一个MapReduce作业的输入和输出类型:会有三组<key , value>键值对类型的存在

    Mapreduce作业的处理流程

    按照时间顺序包括:

      输入分片(input split)

    在进行map计算之前,mapreduce根据输入文件计算输入分片,每个输入分片针对一个map任务。

    输入分片存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组,输入分片往往和hdfs的block关系很密切。

      map阶段

    程序员编写好map函数了,因此map函数效率相对好控制,而且一般map操作都是本地化操作也就是在数据存储节点上进行的。

      combiner阶段

    conbiner阶段是程序员可以选择的,combiner其实也是一种reduce操作,因此我们看到WordCount类里是用reduce进行加载的。

    Combiner是一个本地化的reduce操作,它是map运算的后续操作,主要是在map计算出中间文件前做一个简单的合并重复key值的操作,例如我们对文件里的单词频率做统计,map计算时候如果碰到一个hadoop的单词就会记录为1,但是这篇文章里hadoop可能会出现n多次,那么map输出文件冗余就会很多,因此在reduce计算前对相同的key做一个合并操作,那么文件会变小,这样就提高了宽带的传输效率,毕竟hadoop计算力宽带资源往往是计算的瓶颈也是最为宝贵的资源,但是combiner操作是有风险的,使用它的原则是combiner的输入不会影响到reduce计算的最终输入。

      shuffle阶段

    将map的输出作为reduce的输入的过程就是shuffle。

      reduce阶段

    由程序员编写,最终结果存储在hdfs上。

  • 相关阅读:
    IHttpHandler and HttpModule
    sql page reship
    prototype
    google search engine theory
    ghost
    sql split
    Missing you is a kind of my deeppain in my life
    file control
    a story of c#(reship)
    teacher and student(reship)
  • 原文地址:https://www.cnblogs.com/1iHu4D0n9/p/8367039.html
Copyright © 2011-2022 走看看