zoukankan      html  css  js  c++  java
  • Mapper类的源码分析

    Mapper类源码解析
    --------------------------
    1.来自[org.apache.hadoop.mapreduce.Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>]
    2.java Doc说明:
    Map将输入数据<k,v>转换成中间数据集<k,v>
    map将为输入的数据的每一个记录(行)执行map函数,MR通过inputfomart生成inputSplit(切分)对象,
    并根据每个split产生相对应的maptask。
    split切分原则(逻辑的):默认每个block对应一个split。slop指标:1.1
    注:如一个文件为130m,生成2个block;一个大小为128m,另一个为2m;
    inputsplit切分个数为:1个;
    map的输出通过每个reduce进行分区(partition);用户可以通过自定义分区判定哪一个key发送到指定的reduce;
    3.Mapper构成:
    4个方法:
    setup() : 在任务开始时调用一次;
    map() : 对输入分块中的每个键/值(行偏移量/行内容)对调用一次。大多数应用程序应该覆盖这个,但默认是identity函数。
    cleanup() : 在任务结束时调用一次;
    run() : 专家用户可以重写此方法以获得更全面的控制执行。该方法描述了map阶段的函数调用过程。
    4.总结:
    maptask任务数:由inputsplit切分决定;inputsplit决定由block决定。每个job的map阶段肯定存在的;
    reducetask任务数:由job.setNumReducetasks()进行设置,每个reduce根据partition生成不同的输出文件;
    案例:设置reducenum数量,默认为1;测试将reducenum设置为2或5
    设置reducenum数量为0,取消reduce阶段;
    不设置mapper;

  • 相关阅读:
    5、依赖倒转原则
    4、开放-封闭原则
    3、单一职责原则
    2013年工作生活总结
    2、策略模式
    1、简单工厂模式
    Unity3D笔记四 基础知识概念
    PythonStudy——PyCharm使用技巧 Column Selection Mode(列选择模式)
    PythonStudy——函数对象的案例
    PythonStudy——函数嵌套定义 Function nesting definition
  • 原文地址:https://www.cnblogs.com/lyr999736/p/9248471.html
Copyright © 2011-2022 走看看