![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
Smart_cxr
没伞的孩子,必须努力奔跑!!
展开
-
Worker原理与源码剖析
在worker这个类中的LaunchDriver一开始就创建了DriverRunner这个类进入DriverRunner类在创建完DriverRunner这个类后会调用start()这个方法进入start()方法进入createWorkingDirectory这个方法进入downloadUserJar()方法进入LaunchDriver()方法...原创 2018-07-23 16:18:52 · 292 阅读 · 0 评论 -
Spark二次排序
package cn.spark.study.core.upgrade.applog;import java.util.List;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;i...原创 2018-08-06 13:13:16 · 247 阅读 · 0 评论 -
Spark Streaming架构原理
原创 2018-08-01 11:00:47 · 277 阅读 · 0 评论 -
Master资源调度算法原理剖析与源码分析
在Master类中的schedule方法是master的主要的资源调度的方法首先是对driver进行调度上面中的提交模式在基于YARN的两种提交模式中有介绍进入 Random.shuffle()方法,主要的功能是随机打乱集合内的元素进入到launchDriver(worker, driver)方法接下来是对Application进行调度Application的调...原创 2018-07-23 11:24:23 · 908 阅读 · 1 评论 -
Master注册机制与源码剖析
Application的注册源码进入createApplication进入registerApplication方法 接下来是Master状态改变处理的机制源码分析(DriverStateChanged)进入removeDriver()方法接下来是ExecutorStateChanged...原创 2018-07-22 20:11:58 · 202 阅读 · 0 评论 -
Master主备切换原理和源码剖析
completeRecovery()方法,主要就是完成Master的恢复将Application和Worker,过滤出来目前状态还是UNKNOWN然后遍历,分别调用removeWorker和finishApplication方法,对可能已经出故障,或者已经死掉的Application和Worker进行清理进入removeWorker方法进入finishApplicat...原创 2018-07-22 16:00:22 · 638 阅读 · 0 评论 -
SparkContext源码分析
SparkContext初始化的时候会创建taskScheduler进入createTaskScheduler方法有spark-submit的三种提交模式:这是我们常用的standdlone提交模式,在这种模式下会创建一个TaskSchedulerImpl,也会创建一个SparkDeploySchedulerBackend()并将scheduler传入进去,然后...原创 2018-07-22 13:35:55 · 317 阅读 · 0 评论 -
基于YARN的两种提交模式
yarn-cluster提交模式:1,spark-submit提交,发送请求到ResourceManager请求启动ApplicationMaster;2,ResourceManager分配container在某个nodemanager上,启动ApplicationMaster(相当于Driver);3,ApplicationMaster找到ResourceManager,进行反注...原创 2018-07-22 09:10:24 · 770 阅读 · 0 评论 -
宽依赖和窄依赖
窄依赖:一个RDD,对它的父RDD,只有简单的一对一的依赖关系。也就是说,每个RDD的partition,仅仅依赖于父RDD中的一个partition。父RDD和子RDD的partition之间的关系是一对一的。宽依赖:本质就是Shuffle,就是每一个父RDD的partition中的数据,都可能会传输一部分,到下一个RDD的每个partition中。此时就会出现,父RDD和子RDD的pa...原创 2018-07-22 08:54:42 · 430 阅读 · 0 评论 -
Spark内核架构深度剖析
1,通过spark-submit提交编写好的Spark程序,这时候spark会通过反射的方式,创建和构造一个DriverActor进程出来。2,Driver进程会执行我们的Application应用程序,在代码中SparkContext在初始化的时候会构造出来DAGScheduler和Task Scheduler,3,应用程序每执行到一个action就会创建一个job,job会提交给D...原创 2018-07-21 20:16:12 · 369 阅读 · 0 评论 -
Spark架构原理
1,编写的Spark程序在Driver上由Driver进程执行,Driver进程启动后,就会做一些初始化操作,在这个操作过程中就会发送请求到Master上,进行Spark应用程序的注册,就是让master知道有一个新的spark应用程序要运行。2,Master接收到Driver的注册请求就开始资源调度和分配,交给Woker进行计算。3,Worker接收到Master的请求之后,会...原创 2018-07-21 16:48:21 · 240 阅读 · 0 评论 -
Shuffle操作的原理与源码分析
普通的shuffle操作第一个特点, 在Spark早期版本中,那个bucket缓存是非常非常重要的,因为需要将一个ShuffleMapTask所有的数据都写入内存缓存之后,才会刷新到磁盘。但是这就有一个问题,如果map side数据过多,那么很容易造成内存溢出。所以spark在新版本中,优化了,默认那个内存缓存是100kb,然后呢,写入一点数据达到了刷新到磁盘的阈值之后,就会将数...原创 2018-07-25 16:05:13 · 500 阅读 · 0 评论 -
Task原理源码分析
在Executor类中的TaskRunner是执行Task的入口进入updateDependencies()函数进入Task类中的run()方法在上面的Task的run方法中,调用了抽象方法,runTask(),那就意味着关键的操作都要依赖于子类的实现,Task的子类ShuffleMapTask,ResultTask,要运行它们的runTask,才能执行我们自定义的算子...原创 2018-07-24 20:10:28 · 564 阅读 · 0 评论 -
Executor的原理
原创 2018-07-24 15:28:51 · 319 阅读 · 0 评论 -
TaskScheduler原理与源码分析
接DAGScheduler源码分析stage划分算法,task最佳位置计算算法taskScheduler的submitTask()方法在TaskScheduler类中①在SparkContext源码分析中,会创建TaskScheduler的时候,会创建一个SparkDeploySchedulerBackend,这里的backend就是之前创建好了的SparkDeploySchedule...原创 2018-07-24 14:40:03 · 507 阅读 · 0 评论 -
DAGScheduler源码分析stage划分算法,task最佳位置计算算法
在DAGScheduler类中的HandleJobSubmitted是job调度的核心入口进入了newStage()方法它会创建一个stage对象进入submitStage()方法进入getMissingParentStages方法()进入submitWaitingStages()方法stage划分算法总结1,从finalStage倒推2,通过宽...原创 2018-07-24 10:33:10 · 461 阅读 · 0 评论 -
Spark RDD及编程接口
1.介绍对于一个Spark程序而言,一般情况下RDD操作之间的关系图如下所示,经过输入(创建)操作,转换操作,输出操作(action操作)来完成一个作业。2.Spark RDDRDD是弹性分布式数据集,即一个RDD代表了一个被分区的只读数据集,RDD可以通过两种方式生成,一种是来自内部或者外部的存储系统,另一种是通过转换操作(transform)来自其他的RDD,比如Map、fil...原创 2019-03-19 22:11:27 · 701 阅读 · 0 评论