hadoop MapReduce
本质思想:分而治之,一个大任务分成多个小的子任务(map),并行执行后,合并结果。(reduce)
MapReduce运行流程
JobTracker:作业的管理者
将作业分解成一堆任务(MapTask和ReduceTask),分配给TaskTracker运行,
作业的监控,容错处理,在一定时间间隔内JT没有收到TT的心跳信息,则该TT上的任务会被指派到其他TT上运行。
TaskTracher:任务的执行者
在TT上执行我们的Task(MapTask和ReduceTask)
执行/启动/停止作业,发送心跳信息给JT
MapTask:自己开发的map任务交由Task处理
解析每条记录的数据,交给自己的map方法处理
将map的输出结果写到本地(有些作业仅有map没有reduce==>HDFS)
ReduceTask:
将Map Task输出的数据进行读取
按照数据分组传给我们自己编写的reduce方法编写。
MapReduce的局限性:
1. 代码繁琐
2. 只能够支持map和reduce方法
3. 执行效率低
4. 不适合迭代多次,交互式,流式的处理