Hadoop中的MapReduce中,有两个主要的步骤,一个是map,一个是reduce。
在任务运行时,我们又常说启动了多个mapper,多少个reducer。
那么map和mapper的区别,reduce和reducer到底有什么区别?该怎么区分它们呢?
map与reduce
个人理解,可以代表三个意思:
- 从MapReduce计算模型角度来讲,这两个词代表的是两个计算步骤。
- 在MapReduce的任务调度中,这两个词又可以代指map task,reduce task。
- 从代码层面中,它们是Mapper类中的map函数,Reducer类中的reduce函数
所以结合第2点和第3点来看,Reduce task其实是一个运行在node上,且执行Redcuer类中reduce函数的程序。可以把Reduce task当作是Reducer的一个实例。
同理可理解一下map task。
Mapper 与 Reduce
- 从代码层面中,Mapper和Reducer是两个类。
- 在MapReduce的任务调度中, Mapper和Reducer分别是数据处理的第一阶段和第二阶段。
- 还有一种理解是,mapper和reducer可以看作是一个计算资源的slot,它可以被用作完成许多map task或者reduce task。 它们可以被安排task,完成之后,又可以处理新的task。
参考链接
- Difference between reduce task and a reducer: https://stackoverflow.com/questions/35861206/difference-between-reduce-task-and-a-reducer
- What is Reducer in Hadoop?: http://data-flair.training/forums/topic/what-is-reducer-in-hadoop