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。
- 映射
用来把一组键值对映射成一组新的键值对。