![](https://img-blog.csdnimg.cn/20210807164146255.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spark
文章平均质量分 92
Spark体系知识概括
Oak-Komorebi
你心中尚存的不满,就是你眼前的第一行诗。
展开
-
大数据之Spark(九):Spark Streaming 概述
一、流式计算简介1.1 流式计算理解流式计算,最形象的例子,就是小明的往水池中放(入)水又放(出)水的案例。流式计算就像水流⼀样, 数据连绵不断的产生,并被快速处理,所以流式计算拥有如下⼀些特点:数据是无界的(unbounded) 数据是动态的 计算速度是非常快的 计算不止一次 计算不能终⽌ 反过来看看⼀下离线计算有哪些特点: 数据是有界的(Bounded) 数据静态的 计算速度通常较慢 计算只执行一次 计算终会终止 在大数据计算领域中,通常所...原创 2021-08-23 22:57:58 · 1501 阅读 · 0 评论 -
大数据之Spark(一):Spark 概述
一、Spark是什么?Spark是基于DAG(有向无环图)的内存计算引擎.二、Spark的安装部署Spark和MapReduce效率不同的原因:Spark把运算的中间数据存放在内存,迭代计算效率更高;mapreduce的中间结果需要落地,需要保存到磁盘,这样必然会有磁盘io操作,影响性。Standalone模式单机(Master+Worker同时运行)ly@hadoop00 spark-2.2.0-bin-hadoop2.7 % echo $SPARK_HOME/Us原创 2021-08-10 20:05:30 · 276 阅读 · 0 评论 -
大数据之Spark(二):Spark RDD
五、Spark RDD 介绍RDD(Resilient Distributed Dataset):弹性分布式数据集,是Spark中最基本的数据抽象,它代表⼀个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩 性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用⼯作集,这极大地提升了查询速度。RDD特性:# RDD源码中的说明Internally, each RDD is characterized by fi原创 2021-08-11 23:17:40 · 401 阅读 · 0 评论 -
大数据之Spark(三):RDD 依赖
一、RDD 依赖窄依赖(narrow dependency)说明:父RDD与子RDD是窄依赖时,父RDD的每个分区只被一个子RDD分区使用一次窄依赖分为两种:一种是一对一的依赖,即 OneToOneDependency 还有一个是范围的依赖 RangeDependency ,它仅仅被 org.apache.spark.rdd.UnionRDD 使⽤。 UnionRDD 是 把多个RDD合成⼀个RDD,这些RDD是被拼接而成,每个父RDD的 Partition 的相对顺序不会变,只不过每个父原创 2021-08-21 21:01:10 · 467 阅读 · 0 评论 -
大数据之Spark(四):Spark SQL
一、SparkSQL的发展1.1 概述SparkSQL是Spark⽣态体系中的构建在SparkCore基础之上的⼀个基于SQL的计算模块。 SparkSQL的前身不叫SparkSQL,⽽叫Shark,最开始的时候底层代码优化,sql的解析、执⾏引擎等等完全基于 Hive,总是Shark的执⾏速度要⽐hive⾼出⼀个数量级,但是hive的发展制约了Shark,所以在15年中旬的时候, shark负责⼈,将shark项⽬结束掉,重新独⽴出来的⼀个项⽬,就是sparksql,不再依赖hive,做了独⽴的发原创 2021-08-16 21:21:13 · 999 阅读 · 0 评论 -
大数据之Spark(五):DAGScheduler 的任务划分
Spark是如何根据DAG生成计算任务呢?根据依赖关系将DAG划分为不同的阶段(Stage)。对于窄依赖,由于分区依赖关系的确定性,分区的转换处理可以在同一个线程里完成,窄依赖被划分到同一个执行阶段;对于宽依赖,由于Shuffle的存在,只能在父RDD Shuffle处理完成后,才能开始接下来的计算。因此宽依赖就是阶段划分的依据,具体划分规则:从后往前,遇到宽依赖切割为新的Stage。每个Stage由一组并行的Task组成。如下图所示。1、阶段划分从RDD G开始中,G依赖于B和F,先处理B原创 2021-08-21 21:17:08 · 624 阅读 · 0 评论 -
大数据之Spark(六):Spark Shuffle 原理
Spark Shuffle分为Write和Read两个过程。在Spark中负责shuffle过程的执行、计算、处理的组件主要是 ShuffleManager,其是一个trait,负责管理本地以及远程的block数据的shuffle操作。所有方法如下图所示:ShuffleManager定义的方法由SparkEnv的shuffleManager管理主要方法解释:registerShuffle:注册ShuffleDependency,同时获取一个ShuffleHandle(后面根据Sh.原创 2021-08-21 21:42:14 · 251 阅读 · 0 评论 -
大数据之Spark(七):Spark 任务调度
任务调度分为两个主要模块:DAGScheduler和TaskScheduler。它们负责将用户提交的计算任务按照DAG划分为不同的阶段并且将不同阶段的计算任务提交到集群进行最终的计算,整个过程如下图所示:任务调度逻辑视图在Spark应用启动时,会初始化SparkContext对象。在SparkContext中,会创建SchedulerBackend、DAGScheduler、TaskScheduler。具体涉及三个主要类:DAGScheduler:前面图示(DAG的阶段划分)中的源码.原创 2021-08-21 21:56:09 · 319 阅读 · 0 评论 -
大数据之Spark(八):Spark Task 启动原理
启动流程如下图所示:Spark Task 启动流程一、名词解释1、CoarseGrainedSchedulerBackend:由Driver启动。是一个阻塞等待coarse-grained executors来连接的SchedulerBackend。CoarseGrainedSchedulerBackend向ExecutorBackend端发送的消息主要如下:(1)RegisteredExecutor:回复ExecutorBackend注册功能,ExecutorBackend接到后会创建E.原创 2021-08-21 22:11:58 · 591 阅读 · 0 评论