文章目录
简介
这属于整个MR中最核心的一块,后续小节会展开描述。
整个MR处理流程,是分为Map阶段和Reduce阶段。
一般,我们称Map阶段的进程是MapTask,称Reduce阶段是ReduceTask。
其完整的工作流程如图:
Map阶段具体的工作任务是啥呢?
1) map阶段决定,根据数据源,可以选择根据什么方式来读取数据;
默认情况下,map阶段读数据,是按行读,读取到的KV里,K是偏移量(可以理解成行数),V是这一行的内容。那map阶段是不是只能这么行读呢?
不是。
这里就要介绍一个组件,叫做InputFormat,它就是用来控制数据的读取形式。
Hadoop中的InputFormat有好几种实现,如FileInputFormat、TextInputFormat和CombineTextInputFormat等。
2) 数据在被读进来之后,就会交给Mapper来进行自定义业务逻辑的处理;
3)接着进行shuffle ,这是一个非常复杂的过程,可以在这里进行排序、分区、压缩、合并等等, 堪称MapReduce中最核心的环节。
最后进入reduce阶段 ,也有一个组件,叫做OutputFormat,用来控制数据的输出形式。同样的,它也有好几种实现,默认的OutputFormat是把数据写进文件里,那我想写进数据库里,可不可以呢?
当然可以,自定义OutputFormat就可以。
接下来的几节就会围绕这个流程做展开讲述:
- InputFormat
- Shuffle机制
- OutputFormat
- Join应用