Spark源码剖析与调优
文章平均质量分 64
阅读Spark源码的一些笔记与调优介绍,欢迎指教
不清不慎
热爱编程,热爱生活。
展开
-
Spark源码解读之Shuffle计算引擎剖析
Shuffle是Spark计算引擎的关键所在,是必须经历的一个阶段,在前面的文章中,我们剖析了Shuffle的原理以及Map阶段结果的输出与Reduce阶段结果如何读取。该篇文章是对前面两篇文章【Spark源码解读之Shuffle原理剖析与源码分析】【Spark存储机制源码剖析】细节的深入探究。了解Shuffle原理的读者都知道,整个Shuffle过程被划分为map和reduce阶段,在S...原创 2019-06-16 20:08:21 · 529 阅读 · 0 评论 -
Spark SQL源码剖析之SqlParser解析
在使用Spark的过程中,由于Scala语法复杂,而且更多的人越来越倾向使用SQL,将复杂的问题简单化处理,避免编写大量复杂的逻辑代码,所以我们想是不是可以开发一款类似Hive的工具,将其思想也应用在Spark之上,建立SQL来处理一些离线计算场景,由于Spark SQL应用而生。在本篇文章中,我们准备深入源码了解Spark SQL的内核组件以及其工作原理。熟悉Spark的读者都知道,当我们调用...原创 2019-06-04 00:18:01 · 3244 阅读 · 0 评论 -
Spark Streaming执行流程源码剖析
一、StreamingContext初始化过程在Spark Streaming中使用StreamingContext来操作DStream,这也好比Spark Core中SparkContext对于RDD,DStream可以说是RDD的又一层封装,作用于DStream上的Operation可以大概分为以下两类:Transformation转换操作。Output表示输出结果,主要有print,...原创 2018-10-06 11:25:22 · 2259 阅读 · 0 评论 -
Spark持久化以及checkpoint剖析
在Spark 的持久化使用中,我们会将一些经常使用到的数据进行持久化,比如使用cache()或者persist()方法进行持久化操作,但是当某个节点或者executor挂掉之后,持久化的数据会丢失,因为我们的数据是保存在内存当中的,这时就会重新计算RDD,如果某个之前的RDD需要大量的计算时间,这时将会浪费很多时间,因此,我们有时候需要使用checkpoint操作来将一些数据持久化可容错文件系统中...原创 2018-09-06 11:35:50 · 610 阅读 · 0 评论 -
Spark存储机制源码剖析
一、Shuffle结果的写入和读取通过之前的文章Spark源码解读之Shuffle原理剖析与源码分析我们知道,一个Shuffle操作被DAGScheduler划分为两个stage,第一个stage是ShuffleMapTask,第二个是ResultTask。ShuffleMapTask会产生临时计算结果,这些数据会被ResultTask作为输入而读取。那么ShuffleMapTask的计算结果...原创 2018-10-02 19:55:05 · 990 阅读 · 0 评论 -
Spark内核架构流程深度剖析
最近一直在研究Spark,也自己练习做了几个项目,对于Spark这个框架特别的喜爱,尤其是其一站式的大数据解决方案,而且也对Spark MLlib中的机器学习算法很感兴趣,也学习过一段时间。但是在自己空闲下来回想,对于Spark的理解自己仅仅只是停留在表层,如果只是使用API来编写Spark程序,那么无疑将Spark与其他普通的框架混为一谈,发挥不了其作用,根本谈不上说熟悉Spark。因此,...原创 2018-07-25 16:12:25 · 2920 阅读 · 1 评论 -
Spark源码解读之SparkContext剖析
最近一直在研究Spark,也自己练习做了几个项目,对于Spark这个框架特别的喜爱,尤其是其一站式的大数据解决方案,而且也对Spark MLlib中的机器学习算法很感兴趣,也学习过一段时间。但是在自己空闲下来回想,对于Spark的理解自己仅仅只是停留在表层,如果只是使用API来编写Spark程序,那么无疑将Spark与其他普通的框架混为一谈,发挥不了其作用,根本谈不上说熟悉Spark。因此,...原创 2018-07-26 16:17:22 · 2081 阅读 · 1 评论 -
Spark源码解读之Master剖析
在上篇文章中我们剖析了SparkContext创建启动的整个流程,但是在创建SparkContext之后,TaskScheduler是如何向master注册application,以及master是如何调度worker启动的?带着这些问题我们来看看master的内部构造。首先我们从下面这四个方面来深入Master源码来探究:主备切换切换机制注册机制状态改变机制资源调度机制(两种资源...原创 2018-07-27 13:57:42 · 603 阅读 · 0 评论 -
Spark源码解读之Worker剖析
在上一篇中我们剖析了Master的工作原理,这节我们接着来剖析Worker的工作员原理,Worker主要包括两部分的工作,启动Executor和启动Driver,然后向Master发送注册启动消息。下面是Worker的工作流程图: 在Application向Master注册之后,Master会发出命令启动Wroker,在Worker节点启动之后,它会调动内部的两个方法LaunchDriv...原创 2018-07-28 12:49:37 · 520 阅读 · 0 评论 -
Spark源码分析之DAGScheduler详解
在前面的几节中,主要介绍了SparkContext的启动初始化过程,包括Driver的启动,向Master的注册,Master启动 Worker,在Worker中启动Executor,以及Worker向Master的注册,在讲述完这些之后,所有的准备工作都已经做完,就开始真正执行我们的Application,首先它会提交job到DAGScheduler中执行,包括对于job的stage划分,还有t...原创 2018-07-31 17:14:36 · 1417 阅读 · 0 评论 -
Spark源码解读之TaskScheduler剖析
在前面的一篇文章中介绍了stage的划分算法以及task对应的partition的最佳位置计算算法。在DAGScheduler中将stage划分好之后,然后TaskScheduler会将taskSet中的task提交到executor中去执行,那么TaskScheduler是怎么样将task提交到executor中执行,又是如何如何分配executor的呢?本篇主要围绕TaskScheduler的...原创 2018-08-02 21:13:55 · 760 阅读 · 0 评论 -
Spark源码解读之Executor以及Task工作原理剖析
前一篇文章中主要讲述了TaskScheduler发送TaskSet中的task到executor中执行,那么,本篇文章接着上文的讲述看看executor的工作原理以及task是如何执行的。首先来看看executor的工作流程:executor会启动一个后台进程CoarseGrainedExecutorBackend,首先它会向driver发送RegisterExecutor消息注册exec...原创 2018-08-03 23:04:27 · 984 阅读 · 0 评论 -
Spark性能调优之合理分配系统资源以及并行度的调节
在Spark系统中,调优是非常重要。首先,调优的第一步也是首先要考虑的就是系统的资源,只有在合理、有效的分配完了系统的资源,才会去考虑其他调优点从而提升系统的性能与速度。虽然对于系统的资源的分配,看上去没那么难,但是也不能小视,一个集群或系统的资源有效,只有在知道其Spark资源分配的原理之后才能合理分配资源,一定程度上对系统的性能带来提升。本篇文章主要从下面几个方面展开对系统资源的分配展开讨...原创 2018-08-07 23:06:22 · 1470 阅读 · 1 评论 -
Spark性能优化之如何使用广播变量以及Kryo序列化
在Spark Application中,经常会使用到一个共享变量,众所周知的,Spark是一个并行计算框架,对于这个变量,每一个executor的task在访问它的时候,都会去拷贝一份副本去使用。如下图所示: 对于这种默认方式,它会极大的系统的内存,我们可以假设一个集群中有1024个task,这个共享变量大小假设为1M,那么就会去复制1024份到集群上去,这样就会有1个G的数据在网络中传输,...原创 2018-08-18 15:43:31 · 3883 阅读 · 0 评论 -
【Spark性能优化】JVM调优原理概述以及降低cache内存占比
在Spark性能优化中包括几大块,前面主要讲述了常用的调优操作,比如RDD持久化,序列化等操作,本篇文章讲述另一块调优点,JVM调优,首先来了解一下JVM调优的原理。JVM调优原理概述了解JVM的程序员的都知道,JVM被划分为几个部分,比如虚拟机栈,本地方法栈,堆内存等。这里JVM调优主要针对堆内存,因此,我们着重介绍堆内存。在JVM中,堆内存一般存放创建的一个对象。在我们常用...原创 2018-08-19 16:54:17 · 360 阅读 · 0 评论 -
Spark源码解读之Shuffle原理剖析与源码分析
在前面几篇文章中,介绍了Spark的启动流程Spark内核架构流程深度剖析,Spark源码分析之DAGScheduler详解,Spark源码解读之Executor以及Task工作原理剖析,Spark源码解读之Executor以及Task工作原理剖析等Spark重要组件的源码剖析之后,接着之前的文章,本篇文章来剖析Shuffle的原理,shuffle阶段无论是mapreduce还是Spark都是其核...原创 2018-08-20 17:52:22 · 3080 阅读 · 1 评论