Spark 总结 一

spark 总结一

  • 一、Spark 简介
    • RDD的解释
  • 二、Spark的核心概念
    • 2.1 名词解释
      • 2.1.1 ClusterManager
      • 2.2.2 Worker
      • 2.2.3 Driver
      • 2.2.4 Executor
      • 2.2.5 SparkContext
      • 2.2.6 RDD
      • 2.2.7 DAG Scheduler
      • 2.2.8 TaskScheduler
      • 2.2.9 Stage
      • 2.2.10 Task
      • 2.2.11 Transformations
      • 2.2.12 Actions
      • 2.2.13 SparkEnv
      • 2.2.14 MetricsSystem
      • 2.2.15 SparkConf

一、Spark 简介

Spark官方网址:http://spark.apache.org
在这里插入图片描述
Spark是一个海量数据的统一分析引擎

Spark就是一款全栈的计算引擎,底层基于RDD(弹性式分布式数据集 Resilient Distributed Dataset),
主要是基于内存的计算,官网号称基于磁盘比mr快10倍,基于内存比mr块100倍。

RDD的解释

弹性:数据主要基于内存存储,如果内存不够,磁盘顶上;

数据集:就是一个普通的scala的不可变的集合(Array, Map,Set);

分布式:这个集合是分布式的,这个集合RDD被拆分成多个Partition(分区)存储在不同的机器里面;

一栈式:主要说的是,Spark不仅仅可以进行离线计算(SparkCore),同时还可以进行流式处理(SparkStreaming)、交互式计算(SparkShell,SparkSQL,StructStreaming),图计算(SparkGraphx),机器学习(SparkMLLib),也就是说我们可以在一个项目中,同时可以使用上述所有的框架,这是Spark相比较于其它框架最大的优势。

二、Spark的核心概念

2.1 名词解释

2.1.1 ClusterManager

在Standalone(spark自身集群模式)模式中即为Master(主节点),控制整个集群,监控Worker。
在YARN模式中为资源管理器。
Spark集群的管理,管理spark集群的资源(cpu core、内存),yarn中的话就是ResourceManager。

2.2.2 Worker

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

2.2.3 Driver

运行Application的main()函数并创建SparkContext。
负责向ClusterManager提交spark作业,组织spark作业,然后和spark集群中的executor进行交互。
Driver最重要的工作,就是创建SparkContext,而SparkContext就是Spark Application的入口。

2.2.4 Executor

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

2.2.5 SparkContext

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

2.2.6 RDD

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

Spark 总结 一_第1张图片

RDD,是一个抽象的概念,是弹性式分布式数据集。
弹性:既可以在内存,优先在内存存储并计算,如果内存不够,拿磁盘顶上。
数据集:就是一个普通的scala的不可变的集合。
分布式:一个完整的RDD数据集,被拆分成多个部分,在不同的机器里面存储。被拆分成的部分称之为该RDD的分区partition,就类似于hdfs中的一个文件file被拆分成多个block块存储一样。
真正存储数据的是partition,RDD不存储数据,RDD就是对这个partition的抽象。又因为RDD是一个scala集合,在scala集合上面有非常多个的算子操作,比如flatMap、map、reduce、sum等等。可以理解为是一个ADT(abstract data type抽象数据类型)

2.2.7 DAG Scheduler

实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,
然后生成相应的Task set放到TaskScheduler中。
非常重要的作业就是进行stage阶段的划分。

2.2.8 TaskScheduler

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

2.2.9 Stage

一个Spark作业一般包含一到多个Stage。
每次提交的是一个stage阶段的任务。

2.2.10 Task

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

2.2.11 Transformations

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

2.2.12 Actions

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

2.2.13 SparkEnv

线程级别的上下文,存储运行时的重要组件的引用。SparkEnv内创建并包含如下一些重要组件的引用:
MapOutPutTracker:负责Shuffle元信息的存储。
BroadcastManager:负责广播变量的控制与元信息的存储。
BlockManager:负责存储管理、创建和查找块。

2.2.14 MetricsSystem

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

2.2.15 SparkConf

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

你可能感兴趣的:(spark,学习总结)