天天看点

spark简介和一些核心概念一、spark概念二、spark特点三、spark核心概念

一、spark概念

官网描述:

spark简介和一些核心概念一、spark概念二、spark特点三、spark核心概念

Apache Spark是一个用于大规模数据处理的统一分析引擎。

二、spark特点

1、高速性

spark简介和一些核心概念一、spark概念二、spark特点三、spark核心概念

Apache Spark使用最先进的DAG调度程序、查询优化器和物理执行引擎,实现了批处理和流数据的高性能;运行速度是hadoop的100倍以上。

2、易用性

spark简介和一些核心概念一、spark概念二、spark特点三、spark核心概念

Apache Spark程序可以使用java、scala、python、R、SQL语言开发,而且spark提供了超过80个高阶算子。

3、通用性

spark简介和一些核心概念一、spark概念二、spark特点三、spark核心概念

结合SQL、流和复杂分析。

Spark支持一系列库,包括SQL和DataFrames、用于机器学习的MLlib、GraphX和Spark流。您可以在同一个应用程序中无缝地组合这些库。

4、运行多样化

spark简介和一些核心概念一、spark概念二、spark特点三、spark核心概念

Spark运行在Hadoop、Apache Mesos、Kubernetes、standalone或cloud中,它可以访问不同的数据源。

三、spark核心概念

1、名词解释

1.1 ClusterManager

在Standalone(spark自身集群模式)模式中即为Master(主节点),控制整个集群,监控Worker。在YARN模式中为资源管理器Resourcemanager。

Spark集群的管理,管理spark集群的资源(cpu core、内存),yarn中的话就是ResourceManager。

1.2Worker

从节点,负责控制计算节点,启动Executor。在YARN模式中为NodeManager,负责计算节点的控制。

1.3 Driver

运行Application的main()函数并创建SparkContext。

负责向ClusterManager提交spark作业,组织spark作业,然后和spark集群中的executor进行交互。

Driver最重要的工作,就是创建SparkContext,而SparkContext就是Spark Application的入口。

1.4Executor

执行器,在worker node上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executors。

这些executor是在worker节点上面启动的进程。

1.5SparkContext

整个应用的上下文,控制应用的生命周期。

1.6RDD

Spark的基本计算单元,一组RDD可形成执行的有向无环图RDD Graph。

RDD,是一个抽象的概念,是弹性式分布式数据集。

弹性:既可以在内存,优先在内存存储并计算,如果内存不够,拿磁盘顶上。

数据集:就是一个普通的scala的不可变的集合。

分布式:一个完整的RDD数据集,被拆分成多个部分,在不同的机器里面存储。被拆分成的部分称之为该RDD的分区partition,就类似于hdfs中的一个文件file被拆分成多个block块存储一样。

真正存储数据的是partition,RDD不存储数据,RDD就是对这个partition的抽象。又因为RDD是一个scala集合,在scala集合上面有非常多个的算子操作,比如flatMap、map、reduce、sum等等。可以理解为是一个ADT(abstract data type抽象数据类型)

1.7DAG Scheduler

实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskScheduler中。

非常重要的作业就是进行stage阶段的划分。

1.8TaskScheduler

将任务(Task)分发给Executor执行。

将DAGScheduler划分的stage(task的形式)任务,交付给executor去干活。

1.9Stage

一个Spark作业一般包含一到多个Stage。

每次提交的是一个stage阶段的任务。

1.10Task

一个Stage包含一到多个Task,通过多个Task实现并行运行的功能。

1.11Transformations

转换(Transformations) (如:map, filter, groupBy, join等),Transformations操作是Lazy的,也就是说从一个RDD转换生成另一个RDD的操作不是马上执行,Spark在遇到Transformations操作时只会记录需要这样的操作,并不会去执行,需要等到有Actions操作的时候才会真正启动计算过程进行计算。

又称为转换算子

1.12Actions

操作(Actions) (如:count, collect, save,foreach等),Actions操作会返回结果或把RDD数据写到存储系统中。Actions是触发Spark启动计算的动因。

又称为行动算子。

1.13SparkEnv

线程级别的上下文,存储运行时的重要组件的引用。SparkEnv内创建并包含如下一些重要组件的引用。

MapOutPutTracker:负责Shuffle元信息的存储。

BroadcastManager:负责广播变量的控制与元信息的存储。

BlockManager:负责存储管理、创建和查找块。

1.14MetricsSystem

监控运行时性能指标信息。

1.15SparkConf

负责存储配置信息。

可以理解为MR编程中的Configuration。当前应用程序的配置信息。SparkContext的构建离不开SparkConf。

继续阅读