Spark基本概念

Spark基本概念

Spark核心组件

Driver

  • 将用户程序转化为作业(job)
  • 在Executor之间调度任务(task)
  • 跟踪Executor的执行情况
  • 通过UI展示查询运行情况

 Executor

  • Spark Executor是集群中工作节点(Worker)中的一个JVM进程,负责在 Spark 作业中运行具体任务(Task),任务彼此之间相互独立。
  • 负责运行组成Spark应用的任务,并将结果返回给驱动器进程
  • 它们通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存式存储。RDD 是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

 并行度(Parallelism)

在分布式计算框架中一般都是多个任务同时执行,由于任务分布在不同的计算节点进行计算,所以能够真正地实现多任务并行执行,记住,这里是并行,而不是并发。这里我们将整个集群并行执行任务的数量称之为并行度。

提交流程

Spark基本概念

 

Spark核心编程

三大数据结构分别是:

  • RDD : 弹性分布式数据集
  • 累加器:分布式共享只写变量
  • 广播变量:分布式共享只读变量

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据处理模型。

  • 分区列表

RDD数据结构中存在分区列表,用于执行任务时并行计算,是实现分布式计算的重要属性。

  • 分区计算函数

Spark在计算时,是使用分区函数对每一个分区进行计算

  • RDD之间的依赖关系

RDD是计算模型的封装,当需求中需要将多个计算模型进行组合时,就需要将多个RDD建立依赖关系

  • 分区器(可选)

当数据为KV类型数据时,可以通过设定分区器自定义数据的分区

  • 首选位置(可选)

计算数据时,可以根据计算节点的状态选择不同的节点位置进行计算

 RDD创建

Spark中创建RDD的创建方式可以分为四种:

1)       从集合(内存)中创建RDD

从集合中创建RDD,Spark主要提供了两个方法:parallelize和makeRDD

2)       从外部存储(文件)创建RDD

由外部存储系统的数据集创建RDD包括:本地的文件系统,所有Hadoop支持的数据集,比如HDFS、HBase等。

3)       从其他RDD创建 不常用

主要是通过一个RDD运算完后,再产生新的RDD。详情请参考后续章节

4)       直接创建RDD(new) 不常用

使用new的方式直接构造RDD,一般由Spark框架自身使用。

RDD转换算子

RDD 中的所有转换都是延迟加载的,也就是说,它们并不会直接计算结果。

RDD根据数据处理方式的不同将算子整体上分为Value类型、双Value类型和Key-Value类型

map,filter,flatMap,mapPartitions,mapPartitonsWithIndex,sample,takeSample,union,intersection,distinct,partitionBy,reduceByKey,groupByKey,combinByKey,aggregateByKey,foldByKey,sortByKey,sortBy,join,cogroup,cartesian,pipe,coalesce,repartition,repartitionAndSortWithinPartitons,glom,mapValues,subtract

 RDD行动算子

  • 数据运算类,主要用于触发RDD计算,并得到计算结果返回给Spark程序或Shell界面;
  • 数据存储类,用于触发RDD计算后,将结果保存到外部存储系统中,如HDFS文件系统或数据库

aggregate、collect、count、first、foreach、reduce、take、takeOrdered、takeSample、saveAsObjectFile、saveAsTextFile

上一篇:Spark分区


下一篇:Html实体字符对应的显示结果及转换