Spark
Tom_coding
这个作者很懒,什么都没留下…
展开
-
Spark-core原理初步学习小结[一]
Spark-core原理初步学习小结[一]RDD Objects 阶段RDD的概念DAG Scheduler 阶段切分Stage的标准切分Stage的原因切分Stage后输出TaskScheduler 阶段Work 阶段 RDD Objects 阶段 在这个阶段主要对各个RDD进行构建(对各个规则进行定制,实现完整执行流程),生成DAG(有向无环图) DAG是有边界的:开始(通过SparkCon...转载 2018-12-19 20:26:46 · 244 阅读 · 0 评论 -
Spark Master类源码的分析——Master的主备切换过程
这篇文章主要是对Master主备切换过程的源码进行分析,分析了主备切换的详细实现流程 首先分析completeRecovery()方法: private def completeRecovery() { // Ensure "only-once" recovery semantics using a short synchronization period. //判断该Master的状态(...原创 2019-07-02 11:04:04 · 155 阅读 · 0 评论 -
Spark Master中的通信过程——launchDriver方法为例(下)
下面分析一下remote RPC 分析postToOutbox方法 从这个HashMap我们可以明白,每一个Client对应一个Outbox.因为每一个address都会有一个不同的targetOutbox 如果NettyRpcEnv处于stop状态,就接受不到我们的message了,这样我们就无法产生这个Client对应的Outbox了,于是上面代码中就在outboxes中对这个addres...原创 2019-07-08 21:02:56 · 119 阅读 · 0 评论 -
Spark Worker类的分析——Driver在Worker上的启动
Driver在Worker上的启动是依靠launchDriver方法,launchDriver方法内部会启动一个新线程创建Driver的工作目录,并且使用ProcessBuilder来启动Driver 从上面的结构图我们可以看到launchDriver主要是通过DriverRunner类内部方法对driver进行启动 我们看一下DriverRunner的start方法,在新线程中对driver进...原创 2019-07-13 15:01:22 · 261 阅读 · 0 评论 -
Spark RDD的Action执行过程源码分析——宽依赖与窄依赖stage划分以及stage的submit
通过RDD的foreach方法触发Action 调用SparkContext的runJob方法 DAGScheduler的runJob方法 DAGSchedulerEventProcessLoop接收到JobSubmitted handleJobSubmitted分析 分析调用的submitStage方法,这里只要就是对父stage的划分(宽依赖和窄依赖) 分析getMissing...原创 2019-07-15 20:57:12 · 190 阅读 · 0 评论 -
Spark Master中的通信过程——launchDriver方法为例(上)
以Spark 2.x为标准(通信框架使用Netty) org.apache.spark.deploy.master 包下的 launchDriver方法 workerInfo中的endpoint就是RpcEndpointRef对象 RpcEndpointRef是一个抽象类 在Spark1.x的时代Spark底层使用Akka进行通信的, 到了2.x就换成了更加好用的Netty框架 下面我们...原创 2019-07-06 22:35:50 · 193 阅读 · 0 评论 -
Spark RDD的Action执行过程——TaskScheduler在executor上启动task的分析
DAGScheduler中在submitMissingTasks方法中调用了TaskScheduler的submitTasks方法,作为入口我们开始分析TaskScheduler的实现类TaskSchedulerImpl 看一下传入的TaskSet的结构 每一个Stage有可能会产生多个Tasks,Tasks数量由Stage的分区数决定的 taskSet级别的信息管理 reviveOffer...原创 2019-07-16 22:36:51 · 318 阅读 · 0 评论 -
Spark RDD的Action执行过程——Executor对task的执行原理分析
当master在接收到RegisterApplication消息后会向worker发送LaunchDriver和LaunchExecutor消息来分别启动Driver和Executor。实际上这里启动Executor是指的启动CoarseGrainedExecutorBackend进程,而Executor只是CoarseGrainedExecutorBackend的内部的对象。 下面是backen...原创 2019-07-17 22:31:35 · 295 阅读 · 0 评论 -
Spark RDD的Action执行过程——Task剖析
Pool会依次执行TaskRunner 下面就分析TaskRunner中的run方法 这里调用了task的run方法 这里调用了runTask方法,这个方法是一个抽象方法,有两种实现,一个是ShuffleMapTask的实现,另一个是ResultTask的实现 首先看一下比较复杂的ShuffleMapTask 这里的注意点在于writer.write方法中的rdd.iterator()...原创 2019-07-22 21:07:54 · 264 阅读 · 0 评论