1. 输入数据接口:InputFormat
      1. 默认使用TextInputFormat
      2. TextInputFormat:一次读取一行,行起始偏移量作为key,行内容作为value
      3. KeyValueInputFormat:一次读取一行,使用分割符分割key和value
      4. NLineInputFormat:按照指定的行数N来划分切片
      5. CombineTextInputFormat;把多个小文件合并成为一个大文件
      6. 自定义InputFormat
    2. 逻辑处理接口:Mapper
    3. 分区:Partitioner
      1. 默认使用:HashPartition,根据key的哈希值来返回分区号
      2. 可以自定义分区方法
    4. 排序:Comparabl
      1. Bean对象实现WritableComparable接口,重写compareTo方法
    5. 合并:Combine
      1. 提高程序执行效率(减少网络传输的消耗)
      2. 使用时不能影响原业务处理结果(不能求平均值)
    6. 分组:GroupingComparator
      1. 实现分组可以将key不同或不完全相同的bean对象进入同一个reduce方法
    7. 逻辑处理接口:Mapper
    8. 输出数据接口:OutputFormat
      1. 默认使用TextOutputFormat
      2. TextOutputFormat:将每个kv对输出为文本文件的一行
      3. SequenceFileOutputFormat:作为后一个MapReduce任务的输入
      4. 自定义OutputFormat