【Hadoop权威指南】MapReduce的工作机制
来源:互联网 发布:java静态常量存储 编辑:程序博客网 时间:2024/05/24 23:14
MapReduce的工作机制
MapReduce作业运行机制
MapReduce作业的工作原理
整个MapReduce过程包括4个实体:
1. 客户端:提交MapReduce作业
2. jobtracker:协调作业的运行
3. tasktracker:运行作业划分后的任务
4. HDFS:实体间共享作业文件
作业的的提交
JobClient的runJob方法是用于新建JobClient实例并调用其submitJob方法的快捷方式。
JobClient的submitJob方法实现的作业提交过程如下:
1. 想jobtracker请求一个新的作业ID
2. 检查作业的输出说明,即输出目录存在与否
3. 计算作业反而输入分片
4. 将作业运行所提交的资源复制到一个以作业ID命名的jobtracker的文件系统中
5. 告知jobtracker作业准备运行
作业的初始化
作业提交后,会放入一个内部队列,交由作业调度器处理,并对其初始化。
初始化包括创建一个表示正在运行作业的对象—封装任务和记录信息。
为了创建任务运行列表。作业调度器首先从共享文件系统中获取JobClient已计算好的分片信息,然后为每个分片创建一个map任务。reduce任务数量是由JobConf的mapred.reduce.task属性决定的。
任务的分配
tasktracker运行一个简单的循环来定期发送“心跳”给jobtracker。jobtracker会为收到心跳的tasktracker分配一个任务,并使用心跳的返回值与tasktracker通信。
tasktracker有个固定数量的任务槽,默认调度器在处理reduce的任务槽之前,会填满空闲的map任务槽,因此,如果tasktracker至少有一个空闲的map任务槽,jobtracker就会为它选择一个map任务,否则选择一个reduce任务。
为了选择一个reduce任务,jobtracker会简单地从待运行的reduce任务列表中去下一个来执行,不必考虑数据的本地化。对于map任务,jobtracker会考虑tasktracker的网络位置。
任务队执行
1. 通过共享文件系统将作业的jar文件复制到tasktracker的文件系统,从而实现jar文件本地化。同时,tasktracker将应用程序所需要的全部文件从分布式缓存复制到本地。
2. tasktracker为新任务创建一个本地工作目录,并把jar文件的内容解压到该目录
3. 新建一个TaskRunner实例来运行该任务
进度和状态的更新
每个作业和它的每个任务都有一个状态,包括其状态、map或reduce的进度、作业计数器的值、消息状态。
tasktracker每个五秒发送心跳给jobtracker,报告所有任务的状态
状态更新在MapReduce中传递的流程
失败
任务失败
任务抛出异常,JVM在退出之前,向其父tasktracker发送错误报告,记入日志,tasktracker将此次task attempt记为failed,释放任务槽,运行另一个任务。
如果是JVM突然退出,那么tasktracker会注意到进程已经退出,将此次尝试标记为failed。
如果出现超时,被挂起的任务长时间不会释放它的任务槽,应避免这种设置,同时保证每个任务定期汇报进度。
tasktracker失败
jobtracker会注意到已经停止发送心跳的他上课,并将它从等待任务调度的池中移除。
如果是未完成的作业,jobtracker会安排比此tasktracker上已经运行并完成的任务重新运行,因为reduce任务无法访问。
jobtracker失败
作业注定失败
作业的调度
MapReduce有多种调度器可供选择,默认是基于队列的FIFO,还有两个用户调度器,分别名为Fail Scheduler、Capacity Scheduler
Fair Scheduler支持抢占,作业都被放在作业池中,让每个用户公平共享集群。
Capacity Scheduler:集群有许多杜列组成,每个队列有一个分配能力,每个作业内部是FIFO。
shuffle和排序
MapReduce确保每个reducer的输入都按键排序,将map输出传递给reducer的过程叫shuffle。
任务的执行
Hadoop不会尝试诊断或修复慢的任务,相反,一个任务比预期慢的时候,他会尽量检测,并启动另一相同的任务备份,这就是所谓的“推测执行”。
- 【Hadoop权威指南】MapReduce的工作机制
- 《hadoop权威指南》学习笔记-MapReduce工作机制(上)
- 笔记:Hadoop权威指南 第6章 MapReduce 的工作机制
- Hadoop权威指南学习(四)——MapReduce工作机制
- hadoop权威指南mapreduce的一个程序
- hadoop,MapReduce的工作机制
- Hadoop-MapReduce的工作机制
- 【Hadoop权威指南】关于MapReduce
- hadoop权威指南 chapter2 MapReduce
- 【Hadoop权威指南】MapReduce的类型与格式
- 笔记:Hadoop权威指南 第8章 MapReduce 的特性
- hadoop 自学指南五之MapReduce工作机制
- 《Hadoop权威指南》- 2、关于MapReduce
- Hadoop学习笔记一:MapReduce的工作机制
- hadoop 学习笔记(二)MapReduce的工作机制
- hadoop学习笔记--7.MapReduce的工作机制
- Hadoop权威指南学习(五)——MapReduce的类型和格式
- Hadoop权威指南学习(六)——MapReduce的特性
- Delphi For iOS开发指南(17):让应用程序禁止竖屏(也就是只显示横屏)
- 【java失业择业中】失业第一天:华为PM
- 【Hadoop权威指南】Hadoop分布式文件系统
- 【Hadoop权威指南】Hadoop I/O
- 使用Android Host模式与Arduino进行通信
- 【Hadoop权威指南】MapReduce的工作机制
- duplicate class bad class
- 【Hadoop权威指南】MapReduce的类型与格式
- (转)android 之摄像头
- svn: SSL negotiation failed 错误
- js模拟文件上传进度条
- dwz yii 的整合
- (转)android摄像头获取图像
- poj 2942 圆桌骑士 无向图割点 奇圈 交叉染色