编辑: 黎文定 | 2019-07-02 |
2015 华为技术有限公司 Spark Application基本概念 ? Application: Spark用户程序,提交一次应用为一个App,一个App会启 动一个SparkContext,也就是app的driver,驱动整个App的运行 ? Job: 一个App可能包含多个Job,每个action算子对应一个Job;
action 算子有collect,count等. ? Stage: 每个Job可能包含多层Stage,划分标记为shuffle过程;
Stage按 照依赖关系依次执行. ? Task: 具体执行任务的基本单位,被发到executor上执行. 第12页 版权所有?
2015 华为技术有限公司 Spark基本概念 ? Cluster Manager: 集群资源管理服务,通常包含主节点(主备)和多个 运行节点;
支持运行模式有Standalone模式、on Mesos模式、on Yarn模式(FI环境中使用Yarn作为spark任务调度的资源管理器). ? Driver:运行App的大脑,负责job的初始化,将job转换成task并提交执行 ? DAGScheduler:是一个面向Stage层面的调度器,把Job分解成Stage , 按照Stage提交TaskSet给TaskScheduler. ? TaskScheduler:提交Task给Executor运行,并管理执行结果. ? BlockManager:管理App运行周期的中间数据,比如存在内存、本地. ? Executor: 是App运行在work 节点上的一个进程,该进程负责运行task ,生命周期和App相同. 第13页 版权所有?
2015 华为技术有限公司 Spark核心概念 C RDD(Resilient Distributed Datasets) ? 定义:只读的,可分区的分布式数据集;
数据集可全部或部分缓存 在内存中,在一个App多次计算间重用,RDD是Spark的核心. ? 血统容错:根据血统(父子间依赖关系)重计算恢复丢失数据 ? RDD操作: Transformation算子和Action算子. 第14页 版权所有?
2015 华为技术有限公司 RDD父子依赖关系:窄(Narrow)依赖和宽(Wide)依赖.窄依赖指父RDD的每 一个分区最多被一个子RDD的分区所用.宽依赖指子RDD的分区依赖于父RDD的所 有分区. Spark核心概念 C 宽依赖和窄依赖 第15页 版权所有?
2015 华为技术有限公司 Spark核心概念 C Transformation和Action Transformation有如下几种: map(f: T => U): RDD[T] => RDD [U] ?lter(f: T => Bool): RDD[T] => RDD[T] ?atMap(f: T => Seq[U]): RDD[T] => RDD[U] groupByKey(): RDD[(K, V)] => RDD[(K, Seq[V])] reduceByKey(f: (V,V) => V): RDD[(K, V)] => RDD[(K, V)] union(): (RDD[T],RDD[T]) => RDD[T] join(): (RDD[(K, V)],RDD[(K, W)]) => RDD[(K, (V, W))] mapValues(f: V => W): RDD[(K, V)] => RDD[(K, W)] partitionBy(p: Partitioner[K]): RDD[(K, V)] => RDD[(K, V)] Action有如下几种: count(): RDD[T] => Long collect(): RDD[T] => Seq[T] reduce( f: (T,T) => T): RDD[T] => T lookup(k: K): RDD[(K, V)] => Seq[V] ? Transformation是懒操作,用于定义新的 RDD;
而Action启动计 算操作,并向用户程序返回值或向外部存储写数据. 第16页 版权所有?
2015 华为技术有限公司 运行过程 ? 构建Spark Application的运行环境 (启动SparkContext) ? SparkContext向资源管理器 (Standalone、Mesos、Yarn)申请 运行Executor资源,并启动 StandaloneExecutorBackend ? Executor向SparkContext注册 ? SparkContext启动应用程序DAG调度、Stage划分,TaskSet生成 ? Task Scheduler调度Taskset,将task发放给Executor运行. ? Task在Executor上运行,运行完毕 释放所有资源. 第17页 版权所有?
2015 华为技术有限公司 ? Cluster模式:Spark Driver启动在集群中, ResourceManager在集 群中分配一个container来启动Spark Driver驱动整个应用. Spark On Yarn模式App运行过程 第18页 版权所有?
2015 华为技术有限公司 Spark应用调度 第19页 版权所有?
2015 华为技术有限公司 本章总结 ? 本章主要介绍了Spark的基本概念,技术架构,着重介绍了 Spark任务的进程运行,On Yarn模式,以及Spark 的应用调 度. 第20页 版权所有?