自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Spark RPC接口和Scala Actor简介

Spark1.6之前中使用的分布式多线程框架,是Akka。Akka也实现了类似Scala Actor的模型。spark1.4标准化这套接口为了能够实现基于其他技术的rpc方案,并且最终也是这么做的,在spark1.6版本中rpc的默认实现由基于akka的actor转变为基于netty,解决了实际项目中可能存在的akka版本问题。Scala的Actor类似于Java中的多线程编程。但是不同的是,Sc...

2018-06-12 21:00:30 921

原创 Task原理和源码

一、Executor原理1、Executor接收到LaunchTask消息后,会在TaskRunner中运行一些准备操作,比如反序列化Task、通过网络拉取需要的文件或jar包等;2、运行task的run方法或者说是runTask方法,这个方法内部最核心的就是调用RDD的iterator()方法,在这里,就会针对RDD的partition执行我们自定义的函数(算子)3、接下来分两种,Shuffle...

2018-06-11 22:55:30 801

原创 Executor原理

Master在接收到Application的注册请求后,会去资源调度,为这个Application,根据配置,在worker上启动相应的Executor。那么Executor怎么启动,在剖析worker的时候已经了解过,worker用了一个executorRunner把executor这个进程启动起来,这个时候Executor会立刻向Driver反向注册。worker的executorRunner...

2018-06-11 20:49:29 591

原创 TaskScheduler分配算法和源码

TaskScheduler是一个trait,这里以standalone模式下的TaskSchedulerImpl来分析。上面文章最后说,DAGScheduler把stage中的task封装成TaskSet,调用TaskSchedulerImpl的submitTasks方法。我们就从这个方法着手来分析TaskSchedulerImpl,这个方法可以理解为提交任务的入口。override def su...

2018-06-10 23:02:39 591

原创 DAGScheduler学习笔记

一、stage划分算法先介绍stage的划分算法,会从出发action操作的那个rdd开始往前倒推,首先会为最后一个rdd创建一个stage,然后往前倒推,如果发现某个rdd是宽依赖,那么就会将宽依赖的那个rdd创建一个新的stage,那个rdd就是新的stage的最后一个rdd,然后依次类推,根据宽依赖和窄依赖,进行stage划分,直至所有rdd遍历完。二、stage划分算法源码分析(非常重要)...

2018-06-10 22:13:57 211

原创 以wordCount程序分析job触发流程原理和源码

先粘上wordCount代码:val lines = sc.textFile()val words = lines.flatMap(line => line.split(" "))val pairs = words.map(word => (word, 1))val counts = pairs.reduceByKey(_ + _)counts.foreach(count => ...

2018-06-10 20:41:07 416

原创 Worker启动Driver和Executor原理

2018-06-10 14:54:20 410

原创 资源调度机制源码分析(schedule方法,两种调度算法)

sparkContext初始化后会注册Application,然后会调用schedule方法,如何为Application在worker上启动Executor,Executor启动后,DAGScheduler和TaskScheduler才能分配task给Executor来进行计算。所以schedule是把整个流程窜起来的重点。private def schedule(): Unit = { /...

2018-06-10 14:46:44 1422

原创 Master注册机制笔记

Driver Application Worker三者需要向Master注册。Worker在启动后,就会主动向Master注册Master收到后,将状态为DEAD的Worker过滤掉,对于状态UnKnown的Worker,清理掉旧信息,替换为新的Worker信息把Worker加入内存缓存中(HashMap)用持久化引擎,将worker信息持久化(文件系统或zookeeper)调用schedule(...

2018-06-10 13:57:57 239

原创 SparkContext源码阅读笔记

SparkContext初始化主要就干了三件事:创建TaskScheduler、DAGSCheduler、SparkUI,看看源码中是怎样实现的。一、TaskScheduler结合上编blog,TaskScheduler初始化主要涉及三个组件或对象,TaskSchedulerImpl、StandaloneScheduleBackend、SchedulePool。1、从主构造函数中可以看到,调用了c...

2018-06-10 13:25:19 200

原创 SparkContext初始化原理剖析

SparkContext初始化主要就干了三件事:创建TaskScheduler、DAGSCheduler、SparkUI一、TaskScheduler的初始化机制1、首先创建TaskScheduler,调createTaskScheduler()2、这里会做三件事情:1、创建TaskSchedulerImpl(这个就是我们平时说的TaskScheduler)2、创建SparkDeploySched...

2018-06-10 10:20:29 510

原创 yarn-cluster和yarn-client模式剖析

之前以standalone模式剖析过spark程序的执行流程,这里来剖析下其他两种模式(yarn-cluster和yarn-client)的区别。一般yarn-client用于测试环境调试程序;yarn-cluster用于生产环境。看完下面的剖析就明白为什么。一、yarn-cluster与standalone模式不同,yarn-cluster是基于yarn集群,yarn集群上有ResourceMa...

2018-06-09 22:17:12 13469 3

原创 宽依赖与窄依赖

1、宽依赖英文全名:ShuffleDependency。本质如其名,就是Shuffle。每一个父RDD的partition中的数据,都可能会传输一部分,到下一个RDD的partition中,此时会出现,父RDD和子RDD的partition之间,具有交错复杂的关系。那么这两个RDD之间就是宽依赖,他们之间发生的操作是Shuffle。以wordCount程序为例子,就是reduceBykey(_+_...

2018-06-09 21:18:09 1188

原创 spark内核架构剖析--Application执行过程

spark内核架构剖析--Application执行过程

2018-06-09 13:50:21 617

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除