![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark深入学习
文章平均质量分 71
发布了一场Chat
终生学习,热爱技术
展开
-
SparkContext原理分析与源码分析
①SparkContext的运行原理原创 2018-05-09 21:41:11 · 586 阅读 · 0 评论 -
Spark Shuffle原理与源码解析
1、普通的shuffle过程①假设节点上有2个ShuffleMapTask,节点上有2个cup core②ShuffleMapTask的输出,称为shuffle过程的第一个rdd,即MapPartitionRDD③每个ShuffleMapTask会为每一个task创建一份bucket内存缓存,以及对应的ShuffleBlockFile磁盘文件④ShuffleMapTask输出结束后,封装输出数据信...原创 2018-05-23 19:46:20 · 2135 阅读 · 1 评论 -
Spark DAGSchduler stage划分原理与源码解析
①stage划分的算法的原理DAGSchduler对stage的划分,从出发action操作开始,往前倒推。首先会为最后一个rdd创建一个stage,往前倒推的过程中如果rdd之间存在宽依赖又创建一个新的stage,之前的最后一个rdd就是最新的stage的最后一个rdd ,以此类推,根据窄依赖和宽依赖判断,直到所有rdd遍历完成为止。②stage划分源码解析DAGSchduler.scala ...原创 2018-05-17 16:18:23 · 1051 阅读 · 0 评论 -
Spark Checkpoint原理与源码分析
1、Checkpoint的应用场景 Checkpoint,是Spark提供的一个比较高级的功能。有的时候啊,比如说,我们的Spark应用程序,特别的复杂,然后呢,从初始的RDD开始,到最后整个应用程序完成,有非常多的步骤,比如超过20个transformation操作。而且呢,整个应用运行的时间也特别长,比如通常要运行1~5个小时。 在上述情况下,就比较适合使用chec...原创 2018-06-02 17:33:54 · 1311 阅读 · 1 评论 -
Spark Task原理与源码分析
① task的原理示意图②task源码分析Executor.scala /** * 这里就是task运行的工作原理 */ class TaskRunner( execBackend: ExecutorBackend, val taskId: Long, val attemptNumber: Int, taskName: Stri...原创 2018-05-22 12:50:49 · 776 阅读 · 0 评论 -
Spark Job触发流程原理与源码解析
spark触发job的流程示意图:通过对wordcount案例解析,来分析spark job的触发流程。wordcount代码如下var linesRDD= sc.textFile('hdfs://')var wordsRDD = linesRDD.flatMap(line => line.split(" "))var pairsRDD = wordsRDD.map(word =>...原创 2018-05-15 18:34:18 · 301 阅读 · 0 评论 -
Spark基于Yarn的两种提交模式
①spark on yarn-cluster模式②spark on yarn-client提交模式一般,spark on yarn-client在测试的时候使用,dirver运行在客户端,负责调度application。yarn-client模式下,driver在本地启动,全权负责所有任务调度,即在yarn集群上与多个executor通信(task启动消息、task统计消息、tas...原创 2018-05-08 09:54:59 · 599 阅读 · 3 评论 -
Spark Worker启动服务原理与源码解析
①启动driver服务源码分析Worker.scala case LaunchDriver(driverId, driverDesc) => logInfo(s"Asked to launch driver $driverId") val driver = new DriverRunner( conf, driverId, ...原创 2018-05-14 19:50:31 · 225 阅读 · 0 评论 -
Spark CacheManager原理与源码分析
1、CacheManager在计算中位置与原理示意图2、源码解析RDD.scala final def iterator(split: Partition, context: TaskContext): Iterator[T] = { // storageLevel 不等于 NONE, 说明之前的RDD持久化过 if (storageLevel != StorageLevel.N...原创 2018-05-25 09:54:09 · 647 阅读 · 0 评论 -
spark rdd之间的宽依赖和窄依赖
①task从hdfs读取数据到linesRDD中,同一批task对linesRDD进行flatMap操作;②继续对wordsRDD做map操作,记录单词次数③这个地方会划分一个stage,新的一批task会提交到executor上,对pairs RDD做reduceByKey操作窄依赖(narrow dependency):每一个父RDD的Partition最多被子RDD的一个Partition使...原创 2018-05-07 11:55:35 · 519 阅读 · 0 评论 -
Spark Executor原理与源码解析
①Executor原理示意图②Executor源码解析CoarseGrainedExecutorBackend.scala override def onStart() { logInfo("Connecting to driver: " + driverUrl) rpcEnv.asyncSetupEndpointRefByURI(driverUrl).flatMap { ref...原创 2018-05-20 09:58:47 · 671 阅读 · 0 评论 -
spark内核架构上的程序执行流程
对于spark程序开发,除了对spark程序熟练编程,向高手进阶,了解spark内核源码是承上启下的一个阶段。下面是spark程序执行流程图。后续文字会对每一个阶段以及重要的知识点,做深入分析,从源码层面更深入了解原理。...原创 2018-05-07 10:10:24 · 165 阅读 · 0 评论 -
Spark Master资源调度算算法源码分析
Master.scala的核心方法private def schedule(): Unit = { // 对master状态判断,是否为ALIVE,因为standby是不会进行资源调度的 if (state != RecoveryState.ALIVE) { return } // Drivers take strict precedence over ...原创 2018-05-12 18:10:03 · 445 阅读 · 0 评论 -
Spark Master状态改变处理机制源码分析
①driver的状态改变case DriverStateChanged(driverId, state, exception) => state match { // 如果driver的状态为错误、完成、杀掉、失败,就移除 case DriverState.ERROR | DriverState.FINISHED | DriverState.K...原创 2018-05-12 16:42:45 · 307 阅读 · 0 评论 -
Spark TaskSchduler任务分配源码解析
在DAGSchduler.scala中,封装taskset,使用TaskSchduler提交了taskset,下面通过源码解析,TaskSchduler对task分配到executor和本地化级别。TaskSchdulerImpl.scala/** * taskSchduler 提交taskset的入口 */ override def submitTasks(taskSet: ...原创 2018-05-18 18:13:25 · 484 阅读 · 0 评论 -
Spark Master的注册机制原理与源码分析
Master的注册原理,如下图原创 2018-05-11 20:18:48 · 226 阅读 · 0 评论 -
Spark Master主备切换原理与源码分析
standalone模式下的master可以有两个,而且支持主备切换,即当Active Master不能工作时,将Standby Master切换为Active Master。Spark Master切换有两种机制,一种是基于文件系统的如HDFS,需要手动切换、另一种是基于Zookeeper,动态切换。一下图是主备切换是做的操作流程。...原创 2018-05-10 15:35:14 · 449 阅读 · 0 评论 -
Spark BlockManager原理与源码分析
1、BlockManager原理示意图①Driver上的BlockManagerMaster管理各个节点上BlockManager的元数据信息和维护block的状态信息。②每个节点上BlockManager的每个组件: DiskStore:负责磁盘上的数据读写 MemoryStore: 负责内存中的数据读写 BlockManagerWorker: 负责远程...原创 2018-05-24 17:07:42 · 2413 阅读 · 0 评论