【hadoop】map reduce任务提交后系统干嘛了
来源:互联网 发布:linux cpu使用率过高 编辑:程序博客网 时间:2024/05/18 17:01
1、 文件上传
DFSClient向JobTracker提交任务之前,会将任务运行所需要的文件放入HDFS,从而可被JobTracker和TaskTracker得到:一般有执行文件,配置文件,input数据等
当Map-Reduce程序停在JobTracker.submitJob函数中的时候,让我们查看HDFS中有如下的变化:
bin/hadoop fs -ls /data/hadoopdir/tmp/mapred/system
其中多了一个文件夹job_201011202025_0001,这是当前运行的Job的ID,在这个文件夹中有我们传上去的文件。(路径可以设置,这个路径是用来保存客户端传上来的临时文件的)
jobtracker根据用户提交的信息,得到jobid,用户组及判断权限,另外将job的信息写到hdfs上,以便tasktracker能够访问。
2、 任务拆分
在JobTracker.submitJob的函数中,会读取这些上传到HDFS的文件,从而将Job拆分成Map Task和Reduce Task。
然后再调用addJob()方法,方法中会将job加入到jobs队列中,job队列采用了map数据结构,
Map<JobID,JobInProgress> jobs = new TreeMap<JobID, JobInProgress>();
可以很方便的通过jobid找到该job相应的JobInProgress对象。同时也会加入到JobInProgressListener类中,此类主要是用来监听job的类。完成后,最后将返回job的状态。
当 TaskTracker通过heartbeat向JobTracker请求一个Map Task或者Reduce Task来运行。
3、 任务本地化
tasktracker开始去获取一个task,获取task是通过FairScheduler实现的。FairScheduler是hadoop中的作业公平调度器,主要是解决当TT发送心跳告诉JT当前的空闲slots时,希望JT分配给TT相应多个task,让TT去执行这些task。所以JT就需要一个调度器来对作业进行调度,选择出作业,然后将作业的task分配TT去执行。而hadoop中的task可以分为map,reduce,jobsetup,jobcleanup,taskcleanup这五种task。更多细节请参见:FairScheduler(公平调度器)的源码阅读
当TaskTracker得到一个Task的时候,它会调用TaskTracker.localizeJob将job运行的三个文件从HDFS中拷贝到本地文件夹,然后调用TaskInProgress.localizeTask创建Task运行的本地工作目录。
程序停在做完localizeTask后,tasktracker上的/data/hadoopdir/tmp/mapred/local/taskTracker/jobcache下多了一个文件夹job_201011202025_00014、 执行
接下来要创建Child JVM来执行Task5、 reduce
Reduce Task包括三个过程:copy,sort,reduce拷贝过程即将所有的map结果复制到reduce task的本地
在拷贝的过程中,有一个背后的线程会对已经拷贝到本地的map.out进行预先的合并,形成map.merged文件,合并的规则是按照 io.sort.factor来进行合并,对于我们的配置就是两两合并,下面我们看到的就是map_2.out和map_3.out合并成 map_3.out.merged,在另外两个还没有合并的时候,拷贝过程结束了,则背后的合并进程也就结束了。
reduce的过程就是循环调用reducer的reduce函数,将结果输出到HDFS中。
- 【hadoop】map reduce任务提交后系统干嘛了
- 远程提交Map/Reduce任务
- 远程提交Map/Reduce任务
- Hadoop Map Reduce Task默认任务数调优
- Hadoop的map任务和reduce任务的数量
- Hadoop跑map-reduce任务时停滞不前的问题
- 如何控制hadoop中map和reduce任务的数量
- hadoop的map和reduce任务的执行步骤
- hadoop节点运行的reduce和map任务数
- 如何在Hadoop中控制Map&Reduce任务的数量
- hadoop提交任务后日志存放问题
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- ios 调试技巧收藏 一 解决EXC_BAD_ACCESS错误的一种方法--NSZombieEnabled
- 445 - Marvelous Mazes
- UVaOJ 488 - Triangle Wave
- 488 - Triangle Wave
- 489 - Hangman Judge
- 【hadoop】map reduce任务提交后系统干嘛了
- ios 调试技巧收藏二 lldb命令
- Spring事务配置的五种方式
- 694 - The Collatz Sequence
- winform安装项目、安装包的制作、部署
- MMC/SD卡驱动实例开发讲解(一)
- 457 - Linear Cellular Automata
- 401 - Palindromes
- javascript 构造函数方式 对象