首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
【Spark2.0源码学习】-1.概述
】的更多相关文章
【Spark2.0源码学习】-1.概述
Spark作为当前主流的分布式计算框架,其高效性.通用性.易用性使其得到广泛的关注,本系列博客不会介绍其原理.安装与使用相关知识,将会从源码角度进行深度分析,理解其背后的设计精髓,以便后续在Spark使用以及设计类似产品提供相关经验,下面开始进入正题. 本系列博客将从集群各端点的设计原理.通信方式.启动流程,以及用户任务提交后,任务的集群加载.分解.调度的方式两个方面进行解读. 首先,从脚本开始 详见<[Spark2.0源码学习]-2.一切从…
spark2.0源码学习
[Spark2.0源码学习]-1.概述 [Spark2.0源码学习]-2.一切从脚本说起 [Spark2.0源码学习]-3.Endpoint模型介绍 [Spark2.0源码学习]-4.Master启动 [Spark2.0源码学习]-5.Worker启动 [Spark2.0源码学习]-6.Client启动 [Spark2.0源码学习]-7.Driver与DriverRunner [Spark2.0源码学习]-8.SparkContext与Application介绍 [Spark2.0源码学习]-9…
【Spark2.0源码学习】-2.一切从脚本说起
从脚本说起 在看源码之前,我们一般会看相关脚本了解其初始化信息以及Bootstrap类,Spark也不例外,而Spark我们启动三端使用的脚本如下: %SPARK_HOME%/sbin/start-master.sh %SPARK_HOME%/sbin/start-slaves.sh %SPARK_HOME%/sbin/start-all.sh %SPARK_HOME%/bin/spark-submit 三端启动脚本中对于公共处理部分进行抽取为独立的脚本,如下: …
【Spark2.0源码学习】-3.Endpoint模型介绍
Spark作为分布式计算框架,多个节点的设计与相互通信模式是其重要的组成部分. 一.组件概览 对源码分析,对于设计思路理解如下: RpcEndpoint:RPC端点 ,Spark针对于每个节点(Client/Master/Worker)都称之一个Rpc端点 ,且都实现RpcEndpoint接口,内部根据不同端点的需求设计不同的消息和不同的业务处理,如果需要发送/询问则调用Dispacher RpcEnv:RPC上下文环境,每个Rpc端点运行时依赖的上…
【Spark2.0源码学习】-6.Client启动
Client作为Endpoint的具体实例,下面我们介绍一下Client启动以及OnStart指令后的额外工作 一.脚本概览 下面是一个举例: /opt/jdk1..0_79/bin/java -cp /opt/spark-/conf/:/opt/spark-/jars/*:/opt/hadoop-2.6.4/etc/hadoop/ -Xmx1g -XX:MaxPermSize=256m org.apache.spark.deploy.SparkSubmit --master spar…
【Spark2.0源码学习】-4.Master启动
Master作为Endpoint的具体实例,下面我们介绍一下Master启动以及OnStart指令后的相关工作 一.脚本概览 下面是一个举例: /opt/jdk1..0_79/bin/java -cp /opt/spark-/conf/:/opt/spark-/jars/*:/opt/hadoop-2.6.4/etc/hadoop/ -Xmx1g -XX:MaxPermSize=256m org.apache.spark.deploy.master.Master --ho…
【Spark2.0源码学习】-5.Worker启动
Worker作为Endpoint的具体实例,下面我们介绍一下Worker启动以及OnStart指令后的额外工作 一.脚本概览 下面是一个举例: /opt/jdk1..0_79/bin/java -cp /opt/spark-/conf/:/opt/spark-/jars/*:/opt/hadoop-2.6.4/etc/hadoop/ -Xmx1g -XX:MaxPermSize=256m org.apache.spark.deploy.worker.Worker --we…
【Spark2.0源码学习】-9.Job提交与Task的拆分
在前面的章节Client的加载中,Spark的DriverRunner已开始执行用户任务类(比如:org.apache.spark.examples.SparkPi),下面我们开始针对于用户任务类(或者任务代码)进行分析 一.整体预览 基于上篇图做了扩展,增加任务执行的相关交互 Code:指的用户编写的代码 RDD:弹性分布式数据集,用户编码根据SparkContext与RDD的api能够很好的将Code转化为RDD数据结构(下文将做转化细节介绍)…
【Spark2.0源码学习】-10.Task执行与回馈
通过上一节内容,DriverEndpoint最终生成多个可执行的TaskDescription对象,并向各个ExecutorEndpoint发送LaunchTask指令,本节内容将关注ExecutorEndpoint如何处理LaunchTask指令,处理完成后如何回馈给DriverEndpoint,以及整个job最终如何多次调度直至结束. 一.Task的执行流程 承接上一节内容,Executor接受LaunchTask指令后,开启一个新线程TaskRunner解析RDD,…
【Spark2.0源码学习】-7.Driver与DriverRunner
承接上一节内容,Client向Master发起RequestSubmitDriver请求,Master将DriverInfo添加待调度列表中(waitingDrivers),下面针对于Driver进一步梳理 一.Master对Driver资源分配 大致流程如下: waitingDrivers与aliveWorkers进行资源匹配, 在waitingDrivers循环内,轮询所有aliveWorker 如果aliveWorker满足当前waitingD…