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没有一个 ...
随机推荐
- 2019.01.16 bzoj3526: [Poi2014]Card(线段树)
传送门 线段树菜题. 题意:有一些卡牌,正反各有一个数,你可以任意翻转,每次操作会将两张卡牌的位置调换,你需要在每次操作后回答以现在的卡牌顺序能否通过反转形成一个单调不降的序列. 思路: 对于一个线段 ...
- POSTMAN 数据关联
概述 在使用postman测试接口是,我们可能需要先获取一个token,然后再将这个token发送到第二个请求.这个需要做postman的关联,一次性完成这两个测试. 实现方法 1.编写两个控制器方法 ...
- #pragma warning(disable 4786)
#pragma warning(disable 4786) 此warning产生的原因是因为标识符过长,超过了最大限定255个字符类名超过了255个字符,使用时就会报4786的waring. 在使用S ...
- openstack的网络、子网、端口的关系
network network 是一个隔离的二层广播域.Neutron 支持多种类型的 network,包括 local, flat, VLAN, VxLAN 和 GRE. locallocal 网络 ...
- for循环添加的闭包问题
function test(){ var arr = []; for (var i=0;i;i++){ arr[i] = function(){ console.log(i); } } return ...
- c3p0使用
c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> ...
- Web墨卡托坐标与WGS84坐标互转
原文地址:http://bbs.esrichina-bj.cn/ESRI/thread-78245-1-1.html 在WebGIS的开发中经常用到的地图投影为Web墨卡托和WGS84,故歌地图,bi ...
- (最短路)Silver Cow Party --POJ--3268
题目链接: http://poj.org/problem?id=3268 题意: 先求出所有牛到x的最短路,再求出x到所有牛的最短路,两者相加取最大值(单向图)(可以用迪杰斯特拉,SPFA) 迪杰斯特 ...
- noip第2课资料
- POJ3320 Jessica's Reading Problem 2017-05-25 19:55 38人阅读 评论(0) 收藏
Jessica's Reading Problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12346 Accep ...