您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据挖掘与识别 > spark入门及实践
2010’NJUPT之Spark云计算技术和大数据2010’NJUPT纲要Spark综述1核心技术2Spark架构3BDAS简介4函数式编程简介7Spark应用实例6Spark安装部署52010’NJUPT一、Spark综述Spark是什么1Mataizaharia2010’NJUPT一、Spark综述Spark与Hadoop22010’NJUPT一、Spark综述Spark与Hadoop32010’NJUPT一、Spark综述Spark发展现状32010’NJUPT纲要Spark综述1核心技术2Spark架构3BDAS简介4函数式编程简介7Spark应用实例6Spark安装部署52010’NJUPT二、Spark关键技术RDD的全称是弹性分布式数据集(resilientdistributeddataset)是Spark的核心数据模型,RDD是Spark中待处理的数据的抽象,它是逻辑中的实体。对于使用者来说,你得到的数据操作接口就是RDD,在对RDD进行处理的时候不需要考虑底层的分布式集群,就像在单机上一样即可,这也正是Spark的优势之一。什么是RDD12010’NJUPT二、Spark关键技术从Hadoop文件系统输入(比如HDFS)创建。从父RDD转换得到新的RDD。将数组或者集合这样的数据结构并行化,转化成RDD。通过cache()函数将计算后的RDD缓存到内存中。RDD创建方式22010’NJUPT二、Spark关键技术从逻辑上来看,RDD就是数据。而实际上,从物理上来看,RDD是一种分布式内存的抽象。Spark中的数据实际上是像HDFS那样分块存储RDD存储结构32010’NJUPT二、Spark关键技术分区列表计算每个分片的函数对父RDD的依赖对“键值对”数据类型RDD的分区器,控制分区策略和分区数。每个数据分区的地址列表。所以RDD实际上只是一个元数据对象,用于将对数据集的操作映射到物理存储之上。RDD的重要内部属性如下:2010’NJUPT二、Spark关键技术RDD中的依赖关系RDD之间的依赖关系可以分为两类:窄依赖:每个父RDD的分区都至多被一个子RDD的分区使用;窄依赖允许在单个集群节点上流水线式执行,这个节点可以计算所有父级分区。在窄依赖中,节点失败后的恢复更加高效。因为只有丢失的父级分区需要重新计算,并且这些丢失的父级分区可以并行地在不同节点上重新计算。宽依赖:多个子RDD的分区依赖一个父RDD的分区。宽依赖需要所有的父RDD数据可用并且数据已经通过类MapReduce的操作shuffle完成。在宽依赖的继承关系中,单个失败的节点可能导致一个RDD的所有先祖RDD中的一些分区丢失,导致计算的重新执行。2010’NJUPT二、Spark关键技术宽依赖和窄依赖的样例。每一个方框表示一个RDD,其内的阴影矩形表示RDD的分区。2010’NJUPT二、Spark关键技术TransformationTransformation操作是延迟计算的,也就是说从一个RDD转换生成另一个RDD的转换操作不是立即执行的,而是需要等到Action操作是才真正出发运算。ActionAction算子会触发Spark提交作业,并将数据输出到Spark系统。RDD操作算子,RDD中的操作算子可以分为两类:Transformation(变换)算子与Action(行动)算子。RDD算子42010’NJUPT二、Spark关键技术RDD算子操作举例如下:Valline=sc.textFile(Test.txt)line.map(n=Integer.parseInt(n)*Integer.parseInt(n)).reduce(_+_)2010’NJUPT二、Spark关键技术运行逻辑52010’NJUPTspark的容错机制6二、Spark关键技术2010’NJUPT二、Spark关键技术检查点支持:虽然lineage可用于错误后RDD的恢复,但对于很长的lineage的RDD来说,这样的恢复耗时较长。由此,可以考虑将某些RDD进行检查点操作(Checkpoint)保存到稳定存储上。Spark当前提供了为RDD设置检查点操作的API,让用户自行决定需要为哪些数据设置检查点操作。由于RDD的只读特性使得比常用的共享内存更容易做checkpoint.由于不需要关心一致性的问题,RDD的写出可在后台进行,而不需要程序暂停或进行分布式快照2010’NJUPT纲要Spark综述1核心技术2Spark架构3BDAS简介4Scala简介7Spark应用实例6Spark安装部署52010’NJUPT三、Spark体系架构架构组成1MasterWorker2010’NJUPT三、Spark体系架构架构图22010’NJUPT三、Spark体系架构角色任务3Master进程和Worker进程,对整个集群进行控制。Driver程序是应用逻辑执行的起点,负责作业的调度,即Task任务的分发Worker用来管理计算节点和创建Executor并行处理任务。Executor对相应数据分区的任务进行处理。2010’NJUPT三、Spark体系架构执行流程4Client提交应用,Master找到一个Worker启动DriverDriver向Master或者资源管理器申请资源,之后将应用转化为RDDGraphDAGScheduler将RDDGraph转化为Stage的有向无环图提交给TaskSchedulerTaskScheduler提交任务给Executor执行。2010’NJUPT纲要Spark综述1核心技术2Spark架构3BDAS简介4Scala简介7Spark应用实例6Spark安装部署52010’NJUPT四、BDAS简介目前,Spark已经发展成为包含众多子项目的大数据计算平台。伯克利将Spark的整个生态系统称为伯克利数据分析栈(BDAS),目前包含四个已经比较成熟的组件。2010’NJUPT四、BDAS简介谈到SparkSQL:首先需要从Shark说起。SparkSQL1.12010’NJUPT四、BDAS简介Shark起源1.22010’NJUPT四、BDAS简介Shark与hive1.32010’NJUPT四、BDAS简介SparkSQL1.42010’NJUPT四、BDAS简介SparkSQL特点1.5*数据兼容方面不但兼容Hive,还可以从RDD、JSON文件中获取数据*性能优化方面采取In-MemoryColumnarStorage、byte-codegeneration等优化技术*组件扩展方面无论是SQL的语法解析器、分析器还是优化器都可以重新定义,进行扩展。2010’NJUPT四、BDAS简介Overview1.6SparkSQL是一个用于结构化的数据处理的模块。SparkSQL和SparkRDDAPI的区别如下:1、SparkSQL的接口提供更多的关于数据以及操作的结构方面的信息。2、SparkSQL会利用这些信息对数据操作进行额外的优化。可以通过三种方式与SparkSQL进行交互:SQL、DataFramesAPI、DatasetsAPI这三种API/语言最终都同一个执行引擎完成操作。所以你可以选择任何一种舒服的方式来书写自己的数据处理逻辑。2010’NJUPT四、BDAS简介SQL1.7SparkSQL的使用方式之一是用来执行SQL查询。特性如下:同时支持标准的SQL语句和HiveQL能够从Hive表中读取数据(需要进行配置)查询结果将返回一个DataFrame支持在交互式环境中使用SQL语句2010’NJUPT四、BDAS简介DataFrames1.7DataFrame用来描述结构化的数据。Spark官方给出的定义为:ADataFrameisadistributedcollectionofdataorganizedintonamedcolumns.DataFrame概念上等同于关系型数据库中的一个表或者R/Python语言中的dataframe,不同的是Spark提供更丰富的优化。DataFrame可从多种资源中构建:结构化的数据文件、hive中的表、外部数据库、现有的RDD等。DataFrame提供了丰富的API。2010’NJUPT四、BDAS简介SparkStreaming2SparkStreaming是建立在Spark上的实时计算框架,通过它提供的丰富的API、基于内存的高速执行引擎,用户可以结合流式、批处理和交互试查询应用。SparkStreaming通过将流数据按指定时间片累积为RDD,然后将每个RDD进行批处理,进而实现大规模的流数据处理。其吞吐量能够超越现有主流流处理框架Storm,并提供丰富的API用于流数据计算。2010’NJUPT四、BDAS简介计算流程2.1SparkStreaming是将流式计算分解成一系列短小的批处理作业。把SparkStreaming的输入数据按照batchsize(如1秒)分成一段一段的数据,每一段数据都转换成Spark中的RDD将SparkStreaming中对DStream的Transformation操作变为针对Spark中对RDD的Transformation操作将RDD经过操作变成中间结果保存在内存中。整个流式计算根据业务的需求可以对中间的结果进行叠加,或者存储到外部设备。2010’NJUPT四、BDAS简介流程图2.22010’NJUPT四、BDAS简介spark与storm2.3处理模型,延迟:Storm处理的是每次传入的一个事件,而SparkStreaming是处理某个时间段窗口内的事件流。容错、数据保证:SparkStreaming使用Spark的血统容错机制,Storm单独跟踪每条记录,在错误恢复时可能出错。另一方面,SparkStreaming只需要在批级别进行跟踪处理,因此即便一个节点发生故障,也可以有效地保证每个batch将完全被处理一次。简而言之,如果你需要秒内的延迟,Storm是一个不错的选择,而且没有数据丢失。如果你需要有状态的计算,而且要完全保证每个事件只被处理一次,SparkStreaming则更好。2010’NJUPT四、BDAS简介GraphX32010’NJUPT四、BDAS简介GraphX架构3.12010’NJUPT四、BDAS简介GraphX存储结构3.2graphx借鉴powerGraph,使用的是vertexcut(点分割)方式存储图。缺点:每个点可能要存储多份,更新点要有数据同步开销。2010’NJUPT四、BDAS简介GraphX底层设计3.31、对Graph视图的所有操作,最终都会转换成其关联的Table视图的RDD操作来完成。2、两种视图底层共用的物理数据,由RDD[Vertex-Partition]和RDD[EdgePartition]这两个RDD组成。3、图的分布式存储采用点分割模式,而且使用partitionBy方法,由用户指定不同的划分策略。2010’NJUPT四、BDAS简介MLlib1MLlib是构建在Spark上的分布式机器学习库,充分利用了Spark的内存计算和适合迭代型计算的优势,使性能大幅提升,同时Spark算子丰富的表现力,让大规模机器学习的算法开发不再复杂。MLlib包含了分类、回归、聚类、协同过滤、数据降维等基本机器学习算法的实现。使用者也能够根据自己的业务需要,在这些算法之上进行进一步开发。2010’NJUPT纲要Spark综述1核心技术2Spark架构3BDAS简介4函数式编程简介7Spark应用开发实战6Spark安装部署52010’NJUPT五、Spark安装部署Spark部署模式1Spark有三种部署模式:1、standalone2、SparkonYarn3、SparkonMesos2010’NJUPT五、Spark安装部署Standalone1.12010’NJUPT五、Spark安装部署SparkOnMesos1.2Mesos是AMPlab
本文标题:spark入门及实践
链接地址:https://www.777doc.com/doc-7181927 .html