
# MapReduce应用开发常用概念
- **Hadoop shell命令**
  Hadoop基本shell命令，包括提交MapReduce作业，kill MapReduce作业，进行HDFS文件系统各项操作等。
  
- **MapReduce输入输出(InputFormat，OutputFormat)**
  MapReduce框架根据用户指定的InputFormat切割数据集，读取数据，并提供给map任务多条键值对进行处理，决定并行启动的map任务数目。MapReduce框架根据用户指定的OutputFormat，把生成的键值对输出为特定格式的数据。
  map、reduce两个阶段都处理在\<key,value\>键值对上，也就是说，框架把作业的输入作为一组\<key,value\>键值对，同样也产出一组\<key,value\>键值对作为作业的输出，这两组键值对的类型可能不同。对单个map和reduce而言，对键值对的处理为单线程串行处理。
  框架需要对key和value的类(classes)进行序列化操作，因此，这些类需要实现Writable接口。另外，为了方便框架执行排序操作，key类必须实现WritableComparable接口。
  一个MapReduce作业的输入和输出类型如下所示：
  (input)\<k1,v1\> ---\> map ---\> \<k2,v2\> ---\> 汇总数据 ---\> \<k2,List(v2)\> ---\> reduce ---\> \<k3,v3\>(output)
  
- **业务核心**
  应用程序通常只需要分别继承Mapper类和Reducer类，并重写其map和reduce方法来实现业务逻辑，它们组成作业的核心。
  
- **MapReduce WebUI界面**
  用于监控正在运行的或者历史的MapReduce作业在MapReduce框架各个阶段的细节，以及提供日志显示，帮助用户更细粒度地去开发、配置和调优作业。
  
- **归档**
  用来保证所有映射的键值对中的每一个共享相同的键组。
  
- **混洗**
  从Map任务输出的数据到Reduce任务的输入数据的过程称为Shuffle。
  
- **映射**
  用来把一组键值对映射成一组新的键值对。
  
 
