【大数据】Spark-原理
文章平均质量分 79
21989939
这个作者很懒,什么都没留下…
展开
-
Spark 源码阅读(6)——Master接收到ClientActor后,进行worker的资源分配
看一下appActor的preStart方法override def preStart() { context.system.eventStream.subscribe(self, classOf[RemotingLifecycleEvent]) try { registerWithMaster() } catch { case e: Exception => ...原创 2018-03-18 21:57:54 · 410 阅读 · 0 评论 -
RDD的设计与运行原理
1.RDD设计背景在实际应用中,存在许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘工具,这些应用场景的共同之处是,不同计算阶段之间会重用中间结果,即一个阶段的输出结果会作为下一个阶段的输入。但是,目前的MapReduce框架都是把中间结果写入到HDFS中,带来了大量的数据复制、磁盘IO和序列化开销。虽然,类似Pregel等图计算框架也是将结果保存在内存当中,但是,这些框架只能支持一些特定...转载 2018-03-02 16:38:25 · 2259 阅读 · 0 评论 -
Spark作业调度中stage的划分
Spark在接收到提交的作业后,会进行RDD依赖分析并划分成多个stage,以stage为单位生成taskset并提交调度。这里stage划分是一个设计的亮点,这两天学习一下。Spark作业调度对RDD的操作分为transformation和action两类,真正的作业提交运行发生在action之后,调用action之后会将对原始输入数据的所有transformation操作封装成作业并向集群提交...转载 2018-03-02 16:58:54 · 794 阅读 · 0 评论 -
Spark SortShuffleManager 运行原理
SortShuffleManager运行原理SortShuffleManager的运行机制主要分成两种,一种是普通运行机制,另一种是bypass运行机制。当shuffle read task的数量小于等于spark.shuffle.sort.bypassMergeThreshold参数的值时(默认为200),就会启用bypass机制。普通运行机制 下图说明了普通的SortShuffleManag...转载 2018-03-05 12:58:59 · 1627 阅读 · 0 评论 -
Spark 源码阅读(1)——WordCount程序执行流程
1.RDD 源码解析主要方法属性:- A list of partitions- A function for computing each split- A list of dependencies on other RDDs- Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-p...原创 2018-03-05 17:21:33 · 585 阅读 · 0 评论 -
Spark 源码阅读(2)——spark-submit 提交流程
1.根据spark-shell 提交命令,查看spark-submit脚本./bin/spark-submit \ --class <main-class> \ --master <master-url> \ --deploy-mode <deploy-mode> \ --conf <key>=<value> \ ....原创 2018-03-06 11:11:01 · 329 阅读 · 0 评论 -
Spark 源码阅读(3)——SparkContext创建
代码中的SparkContext在Spark应用程序的执行过程中起着主导作用,它负责与程序个Spark集群进行交互,包括申请集群资源、创建RDD、accumulators 及广播变量等。SparkContext与集群资源管理器、Worker结节点交互图如下图所示。官网对图下面几点说明: (1)不同的Spark应用程序对应该不同的Executor,这些Executor在整个应用程序执行期间都存在并且...原创 2018-03-06 14:13:06 · 662 阅读 · 0 评论 -
Spark中Task,Partition,RDD、节点数、Executor数、core数目的关系和Application,Driver,Job,Task,Stage理解
转自:http://blog.csdn.net/u013013024/article/details/72876427梳理一下Spark中关于并发度涉及的几个概念File,Block,Split,Task,Partition,RDD以及节点数、Executor数、core数目的关系。输入可能以多个文件的形式存储在HDFS上,每个File都包含了很多块,称为Block。当Spark读取这些文件作为输...转载 2018-03-06 21:13:26 · 229 阅读 · 0 评论 -
宽依赖窄依赖+stage划分
1.RDD的依赖关系1.1 WordCount中的RDDRDD和它依赖的父RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency)。1.2 窄依赖窄依赖指的是每一个父RDD的Partition最多被子RDD的一个Partition使用总结:窄依赖我们形象的比喻为独生子女1.3 宽依赖宽依赖指的是多个子RDD的Partitio...原创 2018-03-06 22:22:55 · 2982 阅读 · 1 评论 -
RDD chache和checkoutPoint操作
1. RDD的缓存Spark速度非常快的原因之一,就是在不同操作中可以在内存中持久化或缓存个数据集。当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他动作中重用。这使得后续的动作变得更加迅速。RDD相关的持久化和缓存,是Spark最重要的特征之一。可以说,缓存是Spark构建迭代式算法和快速交互式查询的关键。1.2 RDD缓存方式RDD通...原创 2018-03-06 23:08:18 · 509 阅读 · 0 评论 -
Spark 源码阅读(4)——Master和Worker的启动流程
启动脚本中调用的是Master的main方法,所以我们找到Master的main方法:private[spark] object Master extends Logging { val systemName = "sparkMaster" private val actorName = "Master" def main(argStrings: Array[String]) {...原创 2018-03-15 17:16:20 · 815 阅读 · 0 评论 -
Spark 源码阅读(5)——Spark-submit任务提交流程
任务提交后执行前的逻辑:client端:1、spark-submit脚本提交任务,会通过反射的方式调用到我们自己提交的类的main方法2、执行我们自己代码中的new SparkContext 2.1、创建actorSystem 2.2、创建TaskSchedulerImpl 任务分发的类 2.3、创建SparkDeploySchedulerBackend 调度任务 2.4、...原创 2018-03-18 11:26:36 · 1066 阅读 · 0 评论