zoukankan      html  css  js  c++  java
  • MapReduce工作流程详解

    MapReduce执行步骤如下
        1、Mapper任务处理
                1.1:读取输入文件内容,将每一行解析成key、value对提供给Mapper类的map函数使用,每个键值对调用一次map函数。
                1.2:在Mapper类的map函数中使用自定义的业务逻辑,对输入key、value处理并转换成新的key、value输出。
                1.3:对输入的key、value进行分区。默认分区数为1。
                1.4:对不同分区的数据按照key进行排序、分组,将相同key的value放到一个集合中。
                1.5:对分组后的数据进行规约,此步骤不是必须的。
            2:Reducer任务处理
                2.1:对多个map任务的输出按照不同的分区,通过网络copy到不同的reduce节点。然后对多个map任务的输出进行合并、排序。
                2.2:在Reducer类的reduce函数中使用自定义的业务逻辑,对输入的key、value处理,转换成新的key、value输出。
                2.3:将Reducer类reduce函数的输出保存到文件中。
            
    逻辑上讲MapReduce运行过程分为3个阶段:
                1、Mapper阶段
                2、Shuffle阶段
                3、Reducer阶段
       
    Mapper任务数量是由输入分片InputSplit决定,输入分片则由文件/HDFS默认Bolck块大小决定(Hadoop-0.x和Hadoop-1.x为64MB;Hadoop-2.x为128MB,不足一个Bolck时按照一个Block计算)。
        例如在Hadoop-2.x中,输入文件大小为500MB,则为500MB/128MB=3%116,这时候则为4个块大小也就是被InputSplit切分为4个Block。这时候MapReduce作业的Mapper任务为4个。

    Reducer任务数量默认为1个;在MapReduce作业中如果不使用分区函数则默认是一个分区,每个分区对应一个Reducer任务。    
      Reducer的最优个数与集群中可用的Reducer任务槽总数相关,总槽数由集群节点数量*每个节点的任务槽数量,每个节点的任务槽数由。

  • 相关阅读:
    Sql Server2005新特性及性能
    Sql Server Debugger
    .关于 WCF Binding 中 OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout 的解释(转载)
    LightSwitch™初体验
    WinDbg / SOS Cheat Sheet
    《Dissecting SQL Server Execution Plans》随记
    轻松掌握用SQL来合并查询
    Oracle:存储过程的使用
    Eclipse和Tomcat的版本问题已解决
    oracle:触发器的使用
  • 原文地址:https://www.cnblogs.com/mengyao/p/4713147.html
Copyright © 2011-2022 走看看