1、版权所有 2015 华为技术有限公司Spark架构原理前言版权所有 2015 华为技术有限公司第1页本章主要对Spark组件的应用场景,功能和架构以及在FusionInsight平台中的使用等进行简单介绍目标版权所有 2015 华为技术有限公司第2页学完本课程后,您将能够:理解Spark应用场景,了解Spark特点了解Spark计算能力及其技术架构了解Spark组件在FusionInsight 平台中的使用目录版权所有 2015 华为技术有限公司第3页1.Spark 应用场景应用场景Spark应用场景Spark特点2.Spark基本功能和技术架构3.Spark组件介绍Spark适用场景版权所有
2、 2015 华为技术有限公司第4页是什么Spark系统是分布式分布式批处理系批处理系统统和分析挖掘引擎分析挖掘引擎Spark 是AMP LAB贡献到Apache社区的开源项目,是AMP大数据栈的 基础组件做什么数据处理(Data Processing):可以用来快速处理数据,兼具容错性和可扩展性迭代计算(Iterative Computation):支持迭代计算,有效应对多步的数据处理逻辑数据挖掘(Data Mining):在海量数据基础上进行复杂的挖掘分析,可 支持各种数据挖掘和机器学习算法Spark适用场景大多数现有集群计算框架如Hadoop等基于从稳定存储(文件系统)到稳定存储的非循环数
3、据流-应对数据集重用型应用时低效,与 传统的MR任务的频繁读写磁盘数据相比,基于内存计算的Spark则 更适合应用与迭代计算,交互式分析等场景iter.1iter.2.HDFSreadHDFSwriteHDFSreadHDFSwriteInputInput.Data Sharing in MapReduceresult1result2result3.InputInput.query1Data Sharing in Spark版权所有 2015 华为技术有限公司第5页One-time processingDistributed memoryquery2HDFSreadquery3iter.1it
4、er.2query1query2query3Spark特点版权所有 2015 华为技术有限公司第6页轻:Spark核心代码有3万行。Scala语言的简洁和丰富表达力巧妙利用了Hadoop和Mesos的基础设施快:Spark对小数据集可达到亚秒级的延迟对大数据集的迭代机器学习即席查询、图计算等应用,Spark 版本比基于MapReduce、Hive和Pregel的实现快内存计算、数据本地性和传输优化、调度优化Spark特点版权所有 2015 华为技术有限公司第7页灵:Spark提供了不同层面的灵活性Scala语言trait动态混入策略(如可更换的集群调度器、序列化库)允许扩展新的数据算子、新的数
5、据源、新的language bindingsSpark支持内存计算、多迭代批量处理、即席查询、流处理和图 计算等多种范式巧:巧妙借力现有大数据组件Spark借Hadoop之势,与Hadoop无缝结合图计算借用Pregel和PowerGraph的API以及PowerGraph的点 分割思想本节总结版权所有 2015 华为技术有限公司第8页本章主要对Spark的产生背景和应用场景给予简单介绍,同时 介绍了spark的特点。目录版权所有 2015 华为技术有限公司第9页1.Spark应用场景2.Spark技术架构和基本技术架构和基本功能功能Spark系统架构Spark基本概念任务运行过程任务调度3.
6、Spark基本功能和技术架构Spark技术架构版权所有 2015 华为技术有限公司第10页Spark架构采用了分布式计算中的Master-Slave模型。Master是对应集群 中的含有Master进程的节点(ClusterManager),Slave是集群中含有 Worker进程的节点。Master作为整个集群的控制器,负责整个集群的正 常运行;Worker相当于是计算节点,接收主节点命令与进行状态汇报;Executor负责任务的执行,运行在Worker节点(在FI集群中,Master节点 即为Resourcemanager节点,Slave节点即为NodeManager节点);Spark的任
7、务流程:Client作为客户端提交应用,Master找到一个Worker 启动Driver(或者本地启动Driver),Driver向Master申请资源,之后将应用 转化为RDD Graph,再由DAGScheduler将RDD Graph转化为Stage后提交 给TaskScheduler,由TaskScheduler提交给Executor执行。Spark Application基本概念版权所有 2015 华为技术有限公司第11页Application:Spark用户程序,提交一次应用为一个App,一个App会启动一个SparkContext,也就是app的driver,驱动整个App的运
8、行Job:一个App可能包含多个Job,每个action算子对应一个Job;action算子有collect,count等。Stage:每个Job可能包含多层Stage,划分标记为shuffle过程;Stage按 照依赖关系依次执行。Task:具体执行任务的基本单位,被发到executor上执行。Spark基本概念版权所有 2015 华为技术有限公司第12页Cluster Manager:集群资源管理服务,通常包含主节点(主备)和多个 运行节点;支持运行模式有Standalone模式、on Mesos模式、on Yarn模 式(FI环境中使用Yarn作为spark任务调度的资源管理器)。Dri
9、ver:运行App的大脑,负责job的初始化,将job转换成task并提交执行DAGScheduler:是一个面向Stage层面的调度器,把Job分解成Stage,按照Stage提交TaskSet给TaskScheduler。TaskScheduler:提交Task给Executor运行,并管理执行结果。BlockManager:管理App运行周期的中间数据,比如存在内存、本地。Executor:是App运行在work 节点上的一个进程,该进程负责运行task,生命周期和App相同。Spark核心概念 RDD(ResilientDistributed Datasets)定义:只读的,可分区的分
10、布式数据集;数据集可全部或部分缓存 在内存中,在一个App多次计算间重用,RDD是Spark的核心。血统容错:根据血统(父子间依赖关系)重计算恢复丢失数据RDD操作:Transformation算子和Action算子。原 生 数 据 空 间存 储(e.g.H D F S)S c a l a 集 合 数 据 类 型S c a la 标 量 类 型输 入 算 子变 换 算 子缓 存 算 子行 动 算 子S p a r k R D D 空 间版权所有 2015 华为技术有限公司第13页R D D 父子依赖关父子依赖关系系:窄(Narrow)依赖和宽(Wide)依赖。窄依赖指父RDD的每 一个分区最多
11、被一个子RDD的分区所用。宽依赖指子RDD的分区依赖于父RDD的所 有分区。Spark核心概念 宽依赖和窄依赖Narrow Dependencies:map,filterunionjoin with inputs co-partitionedWide Dependencies:groupByKeyjoin with inputs not co-partitioned版权所有 2015 华为技术有限公司第14页unionStage 2Stage 3 A:B:G:Stage 1groupByC:D:F:mapE:joinSpark核心概念 Transformation和Action版权所有 201
12、5 华为技术有限公司第15页Transformation有如下几种:m ap(f:T =U):RDDT=RDD Ufifil ter(f:T =Bool):RDDT=RDDTflflatMap(f:T =SeqU):RDDT=RDDUgroupByKey():RDD(K,V)=RDD(K,SeqV)reduceByKey(f:(V,V)=V):RDD(K,V)=RDD(K,V)uni on():(RDDT,RDDT)=RDDTjoi n():(RDD(K,V),RDD(K,W)=RDD(K,(V,W)m apValues(f:V =W):RDD(K,V)=RDD(K,W)partitionBy
13、(p:PartitionerK):RDD(K,V)=RDD(K,V)Action有如下几种:count():RDDT=Long col l ect():RDDT=SeqTreduce(f:(T,T)=T):RDDT=T l ookup(k:K):RDD(K,V)=SeqVTransformation是懒操作,用于定义新的 RDD;而Action启动计 算操作,并向用户程序返回值或向外部存储写数据。运行过程构建Spark Application的运行环境(启动SparkContext)SparkContext向资源管理器(Standalone、Mesos、Yarn)申请 运行Executor资源
14、,并启动 StandaloneExecutorBackend Executor向SparkContext注册SparkContext启动应用程序DAG调度、Stage划分,TaskSet生成 Task Scheduler调度Taskset,将 task发放给Executor运行。Task在Executor上运行,运行完毕 释放所有资源。Task Schedule提交和监控Task资源管理器 分配并监控资源使用状况资源 汇报资源使用状况启动StandaloneExeutorBackendSparkContextTask1:注册并申请资源2:分配资源3:注册并申请Task版权所有 2015 华为技
15、术有限公司第16页4:注销RDD Objects构建DAG图DAG图DAG Scheduler将DAG图分解成StageTasksetCluster模式:Spark Driver启动在集群中,ResourceManager在集 群中分配一个container来启动Spark Driver驱动整个应用。Spark On Yarn模式App运行过程Node Manager ContainnerExecutorCACHEspark-submitNodeResource Manager1:提交 Application2:RM为Application 分配资源 启动Container3:SparkCon
16、text向RM申请 运行Executor资源 Node Manager4:SparkContext启动 StandaloneExecutorBackend并等 待Task(SparkContext分配Task给 Executor)5:Executor报告Task状态 直至完成6:注销Application,归还资源ContainerSparkContextRDD GraphContainerExecutorCACHE版权所有 2015 华为技术有限公司第17页ClientApplication jarTASKTASKScheduler.TASKTASKSpark应用调度Block manage
17、rRDD ObjectsDAGSchedulerTaskSchedulerWorkerCluster版权所有 2015 华为技术有限公司第18页rdd1.join(rdd2).groupBy(.).filter(.)build operator DAGsplit graph into stages of tasksstage as readylaunch tasks viacluster managerstraggling tasksexecute tasksblocksDAGTaskSetTask本章总结版权所有 2015 华为技术有限公司第19页本章主要介绍了Spark的基本概念,技术架构
18、,着重介绍了 Spark任务的进程运行,On Yarn模式,以及Spark 的应用调 度。目录版权所有 2015 华为技术有限公司第20页1.Spark应用场景2.Spark 基本功能和技术架构3.Spark组件介绍组件介绍Spark在FI界面呈现Spark常用进程Spark维护关键点1.服务状态信息、角色信息以及开 放的配置项2.管理操作:启停spark、下载 spark客户端、同步配置3.服务总体概况4.角色的显示和健康状况,点击相 应角色可查看角色下的实例FusionInsight平台为Spark服务提供了管理监控的可视化界面,通过Web UI界面,可完成以下动作:Spark的WebUI
19、呈现版权所有 2015 华为技术有限公司第21页Spark与其他组件交互版权所有 2015 华为技术有限公司第22页在FI集群中,Spark主要与以下组件进行交互:1)HDFS:Spark在HDFS文件系统中读写数据(必选)2)YARN:Spark任务的运行以来Yarn来进行资源的调度管理(必选)3)DBService:Spark-sql的表存储在Dbservice的数据库中(必选)4)Zookeeper,JDBCServer的HA的实现依赖于Zookeeper的协调(必选)5)Kafka:Spark可以接收Kafka发送的数据流(可选)6)Hbase:Spark可以操作Hbase的表(可选)
20、Spark常用进程版权所有 2015 华为技术有限公司第23页JDBCServer实际上是一个长驻的spark应用,通过shell_start-thriftserver.sh脚本启动。用户可以通过执行beeline脚本,连接JDBCServer,执行sql语句JobHistory是一个单节点进程,通过shell_start-history-server.sh脚本启动该进程用于提供HistoryServer页面,展示历史应用的执行信息服务维护关键点版权所有 2015 华为技术有限公司第24页Spark在FusionInsight平台中主要有三个角色,其中 SparkResource主要为Spar
21、k任务执行提供必要的资源,JobHistory 和JDBCServer这两个角色提供服务。当spark角色异常时,可到对应节点的/var/log/Bigdata/spark/路径下 查看相关日志;当Spark任务运行失败时,可通过FI的链接在yarn原生界面查看对应任 务的日志信息或者到yarn.nodemanager.log-dirs的位置查看相应的 container日志;如果任务已经运行完毕,且yarn上开启日志归集功能(通过yarn.log-aggregation-enable配置),则日志应到hdfs文件系统中 查看。本章总结版权所有 2015 华为技术有限公司第25页本章主要介绍了Spark组件再FusionInsight平台中的使用和 日志的记录的查询读取。学习推荐版权所有 2015 华为技术有限公司第26页华为Learning网站http:/
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。