Hadoop入门(7)--MapReduce

MapReduce原理

分而治之,将一个大的任务拆分成很多小的子任务(map),并行执行后,合并结果(reduce)。
这里写图片描述

MapReduce 运行流程

1 Job&Task
一个job会被拆分成多个Task
Task又分为

  • MapTask
  • ReduceTask
    这里写图片描述

JobTracker的角色

  • 作业调度
  • 分配任务、监控任务执行进度
  • 监控TaskTracker的状态

TaskTracker的角色

  • 执行任务
  • 汇报任务状态

Hadoop2.0以后的版本移除了原有的JobTracker和TaskTracker,改由Yarn平台的ResourceManager负责集群中的所有资源的同意管理和分配,NodeMangager管理Hadoop集群中单个计算节点
优点;

  • 减少了JobTracker的资源小号,减少了1.0中发生单点故障的风险。
  • 在YARN平台上还可以运行Spark和Storm作业,充分利用资源

MapReduce作业执行过程

这里写图片描述

MapReduce的容错机制

1 重复执行
最大重复执行4次,还是失败,则放弃执行
2推测执行
TaskTracker执行同一个任务时,其中有一个节点过慢
这里写图片描述
算的慢的继续算,再找一个TaskTracker算这个任务,谁先算完用那个,慢的停止
这里写图片描述

MapReduce的四个阶段

1 Splitf阶段:分片输入阶段

2 Map阶段(需要编码)

3 Shuffle阶段

Reduce阶段(需要编码)

实例

1 split阶段
file1 和 file2经过分片处理后生成Split123作为Map的输入
这里写图片描述
三行文本 拆分成三份
这里写图片描述


2 Map阶段
输入为<key value>
value为单词出现的次数
这里写图片描述


3 Shuffle阶段
接收Map阶段的<key value>作为输入
Shuffle阶段可以理解为Map输出到Reduce输入的过程
设计网络传输
这里写图片描述
虽然有次数的累计,但是不会算出总数,只是将相同的放在一起


4 Reduce阶段
输入为<key value>
这里写图片描述


总结
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39381833/article/details/81272527