
Spark
文章平均质量分 86
Spark实时计算
KK架构
天道酬勤
展开
-
Spark 源码(8)- Master资源分配 源码
本地探讨一下 Spark 如何为 Worker 运行时,分配资源,并启动 Executor;这部分代码写的比较好,可以仔细阅读,提升自己的代码水平原创 2021-11-30 18:18:46 · 1625 阅读 · 0 评论 -
Spark 源码(7) - SparkContext 初始化 源码分析
一、SparkContext 初始化上次阅读到 Master 通知 Worker 启动了一个 Driver,就是启动了一个 JVM,并且开始使用反射的方式执行 DriverWrapper 的 main 方法。假设我们提交了一个 JavaWordCount 程序到集群上,其实接下来就开始执行这个方法:然后开始创建 SparkContextSparkSession spark = SparkSession.builder().appName("JavaWordCount").getOrCreate()原创 2021-11-26 10:51:42 · 1159 阅读 · 0 评论 -
Spark 源码(6) - 任务提交之 Driver 启动流程
一、Master 处理 Driver 注册消息上次阅读到客户端发送了一个 RequestSubmitDriver 消息给 Master,Master 收到消息后开始处理。在 Master 类中搜索 case RequestSubmitDriver,可以看到具体的处理逻辑:首先创建了一个 DriverInfo:val driver = createDriver(description)new DriverInfo(now, newDriverId(date), desc, date)然后把 D原创 2021-11-18 14:43:24 · 1454 阅读 · 0 评论 -
Spark 源码(5) - 从 SparkSubmit 开始看任务提交
一、SparkSubmit 提交上次我们已经说完了 Spark Standalone 的 Master 和 Worker 的启动流程,本次我们从一个提交 Spark 作业的命令开始阅读 Spark 任务提交的源码。在 Spark 客户端提交任务的流程是这样子的:./bin/spark-submit --class org.apache.spark.examples.SparkPi \--master local \--deploy-mode cluster \--driver-memory 4g原创 2021-11-08 13:10:49 · 1504 阅读 · 0 评论 -
Spark 源码(4) - Worker 启动流程源码剖析
一、Worker 启动今天来看看 Worker 的启动流程,Worker 的启动是从 Shell 脚本开始的,Shell 脚本中就是从 Worker 类的 main 方法开始执行的,所以就从 main 方法开始看。最主要的是启动了 RpcEnv 和 Endpoint,Worker 本身就是一个 Endpoint,它继承了 ThreadSafeRpcEndpoint 类。所以下一步自然是去看 Endpoint 的声明周期方法 onStart()首先创建了工作目录,就是从配置中拿到目录信息,然后创建它原创 2021-11-02 09:13:37 · 1033 阅读 · 0 评论 -
Spark 源码(3) - Master启动 - 持久化引擎和选举代理 源码阅读
一、Master 启动上回讲到,Master 的 main 方法中,创建了 RpcEnv 和 Master 的 Endpoint,紧接着就开始执行 Endpoint 的生命周期方法 onStart() 方法,今天就从这里开始。首先创建了 Master 的 Ui,也就是我们在浏览器上看到的 Master 信息:紧接着,定时给自己发送 CheckForWorkerTimeOut 消息:在 Master 类中搜索 case CheckForWorkerTimeOut,可看到如下逻辑:然后,开始创建原创 2021-10-29 10:14:32 · 823 阅读 · 0 评论 -
Spark 源码(2) - Spark Rpc 三剑客的理解
一、Spark Rpc 三剑客谈到 Spark Rpc ,不得不提到 Spark Rpc 的三剑客:RpcEnv,RpcEndpoint,RpcEndpointRef。如何理解他们呢,请看下图:精简一下发送消息的过程为:通过 RpcEndpointRef 来发送一个消息给 RpcEnv,然后经过 Dispatcher 和 Inbox 的共同处理,发送给 RpcEndpoint 来处理(当前中间的过程比较复杂!)。那什么是 Endpoint ,什么是 EndpointRef ?Endpoint 很原创 2021-09-16 21:57:28 · 247 阅读 · 0 评论 -
Spark 源码(1) - Spark 通信基石之 Spark Rpc 的发展历程
一、前言又开始更文了,前面一个多月忙了点别的事情,也给自己放了小假,修整修整,大家应该还没取关我吧,谢谢哈!这次打算开始一个新的系列,Spark 源码剖析篇,基本上会把 Spark 的各个组件内部核心源码都会讲解一遍;但更文策略有所调整,以前每篇文章3-4000字,写起来周期很长,现在换为短小精悍的风格,这样可以持续输出,动力也会更足,不会因为断更而有挫败感。嗯,闲聊了几句,进入正题,今天来聊一聊 Spark 的基本通信组件:Spark Rpc。二、Spark Rpc 的发展其实工作这么些年头,S原创 2021-09-16 21:56:27 · 180 阅读 · 0 评论 -
spark 1.6.1 源码编译过程
一、安装scala 2.10.4解压配置环境变量即可二、编译spark源码源码下载地址:http://archive.apache.org/dist/spark/spark-1.6.1/spark-1.6.1.tgz解压修改make-distribute.sh 文件,在这个位置加入以上内容:把原来的版本删掉,然后加上:VERSION=1.6.1SCALA_VERSION=2.10.4SPARK_HADOOP_VERSION=2.5.0-cdh5.3.6SPARK_HIVE=1修改p原创 2020-11-26 22:26:29 · 336 阅读 · 0 评论 -
Spark 创建 RDD 的三种方式
进行 Spark 核心编程时,首先要做的第一件事就是创建一个初始 RDD。该 RDD 中,通常就代表和包含了 Spark 应用程序的输入源数据。然后创建了初始的 RDD 之后,才可以通过 Spark Core 提供的 transformation 算子,对该 RDD 进行转换,来获取其他 RDD。Spark Core 提供了三种创建 RDD 的方式,包括:使用程序中的集合创建 RDD;...原创 2019-12-16 10:59:52 · 3165 阅读 · 0 评论