spark基本概念——spark Core

spark优势:

速度快(相比hadoop)
迭代式、交互式
弹性数据集,容错
支持有向无环图的数据优化

(相比于mapreduce:mapreduce自身不支持交互,要支持交互,需要hive等,有交互接口)

 

spark的几种运行模式:

批处理:用于大规模的额分布式数据处理

流方式:spark流用于传送和处理实时数据

交互方式:常用于处理在内存中的大块数据,较低的延迟性

(spark内部采用内存中处理,运行完再放到磁盘中)

 

spark Core:

spark基本概念——spark Core

SPARK CORE:包含spark的主要基本功能。所有跟RDD有关的API都出自于SPARK CORE。
Spark SQL: Spark 中用于结构化数据处理的软件包。用户用户可以在Spark环境下用SQL语言处理数据。
Spark Streaming:Spark 中用来处理流数据的部件
MLlib:Spark 中用来进行机器学习和数学建模的软件包
GraphX:Spark 中用来进行图计算(如社交媒体关系) 的库函数
Cluster Managers:Spark 中用来管理机群或节点的软件平台.这包括Hadoop YARN, Apache Mesos, 和 Standalone Scheduler (Spark 自带的用于单机系统)

 

Spark生态圈的核心:
 负责从HDFS、Amazon S3和HBase等持久层读取数据
 在、YARN和Standalone为资源管理器调度Job完成分布式计算

 

spark Core 包括两个重要部件
 有向无环图(DAG)的分布式并行计算框架
 容错分布式数据RDD (Resilient Distributed Dataset)

 

RDD解析:

弹性分布式数据集分布在不同集群节点的内存中
可以理解成一大数组
数组的每一元素是RDD的一分区
RDD的每一分区是一数据块
一个RDD可以分布并被运算在多台计算机节点的内存及硬盘中
RDD数据块可以放在磁盘上也可放在内存中(取决于设置)
如出现缓存失效或丢失,RDD的分区可以重新计算刷新
RDD本身是不能被修改的
但RDD可以通过API (底层采用Scala)被变换生成新的RDD
有两类对RDD的操作:变换和操作

 

DAG解析:

有向无环图(DAG,Directed Acycle graph)的分布式并行计算框架
反应RDD之间的依赖关系
提供Cache机制来支持多次迭代计算或者数据共享以减少迭代计算之间读取数据集的开销
根据用户端对RDD的指令进行优化以减少系统开销

 

Spark Core部件解析

应用程序(Application): 基于Spark的用户程序,包含了一个Driver Program 和集群中多个的Executor;
驱动程序(Driver Program): 运行Application的main()函数并且创建SparkContext. 通常用SparkContext代表Driver Program
执行单元 (Executor): 是为某Application运行在Worker Node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上,每个Application都有各自独立的Executors
集群管理程序(Cluster Manager): 在集群上获取资源的外部服务(例如:Standalone、Mesos或Yarn);

 

操作(Operation):作用于RDD的各种操作分为TransformationAction
DAGScheduler: 把对Job中的RDD有向无环图根据依赖关系划分为多个Stage.每一个Stage是一个TaskSet,它还会根据RDD和Stage之间的关系找出开销最小的调度方法,然后把Stage以TaskSet的形式提交给TaskScheduler
Stage是一个TaskSet
TaskScheduler维护着所有Task的运行状态,重试失败的Task并把合适的把Task分发给Worker中的Executor

 

Spark Core 应用程序包括以下两部分

Driver
 初始化SparkContext (Spark 的入口)
 Executor部分运行完毕后将SparkContext关闭
Executor负责数据
 集合数据集
 文件数据集

 

ps:

spark的运行架构
在work端(多个)执行叫变换,filter等  懒执行
在driver端(1个)上收集和显示,collect()等  马上执行

spark算子2类:变换和操作

阶段stage就是一个任务集合taskset
job多个阶段组成的任务
阶段是根据操作之间的依赖关系,来划分的阶段,由多个任务集合组成
分配:有向无环图的任务集合cluster
提交:任务调度

资源处理方式:有local和yarn两种方式
yarn包括:client和cluster