【Spark】
文章平均质量分 93
JasonDing1354
关注jasonding.top
展开
-
【Spark】配置Spark源码阅读环境
Scala构建工具(SBT)的使用SBT介绍SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣,但完成的工作基本是类似的。 虽然Maven同样可以管理Scala项目的依赖并进行构建,但SBT的某些特性却让人如此着迷,比如: 使用Scala作为DSL来定义build文件(one language原创 2015-05-28 16:18:46 · 1919 阅读 · 0 评论 -
【Spark】RDD机制实现模型
RDD渊源弹性分布式数据集(RDD),它是MapReduce模型一种简单的扩展和延伸,RDD为了实现迭代、交互性和流查询等功能,需要保证RDD具备在并行计算阶段之间能够高效地数据共享的功能特性。RDD运用高效的数据共享概念和类似于MapReduce的操作方式,使得所有的计算工作可以有效地执行,并可以在当前特定的系统中获得关键性的优化。RDD是一种有容错机制的特殊集合,可以分布在集群的节点上,以函数式原创 2015-07-14 19:47:21 · 1824 阅读 · 0 评论 -
【Spark】Stage生成和Stage源码浅析
引入上一篇文章《DAGScheduler源码浅析》中,介绍了handleJobSubmitted函数,它作为生成finalStage的重要函数存在,这一篇文章中,我将就DAGScheduler生成Stage过程继续学习,同时介绍Stage的相关源码。Stage生成Stage的调度是由DAGScheduler完成的。由RDD的有向无环图DAG切分出了Stage的有向无环图DAG。Stage的DAG通过原创 2015-07-15 22:00:58 · 2466 阅读 · 0 评论 -
【Spark】DAGScheduler源码浅析
DAGSchedulerDAGScheduler的主要任务是基于Stage构建DAG,决定每个任务的最佳位置 记录哪个RDD或者Stage输出被物化 面向stage的调度层,为job生成以stage组成的DAG,提交TaskSet给TaskScheduler执行 重新提交shuffle输出丢失的stage 每一个Stage内,都是独立的tasks,他们共同执行同一个compu原创 2015-07-15 16:43:37 · 2117 阅读 · 0 评论 -
【Spark】DAGScheduler源码浅析2
引入上一篇文章DAGScheduler源码浅析主要从提交Job的流程角度介绍了DAGScheduler源码中的重要函数和关键点,这篇DAGScheduler源码浅析2主要参考fxjwind的Spark源码分析 – DAGScheduler一文,介绍一下DAGScheduler文件中之前没有介绍的几个重要函数。事件处理在Spark 1.0版本之前,在DAGScheduler类中加入eventQueue原创 2015-07-15 17:30:50 · 1406 阅读 · 0 评论 -
【Spark Core】TaskScheduler源码与任务提交原理浅析2
引言上一节《TaskScheduler源码与任务提交原理浅析1》介绍了TaskScheduler的创建过程,在这一节中,我将承接《Stage生成和Stage源码浅析》中的submitMissingTasks函数继续介绍task的创建和分发工作。DAGScheduler中的submitMissingTasks函数如果一个Stage的所有的parent stage都已经计算完成或者存在于cache中,那原创 2015-07-18 21:26:05 · 2077 阅读 · 0 评论 -
【Spark Core】TaskScheduler源码与任务提交原理浅析1
引言上一节《Stage生成和Stage源码浅析》中,我介绍了Stage生成划分到提交Stage的过程,分析最终归结到submitStage的递归提交Stage,其中要通过submitMissingTasks函数创建task集合来实现任务的创建和分发。 在接下来的几篇文章中,我将具体介绍一下任务创建和分发的过程,为了让逻辑更加清楚,我将分成几篇文章进行介绍,好保证简明清晰,逻辑连贯,前后统一。Tas原创 2015-07-18 21:24:59 · 1769 阅读 · 0 评论 -
【Spark Core】任务执行机制和Task源码浅析1
引言上一小节《TaskScheduler源码与任务提交原理浅析2》介绍了Driver侧将Stage进行划分,根据Executor闲置情况分发任务,最终通过DriverActor向executorActor发送任务消息。 我们要了解Executor的执行机制首先要了解Executor在Driver侧的注册过程,这篇文章先了解一下Application和Executor的注册过程。1. Task类及其原创 2015-07-20 21:17:14 · 2179 阅读 · 0 评论 -
【Spark Core】从作业提交到任务调度完整生命周期浅析
引言这一小节我们将就之前写的几篇博文,从提交Job,到Stage划分,到任务分发,再到任务的执行,这一完整过程做一系统的回顾。在这一过程中理清思路,明确几篇文章中涉及到的调度关系和逻辑关系。Spark作业提交到执行过程 上面这个图摘自张包峰的csdn博客,这个图很清晰的描述了作业提交执行的整个过程,略去了细节原理,给人一种清晰直观的流程概况。 通过该图结合一下我之前的博文来描述一下文章的内容和相原创 2015-07-20 21:19:11 · 2398 阅读 · 2 评论 -
【Spark Core】任务执行机制和Task源码浅析2
引言上一小节《任务执行机制和Task源码浅析1》介绍了Executor的注册过程。 这一小节,我将从Executor端,就接收LaunchTask消息之后Executor的执行任务过程进行介绍。1. Executor的launchTasks函数DriverActor提交任务,发送LaunchTask指令给CoarseGrainedExecutorBackend,接收到指令之后,让它内部的execu原创 2015-07-20 21:18:27 · 1569 阅读 · 0 评论 -
【Spark】SparkContext源码解读
SparkContext的初始化SparkContext是应用启动时创建的Spark上下文对象,是进行Spark应用开发的主要接口,是Spark上层应用与底层实现的中转站(SparkContext负责给executors发送task)。 SparkContext在初始化过程中,主要涉及一下内容: SparkEnv DAGScheduler TaskScheduler Sche原创 2015-07-14 19:49:53 · 2905 阅读 · 0 评论 -
【Spark】Spark的Shuffle机制
MapReduce中的Shuffle在MapReduce框架中,shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。 Shuffle是MapReduce框架中的一个特定的phase,介于Map phase和Reduce phase之间,当Map的输出结果要被Reduce使用时,原创 2015-07-14 19:49:02 · 2572 阅读 · 0 评论 -
【Spark】Spark容错机制
引入一般来说,分布式数据集的容错性有两种方式:数据检查点和记录数据的更新。 面向大规模数据分析,数据检查点操作成本很高,需要通过数据中心的网络连接在机器之间复制庞大的数据集,而网络带宽往往比内存带宽低得多,同时还需要消耗更多的存储资源。 因此,Spark选择记录更新的方式。但是,如果更新粒度太细太多,那么记录更新成本也不低。因此,RDD只支持粗粒度转换,即只记录单个块上执行的单个操作,然后将创建原创 2015-07-14 19:48:22 · 5482 阅读 · 0 评论 -
【Spark】Spark基本概念
Spark专用名词RDD —- resillient distributed dataset 弹性分布式数据集Operation —- 作用于RDD的各种操作分为transformation和actionJob —- 作业,一个JOB包含多个RDD及作用于相应RDD上的各种operationStage —- 一个作业分为多个阶段Partition —- 数据分区, 一个RDD中的数据可以分原创 2015-07-08 14:24:15 · 1919 阅读 · 0 评论 -
【Spark】弹性分布式数据集RDD概述
弹性分布数据集RDDRDD(Resilient Distributed Dataset)是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作本地集合的方式来操作分布式数据集的抽象实现。RDD是Spark最核心的东西,它表示已被分区,不可变的并能够被并行操作的数据集合,不同的数据集格式对应不同的RDD实现。RDD必须是可序列化的。RDD可以cache到内存中,每次对RDD数据集的操作之后的原创 2015-07-08 14:25:07 · 4404 阅读 · 1 评论 -
【Spark】Spark应用执行机制
Spark应用概念Spark应用(Application)是用户提交的应用程序。执行模式又Local、Standalone、YARN、Mesos。根据Spark Application的Driver Program是否在集群中运行,Spark应用的运行方式又可以分为Cluster模式和Client模式。 下面是Spark应用涉及的一些基本概念: Application:Spark 的应用原创 2015-07-08 14:26:18 · 3960 阅读 · 0 评论 -
Spark交互式分析平台Apache Zeppelin的安装
Zeppelin介绍Apache Zeppelin提供了web版的类似ipython的notebook,用于做数据分析和可视化。背后可以接入不同的数据处理引擎,包括spark, hive, tajo等,原生支持scala, java, shell, markdown等。它的整体展现和使用形式和Databricks Cloud是一样的,就是来自于当时的demo。Zeppelin可实现你所需要的:原创 2015-07-09 22:07:14 · 21065 阅读 · 0 评论 -
【Spark】Spark的Standalone模式安装部署
Spark运行模式Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalone 模式,对于大多数情况 Standalone 模式就足够了,如果企业已经有 Yarn 或者 Mesos 环境,也是很方便部署的。 local(本地模式):常用于本地开发测试,本地还分原创 2015-07-10 11:19:41 · 5531 阅读 · 0 评论 -
【Spark】RDD操作详解3——键值型Transformation算子
Transformation处理的数据为Key-Value形式的算子大致可以分为:输入分区与输出分区一对一、聚集、连接操作。输入分区与输出分区一对一mapValuesmapValues:针对(Key,Value)型数据中的Value进行Map操作,而不对Key进行处理。 方框代表RDD分区。a=>a+2代表只对( V1, 1)数据中的1进行加2操作,返回结果为3。源码: /** * P原创 2015-07-11 22:48:05 · 3214 阅读 · 0 评论 -
【Spark】RDD操作详解4——Action算子
本质上在Actions算子中通过SparkContext执行提交作业的runJob操作,触发了RDD DAG的执行。 根据Action算子的输出空间将Action算子进行分类:无输出、 HDFS、 Scala集合和数据类型。无输出foreach对RDD中的每个元素都应用f函数操作,不返回RDD和Array,而是返回Uint。 图中,foreach算子通过用户自定义函数对每个数据项进行操作。原创 2015-07-12 10:49:58 · 3437 阅读 · 0 评论 -
【Spark】RDD操作详解1——Transformation和Actions概况
Spark算子的作用下图描述了Spark在运行转换中通过算子对RDD进行转换。 算子是RDD中定义的函数,可以对RDD中的数据进行转换和操作。 输入:在Spark程序运行中,数据从外部数据空间(如分布式存储:textFile读取HDFS等,parallelize方法输入Scala集合或数据)输入Spark,数据进入Spark运行时数据空间,转化为Spark中的数据块,通过BlockManager进行原创 2015-07-11 22:46:16 · 10201 阅读 · 1 评论 -
【Spark】RDD操作详解2——值型Transformation算子
处理数据类型为Value型的Transformation算子可以根据RDD变换算子的输入分区与输出分区关系分为以下几种类型: 1)输入分区与输出分区一对一型 2)输入分区与输出分区多对一型 3)输入分区与输出分区多对多型 4)输出分区为输入分区子集型 5)还有一种特殊的输入与输出分区一对一的算子类型:Cache型。 Cache算子对RDD分区进行缓存输入分区与输出分区一原创 2015-07-11 22:47:24 · 4246 阅读 · 0 评论 -
Spark与Scala学习
Spark学习配置Spark源码阅读环境Spark的Standalone模式安装部署Spark生态和Spark架构Spark基本概念弹性分布式数据集RDD概述Spark应用执行机制RDD操作详解1——Transformation和Actions概况RDD操作详解2——值型Transformation算子RDD操作详解3——键值型Transformation算子RDD操作详解4——原创 2015-07-15 22:02:18 · 3665 阅读 · 4 评论