![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark内核
Quinto0
Learning is the highest
展开
-
Task执行流程
1、源码走读(1)当Driver中的SchedulerBackend(Standalone模式为CoarseGrainedSchedulerBackend)给ExecutorBackend(Standalone模式为CoarseGrainedExecutorBackend)发送LaunchTask之后,CoarseGrainedExecutorBackend在收到LaunchTask消息后,E...原创 2020-04-10 23:47:20 · 1604 阅读 · 0 评论 -
TaskScheduler相关
目录1、DAGScheduler与TaskScheduler2、TaskScheduler与SchedulerBackend3、任务调度过程总结1、DAGScheduler与TaskSchedulerDAGScheduler面向我们整个Job划分出了Stage,划分了Stage是从后往前划分的,执行的时候是从前往后,每个Stage内部有一系列任务,Stage里面的任务是并...原创 2020-04-08 23:49:44 · 968 阅读 · 0 评论 -
Stage划分和Task最佳位置
1、Job Stage划分Spark Application中因为不同的Action触发众多的Job,也就是说一个Application中可以有很多的Job,每个Job是由是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面依赖的Stage计算完毕后,后面的Stage才会运行。而Stage划分的依据就是宽依赖。下面以RDD的collect方法为例:(1...原创 2020-04-06 13:34:46 · 1287 阅读 · 0 评论 -
Spark Executor解析
目录1、Spark Executor如何工作2、Spark Executor工作源码1、Spark Executor如何工作当Driver发送过来Task的时候,其实是发送给CoarseGrainedExecutorBackend这个RPCEndpoint,而不是直接发送给Executor(Executor由于不是消息循环体永远也无法接收远程发过来的信息)。Driver向...原创 2020-04-06 01:06:40 · 1729 阅读 · 0 评论 -
Spark Worker源码
目录1、概述2、LaunchDriver3、LaunchDriver4、总结1、概述worker肯定是实现RPC通信的,否则别人没法给你发消息。他继承的是ThreadSafeRpcEndpoint,ThreadSafeRpcEndpoint是线程安全的,意味着处理一条消息完成后再处理下一个消息。换句话说,在处理下一条消息时,可以看到对ThreadSafeRpcEn...原创 2020-04-05 19:49:27 · 934 阅读 · 0 评论 -
Spark Master的注册机制与状态管理
1、Master接收注册的主要对象Master主要接受注册的对象是:Application,Driver,Worker。注意:Executor不是注册给master而是注册给Driver中的SchedulerBackend2、Master接收Worker的注册Worker启动后主动向Master注册,所以在生产环境下不需要重启集群就能够使用新的Worker。(1)worker是...原创 2020-04-05 19:32:46 · 934 阅读 · 0 评论 -
Spark资源调度分配
1、任务调度与资源调度任务调度:是指通过DAGScheduler,TaskScheduler,SchedulerBackend等进行的作业调度。资源调度:是指应用程序获取资源。任务调度是在资源调度的基础上,没有资源调度,那么任务调度就没有任何意义了。2、分配Driver(只对cluster模式有效)Spark的Driver的运行有2种模式,一种是Client模式(Driver程...原创 2020-03-31 00:20:28 · 3785 阅读 · 2 评论 -
SparkContext解析
1、SparkContext概述Spark的程序编写是基于SparkContext的,体现在2方面:①Spark编程的核心基础(RDD),第一个RDD是由SparkContext创建的;②Spark程序的调度优化也是基于SparkContext,RDD在一开始不会立即运行,会交给框架,主要是SparkContext。Spark程序的注册是在SparkContext实例化时候生成的对象来完成...原创 2020-03-31 00:00:44 · 2250 阅读 · 0 评论 -
Spark2.x RPC解析
1、概述在Spark中很多地方都涉及网络通信,比如Spark各个组件间的消息互通、用户文件与Jar包的上传、节点间的Shuffle过程、Block数据的复制与备份等。Spark 2.0 之后,master 和worker 之间完全不使用akka 通信,改用netty实现。因为使用Akka要求message发送端和接收端有相同的版本,为了避免Akka造成的版本问题,给用户的应用更大灵活性,决定使...原创 2020-03-27 23:59:29 · 1024 阅读 · 0 评论 -
Master HA源码解析
1、Master HA概述Spark在生产上做HA一般采用的是通过zookeeper的方式,配置3个master的话是比较可靠的方式。采用zookeeper做HA的话zookeeper会保存整个Spark程序运行时候的元数据(包括Workers,Drivers,Applications,Executors等信息)。采用zookeeper的数据保存方式,启动的时候会读取zookeeper中曾...原创 2020-03-27 23:38:40 · 852 阅读 · 0 评论 -
Spark shuffle
1、什么是shuffleShuffle中文翻译为“洗牌”,需要Shuffle的关键性原因是某种具有共同特征的数据需要最终汇聚到一个计算节点上进行计算。把父RDD中的KV对按照Key重新分区,从而得到一个新的RDD。也就是说原本同属于父RDD同一个分区的数据需要进入到子RDD的不同的分区。2、为什么需要shuffle在分布式计算框架中,数据本地化是一个很重要的考虑,即计算需要被分发到数据...原创 2020-03-25 23:52:24 · 1000 阅读 · 0 评论 -
Saprk排序
1、基础排序算子sortBy和sortByKey在Spark中存在两种对RDD进行排序的函数,分别是 sortBy和sortByKey函数。sortBy是对标准的RDD进行排序,它是从Spark0.9.0之后才引入的。而sortByKey函数是对PairRDD进行排序,也就是有Key和Value的RDD。下面将分别对这两个函数的实现以及使用进行说明。1.1sortBysortBy是在...原创 2020-03-25 23:38:37 · 1156 阅读 · 0 评论 -
RDD的依赖与分区
1宽依赖和窄依赖RDD从具体的依赖的角度讲,有窄依赖和宽依赖2种情况。窄依赖:指每个父RDD的一个Partition最多被子RDD的一个Partition所使用,例如map、filter等都会产生窄依赖;宽依赖:指一个父RDD的Partition会被多个子RDD的一个Partition所使用,如groupByKey,reduceByKey等操作都会产生宽依赖。总结:如果父RDD的...原创 2020-03-24 23:08:55 · 999 阅读 · 0 评论 -
RDD持久化、广播、累加器
1、持久化RDD的持久化包括两个方面:①操作RDD的时候怎么保存结果,这个部分属于action算子的部分②在实现算法的时候要进行cache、persist,还有checkpoint进行持久化。1.1 persist和cacheSpark稍微复杂一点的算法里面都会有persit的身影,因为spark默认情况下是放在内存中,比较适合高速的迭代,如一个Stage有步骤非常多,中间不会产生临时...原创 2020-03-24 22:46:21 · 780 阅读 · 0 评论 -
RDD(弹性分布式数据集)
1、什么是RDDRDD(分布式弹性数据集)是对分布式计算的抽象,代表要处理的数据,一个数据集,RDD是只读分区的集合。数据被分片,分成若干个数据分片,存储到不同的节点中,可以被并行的操作,所以叫分布式数据集。计算时优先考虑放于内存中,如果放不下把一部分放在磁盘上保存。RDD(分布式弹性数据集)是整个Spark抽象的基石,是基于工作集的应用抽象。Spark的各个子框架,Spark SQL、S...原创 2020-03-24 22:37:50 · 4958 阅读 · 0 评论 -
Spark内核架构
1、初识SparkSpark是分布式的,主要基于内存的,适合迭代计算的大数据计算框架。注意基于内存:是优先考虑将数据放到内存中,因为在内存中具有更好的数据本地性,但是如果内存放不下也会放在磁盘上,或者部分数据放在磁盘上计算。所以Spark不仅能够计算内存放的下的数据,也可以计算内存中放不下的数据(Spark的真正生产环境,如果数据大于内存,需要考虑数据的放置策略以及性能调优的技巧)。由于S...原创 2020-03-24 22:05:04 · 688 阅读 · 0 评论