![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
【6】Spark
Spark
|旧市拾荒|
三年工作经验,任职于某银行科技部门,从事后端开发与数据开发。
展开
-
Spark Driver Program剖析
SparkContext是通往Spark集群的唯一入口,是整个Application运行调度的核心。一、Spark Driver Program Spark Driver Program(以下简称Driver)是运行Application的main函数并且新建SparkContext实例的程序。其实,初始化SparkContext是为了准备Spark应用程序的运行环境,在Spark中,由SparkContext负责与集群进行通信、资源的申请、任务的分配和监控等。当Worker节点中的Execu原创 2020-09-19 16:08:54 · 265 阅读 · 0 评论 -
Spark学习之数据读取与保存总结(一)
一、动机 我们已经学了很多在 Spark 中对已分发的数据执行的操作。到目前为止,所展示的示例都是从本地集合或者普通文件中进行数据读取和保存的。但有时候,数据量可能大到无法放在一台机器中,这时就需要探索别的数据读取和保存的方法了。 Spark 及其生态系统提供了很多可选方案。本章会介绍以下三类常见的数据源。 • 文件格式与文件系统:对于存储在本地文件系统或分布式文件系统(比如 NFS、HDFS、Amazon S3 等)中的数据,Spark 可以访问很多种不同的文件格式,包括文本文件、JSO原创 2020-09-17 22:25:39 · 720 阅读 · 0 评论 -
Spark学习之键值对操作总结
键值对 RDD 是 Spark 中许多操作所需要的常见数据类型。键值对 RDD 通常用来进行聚合计算。我们一般要先通过一些初始 ETL(抽取、转化、装载)操作来将数据转化为键值对形式。键值对 RDD 提供了一些新的操作接口(比如统计每个产品的评论,将数据中键相同的分为一组,将两个不同的 RDD 进行分组合并等)。我们也会讨论用来让用户控制键值对 RDD 在各节点上分布情况的高级特性:分区。有时,使用可控的分区方式把常被一起访问的数据放到同一个节点上,可以大大减少应用的通信开销。这会带来明显的性能提升。分原创 2020-09-14 21:22:13 · 1157 阅读 · 0 评论 -
Spark学习之RDD编程总结
Spark 对数据的核心抽象——弹性分布式数据集(Resilient Distributed Dataset,简称 RDD)。RDD 其实就是分布式的元素集合。在 Spark 中,对数据的所有操作不外乎创建 RDD、转化已有 RDD 以及调用 RDD 操作进行求值。而在这一切背后,Spark 会自动将RDD 中的数据分发到集群上,并将操作并行化执行。一、RDD基础 Spark 中的 RDD 就是一个不可变的分布式对象集合。每个 RDD 都被分为多个分区,这些分区运行在集群中的不同节点上。RDD原创 2020-09-11 22:37:23 · 701 阅读 · 0 评论 -
Spark之RDD的定义及五大特性
RDD是分布式内存的一个抽象概念,是一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,能横跨集群所有节点并行计算,是一种基于工作集的应用抽象。 RDD底层存储原理:其数据分布存储于多台机器上,事实上,每个RDD的数据都以Block的形式存储于多台机器上,每个Executor会启动一个BlockManagerSlave,并管理一部分Block;而Block的元数据由Driver节点上的BlockManagerMaster保存,BlockManagerSlave生成Block后向BlockM原创 2020-09-10 21:46:12 · 712 阅读 · 0 评论 -
Spark之RDD弹性特性
RDD作为弹性分布式数据集,它的弹性具体体现在以下七个方面。1.自动进行内存和磁盘数据存储的切换 Spark会优先把数据放到内存中,如果内存实在放不下,会放到磁盘里面,不但能计算内存放下的数据,也能计算内存放不下的数据。如果实际数据大于内存,则要考虑数据放置策略和优化算法。当应用程序内存不足时,Spark应用程序将数据自动从内存存储切换到磁盘存储,以保障其高效运行。2.基于Lineage(血统)的高效容错机制 Lineage是基于Spark RDD的依赖关系来完成的(依赖分为窄依赖和原创 2020-09-07 22:33:34 · 645 阅读 · 1 评论 -
Spark之RDD依赖关系及DAG逻辑视图
RDD依赖关系为成两种:窄依赖(Narrow Dependency)、宽依赖(Shuffle Dependency)。窄依赖表示每个父RDD中的Partition最多被子RDD的一个Partition所使用;宽依赖表示一个父RDD的Partition都会被多个子RDD的Partition所使用。一、窄依赖解析 RDD的窄依赖(Narrow Dependency)是RDD中最常见的依赖关系,用来表示每一个父RDD中的Partition最多被子RDD的一个Partition所使用,如下图所示,父R原创 2020-09-06 21:34:32 · 479 阅读 · 0 评论 -
Spark之RDD容错原理及四大核心要点
一、Spark RDD容错原理 RDD不同的依赖关系导致Spark对不同的依赖关系有不同的处理方式。 对于宽依赖而言,由于宽依赖实质是指父RDD的一个分区会对应一个子RDD的多个分区,在此情况下出现部分计算结果丢失,单一计算丢失的数据无法达到效果,便采用重新计算该步骤中的所有数据,从而会导致计算数据重复;对于窄依赖而言,由于窄依赖实质是指父RDD的分区最多被一个子RDD使用,在此情况下出现部分计算的错误,由于计算结果的数据只与依赖的父RDD的相关数据有关,所以不需要重新计算所有数据,只重新计算出原创 2020-09-04 22:12:01 · 666 阅读 · 0 评论 -
Spark RDD中Runtime流程解析
一、Runtime架构图(1)从Spark Runtime的角度讲,包括五大核心对象:Master、Worker、Executor、Driver、CoarseGrainedExecutorBackend。(2)Spark在做分布式集群系统设计的时候:最大化功能独立、模块化封装具体独立的对象、强内聚松耦合。Spark运行架构图如下图所示。 (3)当Driver中的SparkContext初始化时会提交程序给Master,Master如果接受该程序在Spark中运行,就会为当前的程序分配Ap.原创 2020-09-03 23:59:54 · 646 阅读 · 0 评论 -
通过WordCount解析Spark RDD内部源码机制
一、Spark WordCount动手实践我们通过Spark WordCount动手实践,编写单词计数代码;在wordcount.scala的基础上,从数据流动的视角深入分析Spark RDD的数据处理过程。首先需要建立一个文本文件helloSpark.txt,helloSpark.txt的文本内容如下。Hello Spark Hello ScalaHello HadoopHello FlinkSpark is Awesome然后在Eclipse中编写wordcount.scal原创 2020-09-02 21:10:21 · 203 阅读 · 0 评论