【Spark】Spark基本概念

Spark专用名词

  • RDD —- resillient distributed dataset 弹性分布式数据集
  • Operation —- 作用于RDD的各种操作分为transformation和action
  • Job —- 作业,一个JOB包含多个RDD及作用于相应RDD上的各种operation
  • Stage —- 一个作业分为多个阶段
  • Partition —- 数据分区, 一个RDD中的数据可以分成多个不同的区
  • DAG —- Directed Acycle graph, 有向无环图,反应RDD之间的依赖关系
  • Narrow dependency —- 窄依赖,子RDD依赖于父RDD中固定的data partition
  • Wide Dependency —- 宽依赖,子RDD对父RDD中的所有data partition都有依赖
  • Caching Managenment —- 缓存管理,对RDD的中间计算结果进行缓存管理以加快整体的处理速度

Spark编程模型

下面是Spark的一个日志计数示例,该程序演示了Spark的计算模型:

下面是Spark运行时涉及的各组件的概况图:

从RDD转换和存储角度,用户程序对RDD通过多个函数进行操作,将RDD进行转换。Block Manager管理RDD的物理分区,每个Block就是节点上对应的一个数据块,可以存储在内存或磁盘。而RDD中的partition是一个逻辑数据块,对应相应的物理块Block。

本质上,一个RDD在代码中相当于是数据的一个元数据结构,存储着数据分区及其逻辑结构映射关系,存储着RDD之前的依赖转换关系。

作用于RDD上的操作分为transformantion和action。 经Transformation处理之后,数据集中的内容会发生更改,由数据集A转换成为数据集B;而经Action处理之后,数据集中的内容会被归约为一个具体的数值。

只有当RDD上有action时,该RDD及其父RDD上的所有operation才会被提交到cluster中真正的被执行。

Spark运行态

用Spark的术语来说,static view称为dataset-level view,而dynamic view称为parition-level view,关系如图所示:

在Spark中的task可以对应于线程,worker是一个个的进程,worker由driver来进行管理。

在源码阅读时,需要重点把握以下两大主线:

* 静态视图static view 即 RDD, transformation and action

* 动态视图dynamic view 即 life of a job,每一个job又分为多个stage,每一个stage中可以包含多个rdd及其transformation,这些stage又是如何映射成为task被distributed到cluster中

Spark调度机制

Spark应用提交后经历了一系列的转换,最后成为Task在每个节点上执行。

当有Action作用于某RDD时,该action会作为一个job被提交。

在提交的过程中,DAGScheduler模块介入运算,计算RDD之间的依赖关系。RDD之间的依赖关系就形成了DAG。

每一个Job被分为多个stage,划分stage的一个主要依据是当前计算因子的输入是否是确定的,如果是则将其分在同一个stage,避免多个stage之间的消息传递开销。

当stage被提交之后,由taskscheduler来根据stage来计算所需要的task,并将task提交到对应的worker。

大体概况如下图所示:

关于Spark的调度运行机制详见下一节的RDD详解中的介绍。

转载请注明作者Jason Ding及其出处

GitCafe博客主页(http://jasonding1354.gitcafe.io/)

Github博客主页(http://jasonding1354.github.io/)

CSDN博客(http://blog.csdn.net/jasonding1354)

简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)

Google搜索jasonding1354进入我的博客主页

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-30 08:07:17

【Spark】Spark基本概念的相关文章

<Spark><Spark Streaming>

Overview Spark Streaming为用户提供了一套与batch jobs十分相似的API,以编写streaming应用 与Spark的基本概念RDDs类似,Spark Streaming提供了被称为DStreams/discretized streams的抽象. DStream is a sequence of data arriving over time. 其本质是,每个DStream被表示成来自每个时间阶段的RDDs的序列,因此被称为离散的. DStreams可以从各种输入数

Spark&Spark性能调优实战

Spark特别适用于多次操作特定的数据,分mem-only和mem & disk.其中mem-only:效率高,但占用大量的内存,成本很高;mem & disk:内存用完后,会自动向磁盘迁移,解决了内存不足的问题,却带来了数据的置换的消费.Spark常见的调优工具有nman.Jmeter和Jprofile,以下是Spark调优的一个实例分析: 1.场景:精确客户群 对一个容量为300g的客户信息表在spark上进行查询优化,该大宽表有1800多列,有效使用的有20列. 2.优化达到的效果:

关于Spark的基本概念和特性简介

1.Spark是什么? ○ 高可伸缩性 ○ 高容错 ○ 基于内存计算 2.Spark的生态体系(BDAS,中文:伯利克分析栈) ○ MapReduce属于Hadoop生态体系之一,Spark则属于BDAS生态体系之一 ○ Hadoop包含了MapReduce.HDFS.HBase.Hive.Zookeeper.Pig.Sqoop等 ○ BDAS包含了Spark.Shark(相当于Hive).BlinkDB.Spark Streaming(消息实时处理框架,类似Storm)等等 ○ BDAS生态体

Spark Streaming基础概念

为了更好地理解Spark Streaming 子框架的处理机制,必须得要自己弄清楚这些最基本概念. 1.离散流(Discretized Stream,DStream):这是Spark Streaming对内部持续的实时数据流的抽象描述,即我们处理的一个实时数据流,在Spark Streaming中对应于一个DStream的实例. 2.批数据(batch data):这是化整为零的第一步,将实时流数据以时间片为单位进行分批,将流处理转换为时间片数据的批处理.随着持续时间的推移,这些处理结果就形成了

Spark Streaming核心概念与编程

1. 核心概念 StreamingContext Create StreamingContext import org.apache.spark._ import org.apache.spark.streaming._ val conf = new SparkConf().setAppName(appName).setMaster(master) //Second(1) #表示处理的批次, 当前1秒处理一次 val ssc = new StreamingContext(conf, Second

Spark RDD基本概念、宽窄依赖、转换行为操作

目录 RDD概述 RDD的内部代码 案例 小总结 转换.行动算子 宽.窄依赖 Reference 本文介绍一下rdd的基本属性概念.rdd的转换/行动操作.rdd的宽/窄依赖. RDD:Resilient Distributed Dataset 弹性分布式数据集,是Spark中的基本抽象. RDD表示可以并行操作的元素的不变分区集合. RDD提供了许多基本的函数(map.filter.reduce等)供我们进行数据处理. RDD概述 通常来说,每个RDD有5个主要的属性组成: 分区列表 RDD是

Spark Streaming 基本概念

介绍 Spark Streaming架构图 the micro-batch architecture of Spark Streaming Execution of Spark Streaming within Spark's components

spark理清一些概念

·1. 以序列化形式存储RDD 广播变量允许程序员在每台机器上保留一个只读变量 原文地址:https://www.cnblogs.com/huiandong/p/10234788.html

<spark> ~/spark/conf/spark-default.conf 配置文件

因为看到我参考的Hadoop/spark集群搭建的文档中的都没有对 /spark-default.conf 的配置 合理地对 /spark-default.conf  进行配置,能够提高执行效率 --------------------------------------------------------------------------------------- 先cp复制模板文件 然后添加配置信息 spark.master spark://master:7077 spark.defaul

<Spark><Spark Streaming><作业分析>

Intro 这篇是对一个Spark (Streaming)作业的log进行分析.用来加深对Spark application运行过程,优化空间的各种理解. Here to Start 从我这个初学者写得一个Spark Streaming程序开始... package com.wttttt.spark /** * Created with IntelliJ IDEA. * Description: * Author: wttttt * Github: https://github.com/wttt