MapReduce处理数据过程介绍

MapReduce处理数据的过程
    input ->map ->shuffle ->reduce ->output
    -a 针对input和output来讲
        正常情况下,你不需要编写代码,只需要指定需要处理的文件路径即可
    -b map和reduce中间有一个shuffle阶段
        属于MapReduce框架自己的事情,当然我们可以进行设置
    -c 核心关注
        map
         可以借助idea开发工具查看源码:(一般在源码中都有该类或方法的使用,尽量看源码可以提高你的代码书写水平)

         从源码中可以看出该类有四个参数:key的输入和输出,value的输入和输出

public class Mapper

         而且在该类中可以看到map这个方法,我们重点就是这个map方法,只要理解map方法,那么map的过程就容易理解了:

  protected void map(KEYIN key, VALUEIN value, 
                     Context context) throws IOException, InterruptedException {
    context.write((KEYOUT) key, (VALUEOUT) value);
  }

         KEYIN每行的偏移量(每行有多少个字符,上一行的字符数就是下一行的行偏移量,开始为0)
         VALUEIN每一行的内容
        
        reduce
            reduce(KEYIN key, Iterable values, Context context)
            KEYIN:业务需求中的key的值
            Iterable:要聚合的值
注意:下面会有例子说明,对应字体颜色表示
        
整个MapReduce程序中,所有的数据按照(key,value)形式流动

单词文件内容:
hadoop hive sqoop flume
spark hadoop hive redis
hive sqoop flume

map:一行一行的处理数据(map的输入
    key                  value

行偏移量            行内容
    0             hadoop hive sqoop flume
    26           spark hadoop hive redis
    48           hive sqoop flume
    
你需要干什么
    单词分割,按照空格 分割
输出结果:(map的输出
    key            value
    hadoop          1
    hive                1
    hadoop          1
    
shuffle
    将相同的key,进行合并
    key                value
    hadoop          <1,1>
    hive                <1,1>
reduce    
    你需要干什么
    将这些“1”相加
    
MapReduce执行的详解
Hadoop hive spark
hive spark hbase
    input
        默认从HDFS读取数据
        FileInputFormat
        -》将每一行转换一个keyvalue
        -》输出
            key         value
      行偏移量            行内容
            0            Hadoop hive spark
            19            hive spark hbase
    Mapper
        输入:就是input的输出
        map方法
            一行调用一次
            对一行内容进行分割
            输出:
                    key            value
                    Hadoop         1
                    hive         1
                    spark        1
                    hvie          1
                    spark          1
                    hbase        1
    shuffle :分区、分组、排序
        输入:        
            key            value
            Hadoop         1
            hive         1
            spark        1
            hvie          1
            spark          1
            hbase        1
        中间到底干了什么???
            分组、排序,分区
        输出:
            key            value
            hadoop        <1>
            hbase         <1>
            hive        <1,1>
            spark        <1,1>
    reduce
        有多少种key,将会调用多少次reduce
        输入:
            key            value
            hadoop        <1>
            hive        <1,1>
            hbase         <1>
            spark        <1,1>
        将相同的key的list,进行相加求和
        输出:
            key        value
            hadoop       1
            hive      2
            hbase     1
            spark     2
            
    output
        输出:
            默认将reduce的输出写入HDFS中

三种编写MapReduce模板:
    Driver:
        -》不继承也不实现
        -》继承和实现  -官方推荐
            extends Configured implements Tool
        -》不继承只实现 - 企业用的最多
            implements Tool

你可能感兴趣的:(大数据专栏预写,大数据开发学习)