MapReduce程序执行过程

Hadoop hive spark
hive spark HBASE java

input
    -》默认从HDFS中读取数据
        FileInputFormat
    -》将每一行转成keyvalue
    -》输出:
        <行偏移量,行内容>
        key     value
        0       Hadoop hive spark
        17      hive spark HBASE
mapper
    -》输入:input输出<LongWritable,Text>
    -》map:方法,一行调用一次
        针对每个行进行分割
        输出:
        key     value
        Hadoop  1       reduce1
        hive    1       reduce2
        spark   1       reduce1
        hive    1       reduce2
        spark   1       reduce1
        HBASE   1       reduce1
shuffle:分区,分组,排序
    输出:
        key     value
        Hadoop  <1>         
        HBASE   <1>
        hive    <1,1>
        spark   <1,1>
reduce:
    reduce方法:每一条keyvalue调用一次reduce方法
        将相同key的值List<value>,进行了相加求和
    输入:
        key     value
        Hadoop  <1>
        HBASE   <1>
        hive    <1,1>
        spark   <1,1>
    输出:
        key     value
        Hadoop  1
        HBASE   1
        hive    2
        spark   2
output:
    输出:默认将reduce的输出写入到hdfs
    FileOutputFormat

MapReduce开发模板
POJO:没有继承类也没有实现任何接口web

不继承也不实现
继承及实现
    extends Configured implements Tool
    官方推荐
不继承只实现
    implements Tool
    企业中用的比较多,通常Configured须要自定义一些配置,

自定义数据类型
基本数据类型
IntWritable,
LongWritable
Text
NullWritable
和java类型的转换
int –>set—> IntWritable
IntWritable –>get—>intapp

需求:svg

Map
    输入:

    输出
        key     value
    hive    0   1
    Hadoop  0   1
    spark   0   1
    HBASE   0   1
    hive    0   1
    spark   0   1

reduce 
    输入:
        Hadoop  0   <1>
        HBASE   0   <1>
        hive    0   <1,1>
        spark   0   <1,1>
    输出
        Hadoop  1   1
        HBASE   1   1
        hive    2   2
        spark   2   2

<key,value>

-》implements WritableComparable
-》定义成员变量,及get,set
-》序列化和反序列,顺序必须一致
-》compareTo
-》构造方法,带参数和无参
-》setAllValue
-》toString