1.run job 阶段。主要检查job的环境设置,包括路径的设置。比如MapperClass,FileInputFormat等。如果检测未通过,则直接报错返回。
2.如果检测通过,JobClient会向JobTracker发起请求,JobTracker为job申请一个全局唯一的id。JobClient可以根据此JobId 跟踪Job的执行进度以及Kill掉Job。
3.检测通过后,JobClient会将job的运算资源(jar包)上传到HDFS。
4.submit job。提交job。此请求传给JobTracker后,剩余的工作就由JobTracker来接手
5.6.7 JobTracker根据根文件信息,计算出切片信息(数据)。相当于获取了Map Task的任务数量和信息。此外,对于Reduce Task数量不用计算,因为通过代码设定的。
当任务信息都明确后,TaskTracker通过心跳去领取任务。底层要满足数据本地化策略,目的是减少网络数据的传输,节省集群带宽。
补充:切片(Spilt),切片里没有真正的文件数据。本质就是一个对象结构,
包含的属性:①start ②length ③path
8.TaskTracker去HDFS下载job的运算资源,结合本地的数据完整数据的计算和处理。这里体现的思想是:移动的是运算,而不是数据。目的也是:减少网络数据的传输,节省带宽。
9.10启动jvm进程,运行map任务或reduce任务。
最后的补充:Map Task在处理数据时,要保证读取完整的一行,所以这个过程不可避免的或通过网络追溯行的数据,此过程会发生网络数据传输,但是量不大。对于行的追溯处理,框架底层已经做好了,程序员不要考虑。
job任务执行流程
最新推荐文章于 2024-08-05 13:10:43 发布