job任务执行流程与分区机制
job任务执行流程
1.run job阶段
①收集整个job的环境信息(比如通过conf设定的参数,还有mapperClass,reducerClass,以及输出kv类型)
②会计算当前job的切片数量(切片不同等切块,用FileSplit:path start length)
③检测环境信息的合法性,以及输入和输出的路劲合法性。
2.如果第一步的检测通过之后,会去找JobTracker,为当前的job申请jobid,用于标识job。jobid是全局唯一的,目的是管理job,因为整个集群同一时间内可能跑多个job。
3.JobClient收到jobid,就将此job的运算资源(①conf.xml ②summary ③jar 包)
提交到HDFS上,目录路径:/tmp/hadoop-yarn/history/done_intermediate/root
conf.xml:存储的是job的环境配置信息
summary:jobid,mapTask数量和reduceTask数
jar包:程序员写的代码
4.JobClient 做submit job动作,底层是把第三步的job的资源路径信息告知给JobTracker。
5.6 去HDFS上拿取job的运算资源,然后做job的初始化,查看配置信息,以及拿到job的切片数量(本地目的是获取有几个mapTask)
7.任务的领取,底层要满足数据本地化策略,节省集群的带宽---:因为MapTask读取文件是按行读取,所以必须要保证读取的是完整一行。底层会发生一个位置追溯的动作,此过程不可避免的会发生网络数据的传输,但数据量很小。
8.去HDFS获取job 的运算资源(主要是jar包),然后结合代码来处理数据了。
这里体现了Hadoop的思想:移动的是运算,而不是数据。目的也是节省集群带宽
9.10启动JVM进程,执行MapTask或ReduceTask。
注意:MapTask任务的数量=job的切片数量
分区机制
1.一个Job的ReduceTask数量,默认就1个。
2.习惯上,把reduceTask叫做分区,即有几个reduceTask,就有几个分区。
3.Hadoop底层有一个默认的分区器(HashPartitioner),此分区器的作用可以确保相同的Mapper输出key落到同一个分区(reduceTask)里。
4.最后的结果文件数量=分区(reduceTask)数量,即每个结果文件存储的是对应分区的结果数据。
5.因为底层用的是简单hash算法,所以会产生数据倾斜,有时会产生某个结果文件数据很少或没有的情况。
6.如果最后想多个结果文件的结果合并在一起,
job任务执行流程与分区机制的更多相关文章
- Map/Reduce 工作机制分析 --- 作业的执行流程
前言 从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情. 那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易& ...
- 第九篇:Map/Reduce 工作机制分析 - 作业的执行流程
前言 从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情. 那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易& ...
- 追源索骥:透过源码看懂Flink核心框架的执行流程
li,ol.inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt, ...
- spark 源码分析之二十一 -- Task的执行流程
引言 在上两篇文章 spark 源码分析之十九 -- DAG的生成和Stage的划分 和 spark 源码分析之二十 -- Stage的提交 中剖析了Spark的DAG的生成,Stage的划分以及St ...
- 透过源码看懂Flink核心框架的执行流程
前言 Flink是大数据处理领域最近很火的一个开源的分布式.高性能的流式处理框架,其对数据的处理可以达到毫秒级别.本文以一个来自官网的WordCount例子为引,全面阐述flink的核心架构及执行流程 ...
- 一个 Spark 应用程序的完整执行流程
一个 Spark 应用程序的完整执行流程 1.编写 Spark Application 应用程序 2.打 jar 包,通过 spark-submit 提交执行 3.SparkSubmit 提交执行 4 ...
- ThinkPHP2.2框架执行流程图,ThinkPHP控制器的执行流程
ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/s ...
- PHP解释器引擎执行流程 - [ PHP内核学习 ]
catalogue . SAPI接口 . PHP CLI模式解释执行脚本流程 . PHP Zend Complile/Execute函数接口化(Hook Call架构基础) 1. SAPI接口 PHP ...
- 分享一张SQLSERVER执行流程的图片
分享一张SQLSERVER执行流程的图片 有天论坛里有人问,一时间并发连接很多,是不是可以在SSMS里配置连接池 连接池是属于客户端的,配置只能在连接字符串里配置,修改你的连接字符串,SSMS没有一个 ...
随机推荐
- servlet中请求转发获取数据等,,,
String uname= req.getParameter("uname"); 获取请求的字符串 req.setAttribute("str"," ...
- linux挂载ntfs格式的硬盘
发生了一件辣眼睛的操作,一个现场应用升级,由于跨度很大,不敢直接动,就把现场的数据库dump拿回来,在公司做写升级测试. 于是,联系现场的工程师把数据库dump导出来,放到网盘弄回来. ------- ...
- openstack之镜像管理
概览 [root@cc07 fast-pulsar]# glance help | grep image [--os-image-url OS_IMAGE_URL] [--os-image-api-v ...
- 1.3currentThread()方法
该方法可返回代码段正在被哪个线程调用的信息 package com.cky.test; /** * Created by chenkaiyang on 2017/12/2. */ public cla ...
- 笔记本真机安装centos7
突然有一天,想要装linux系统,所以就是去装,网上百度说的都很多,而且说来说去都是那几篇,大同小异,所以想通过自己本次装真机的一些经验提供给各位朋友参考一下. 一安装系统: 1先制作启动盘,用个比较 ...
- (求凹包) Bicycle Race (CF 659D) 简单题
http://codeforces.com/contest/659/problem/D Maria participates in a bicycle race. The speedway t ...
- CALayer-CAShapeLayer/CAGradientLayer
参考博客 CAShapeLayer http://blog.csdn.net/yongyinmg/article/details/38755955 CAShapeLayer和CAGradientLay ...
- Hausdorff Distance(豪斯多夫距离)
Hausdorff Distance(豪斯多夫距离) 参考博客:http://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/98/normand/ma ...
- HashMap原理、源码、实践
HashMap是一种十分常用的数据结构,作为一个应用开发人员,对其原理.实现的加深理解有助于更高效地进行数据存取.本文所用的jdk版本为1.5. 使用HashMap <Effective JAV ...
- MapReduce_架构
架构 MapReduce1.x JobTracker:JT(作业管理者) 将作业分解成一堆的任务:Task(MapTask和ReduceTask) 将任务分派给TaskTracker运行 作业的监控. ...