Hadoop学习笔记(一):MapReduce工作机制
来源:互联网 发布:c语言编程题库 编辑:程序博客网 时间:2024/06/07 03:49
MapReduce的运行过程如下图所示:
MapReduce的作业运行步骤如下:
1.客户端启动MapReduce程序,JobClient的runJob( )方法用于新建JobClient实例和调用submitJob( )方法。
2.JobClient通过getNewJobId( )方法向JobTracker请求一个新的作业ID。
在获得新的作业ID后,还进行了两个步骤(在图中未显示):<1>检查作业的输出说明。如果没有指定输出目录或输出目录不存在,则不提交作业,把错误返回给MapReduce程序。<2>计算作业的输入分片。如果输入分片无法计算(例如输入路径不存在),则不提交作业,把错误返回给MapReduce程序。
3.将运行作业所需要的资源(包括作业JAR文件、配置文件和计算所得的输入分片)复制到一个以作业ID命名的目录下,该目录位于JobTracker的共享文件系统中(例如:HDFS)。其中,属性mapred.submit.replication指定作业JAR文件的数量。
4.调用submitJob( )方法告知JobTracker作业准备执行。
5.JobTracker接收到submitJob( )方法调用后,把此调用放入到一个内部队列中,由作业调度器进行调度,并对其进行初始化。
6.为了创建任务运行列表,作业调度器从共享文件系统中获取JobClient已经计算好的输入分片信息,为每个分片创建一个map任务。其中,创建的reduce任务的数量由JobConf的mapred.reduce.task属性决定。
7. TaskTracker定期向JobTracker发送心跳,告知TaskTracker自身是否还存活。同时,心跳还充当两者的消息通道(比如:TaskTracker会指明它是否准备好运行新的任务)。
对于任务的分配有两点需要注意:<1> JobTracker会为TaskTracker分配任务。对于map任务和reduce任务,TaskTracker会有固定数量的任务槽。一个TaskTracker可以同时运行多个map任务和多个reduce任务。另外,如果TaskTracker有空闲的map任务槽时,JobTracker会优先选择一个map任务给它。如果map槽被填满,就选择一个reduce任务。<2> 分配map任务,JobTracker会选择距离输入分片最近的TaskTracker(网络位置最近)。距离最近的是数据本地化,即把任务分配到输入分片所在的节点上。距离次之的是机架本地化,即把任务分配到与输入分片同一机架的不同节点上。
8. 从共享文件系统把作业的JAR文件复制到TaskTracker所在的文件系统,同时TaskTracker把应用程序所需的全部文件从分布式缓存复制到本地磁盘。然后,TaskTracker为任务新建一个本地工作目录,并把JAR文件解压到该目录下。最后,Tasktracker新建一个TaskRunner。
9.TaskRunner启动一个新的子JVM。
10.子JVM运行map任务或reduce任务。
0 0
- Hadoop学习笔记(一):MapReduce工作机制
- Hadoop学习笔记一:MapReduce的工作机制
- Hadoop学习笔记(5) MapReduce工作机制
- 《hadoop权威指南》学习笔记-MapReduce工作机制(上)
- hadoop 学习笔记(二)MapReduce的工作机制
- hadoop学习笔记--7.MapReduce的工作机制
- Hadoop学习笔记-MapReduce工作原理
- hadoop知识点总结(一)hadoop架构以及mapreduce工作机制
- Hadoop回顾--MapReduce工作原理(一)
- hadoop,MapReduce的工作机制
- Hadoop-MapReduce的工作机制
- Hadoop学习笔记(一):MapReduce的输入格式
- 知识学习——Hadoop MapReduce工作机制
- Mapreduce工作机制(一)框架
- Hadoop权威指南学习(四)——MapReduce工作机制
- Hadoop学习笔记(Map-Reduce的工作、调度机制)
- Hadoop学习笔记---MapReduce
- Hadoop学习笔记---MapReduce
- 构建基于Javascript的移动web CMS——Hello,World
- svn代码冲突,不能提交的解决方法
- 创建文件大意------在此做笔记
- IOS消息推送原理
- @SessionAttributes和@ModelAttribute
- Hadoop学习笔记(一):MapReduce工作机制
- 同一个页面使用多个版本的jQuery
- Lua学习教程之 可变参数数据打包与解包
- 差分约束系统
- CSS3径向渐变色的一种
- spring3.0.5MVC ajax+json 的问题
- oracle性能监控脚本
- AMDU恢复ASM磁盘组数据(测)
- Spring和Quartz实现的定时任务调度