第2章Spark详细介绍_第1页
第2章Spark详细介绍_第2页
第2章Spark详细介绍_第3页
第2章Spark详细介绍_第4页
第2章Spark详细介绍_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Spark详细介绍,本章内容,Spark和Hadoop华山论剑Spark四大组件Spark相关概念和其它组件Spark运作模式Spark生态系统Spark适用场景和客户群,SparkVSHadoop1-1存储,传统Hadoop数据的抽取运算基于磁盘,中间结果也是存储在磁盘上。MR运算伴随着大量的磁盘IO:实际上第一代的Hadoop完全使用Hdfs存储中间结果,第二代的Hadoop加入了cache来保存中间结果。,SparkVSHadoop1-2存储,Spark则使用内存代替了传统HDFS存储中间结果:Spark是基于内存的中间数据集存储,可以将Spark理解为Hadoop的升级版本,Spark兼容了Hadoop的API。Spark支持多种数据底层存储,比Hadoop支持的广泛的多。Spark可以兼容HDFS,Hbase、AmazonS3等多种数据集,将这些数据集封装成RDD进行操作。,SparkVSHadoop2-1作业,对于Hadoop而言,一个Mapreduce程序就是一个Job,而一个Job里面可以有一个或多个Task,Task又可以区分为MapTask和ReduceTask:,SparkVSHadoop2-2作业,在Spark中,也有Job概念,但是这里的Job和Mapreduce中的Job不一样,它不是作业的最高级别的粒度,在它之上还有个Application。一个Application和一个SparkContext相关联,每个Application中可以有一个或多个Job,可以并行或者串行运行Job。Spark中的一个Action可以触发一个Job的运行。在Job里面又包含了多个Stagested,Stage是以Shufflefl进行划分的。在Stage中又包含了多个Task,多个Task构成了TaskSet。,SparkVSHadoop2-3作业,SparkVSHadoop3容错,Spark容错性比Hadoop更好。Spark引进了弹性分布式数据集RDD的抽象,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统”(即允许基于数据衍生过程)对它们进行重建。另外在RDD计算时可以通过CheckPoint来实现容错,而CheckPoint有两种方式:CheckPointData,和LoggingTheUpdates,用户可以控制采用哪种方式来实现容错。,SparkVSHadoop4通用性,Spark通用性也比Hadoop更好。Hadoop只提供了Map和Reduce两种操作。Spark提供的数据集操作类型有很多种,大致分为:Transformations和Actions两大类。Transformations包括Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join、Cogroup、MapValues、Sort和PartionBy等多种操作类型,同时还提供Count。Actions包括Collect、Reduce、Lookup和Save等操作。另外各个处理节点之间的通信模型不再像Hadoop只有Shuffle一种模式,用户可以命名、物化,控制中间结果的存储、分区等。,Spark四大组件1,SparkStreamingstri:m。SparkStreaming是构建在Spark上的,基于微批量方式的计算和处理,可以用于处理实时的流数据。它支持高吞吐量、支持容错。它使用DStream,简单来说就是一个弹性分布式数据集(RDD,详解见下章)系列,处理实时数据。其基本原理是将Stream数据分成小的时间片段(几秒),以类似batch批处理的方式来处理小部分数据。,Spark四大组件2,SparkSQL(Dataframesfremz框架,详解见下章)。SparkSQL是一种结构化数据查询,可以通过JDBCAPI将Spark数据集暴露出去,还可以用传统的BI和可视化工具在Spark数据上执行类似SQL的查询。用户还可以用SparkSQL对不同格式的数据(如JSON,Parquet以及数据库等)执行ETL,将其转化,然后暴露给特定的查询。,Spark四大组件3,SparkMLlib。MLLib是Spark生态系统里用来解决大数据机器学习问题的模块,它是一个可扩展的Spark机器学习库。由通用的学习算法和工具组成,包括二元分类、线性回归、聚类、协同过滤、梯度下降以及底层优化原语。主要用于机器学习和统计等场景。,Spark四大组件4,SparkGraphXrf。GraphX是构建于Spark上的图计算模型,它用于图计算和并行图计算。通过引入弹性分布式属性图(ResilientDistributedPropertyGraph),一种顶点和边都带有属性的有向多重图,扩展了SparkRDD。为了支持图计算,GraphX暴露了一个基础操作符集合(如subgraph,joinVertices和aggregateMessages)和一个经过优化的PregelAPI变体。此外,GraphX还包括一个持续增长的用于简化图分析任务的图算法和构建器集合。,Spark四大组件5,相关概念1-1,RDD是什么RDD全称为Resilient(rzljnt能复原的、有弹性的)Distributed(dstrbju:td分布式)Datasets(数据集)。RDD是Spark最核心的模块和类,是Spark操纵数据的一个高度抽象,即Spark所操作的数据集都是包装成RDD来进行操作的。例如Spark可以兼容处理Hadoop的HDFS数据文件,那么这个HDFS数据文件就是包装成Spark认识的RDD来完成数据抽取和处理的。RDD的英文原文定义RDDsarefault-tolerant,paralleldatastructuresthatletusersexplicitlypersistintermediateresultsinmemory,controltheirpartitioningtooptimizedataplacement,andmanipulatethemusingarichsetofoperators.RDD是一个能够让用户可以准确的将中间结果数据持久化到内存中的一个可用错的并行数据结构,可以控制(RDD数据集)分区,优化数据存储,并且有一组丰富的操作集可以操作这份数据。,相关概念1-2,RDD的获取从共享的文件系统获取,(如:HDFS)。通过已存在的RDD转换。将已存在scala集合(只要是Seq对象)并行化,通过调用SparkContext的parallelize方法实现改变现有RDD的之久性。RDD的特点它是在集群节点上的不可变的、已分区的集合对象,通过并行转换的方式来创建如(map,filter,join,etc),失败自动重建。可以控制存储级别(内存、磁盘等)来进行重用,必须是可序列化的,是静态类型的。,相关概念1-3,RDD的核心组件Client:客户端进程,负责提交作业到Master。Master:Standalone模式中主控节点,负责接收Client提交的作业,管理Worker,并命令Worker启动分配Driver的资源和启动Executor的资源。Worker:Standalone模式中slave节点上的守护进程,负责管理本节点的资源,定期向Master汇报心跳,接收Master的命令,启动Driver和Executor。Driver:一个Spark作业运行时包括一个Driver进程,也是作业的主进程,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler,TaskScheduler。Executor:即真正执行作业的地方,一个集群一般包含多个Executor,每个Executor接收Driver的命令LaunchTask,一个Executor可以执行一到多个Task。,相关概念2-1,DataFrame是什么DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。DataFrame与RDD的主要区别DataFrame带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型。这使得SparkSQL得以洞察更多的结构信息,从而对藏于DataFrame背后的数据源以及作用于DataFrame之上的变换进行了针对性的优化,最终达到大幅提升运行时效率的目标。反观RDD,由于无从得知所存数据元素的具体内部结构,SparkCore只能在stage层面进行简单、通用的流水线优化。,相关概念2-2,DataFrame特性支持从KB到PB级的数据量。支持多种数据格式和多种存储系统。通过Catalyst优化器进行先进的优化生成代码。通过Spark无缝集成主流大数据工具与基础设施。API支持Python、Java、Scala和R语言。,Spark其它组件1,SparkRR是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。SparkR是一个R语言包,它提供了轻量级的方式使得可以在R语言中使用Spark。使得R摆脱单机运行的命运,可以作为Spark的job运行在集群上,极大得扩展了R的数据处理能力。SparkR结构图,Spark其它组件2,MapReduceMR是Spark可以支撑的运算模式,比传统的HadoopMR的性能更好,并且操作集更加丰富。Spark的MR计算引擎的架构图,Spark外围组件1,Bagelbel(pregelpredelonspark)Pregel是Google鼎鼎有名的图计算框架,用于分布式图计算的计算框架,主要用于图遍历(BFS)、最短路径(SSSP)、PageRank计算等等。有传言Google的程序里面80%用的是MapReduce,20%用的是Pregel。Bagel是基于Spark的轻量级的Pregel的实现。,Spark外围组件2,Shark(HiveonSpark)Shark基本上就是在Spark的框架基础上提供和Hive一样的HiveQL命令接口。可以理解为SharkOnSpark,就是HiveOnHadoop,两者地位是一样的。Shark可以通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询和运算分析功能结合在一起(最大化RDD的重复使用)。,Spark的运作模式1,Spark的运行模式多种多样部署在单机上时,既可以用本地模式运行,也可以用伪分布式模式运行,该模式主要是为了方便调试。灵活多变而当以分布式集群的方式部署时,也有众多的运行模式可供选择,这取决于集群的实际情况。底层的资源调度既可以依赖于外部的资源调度框架,也可以使用Spark内建的Standalone(stndlon独立)模式。对于外部资源调度框架的支持,目前的实现包括相对稳定的Mesos模式,以及Hadoop的Yarn模式,实际上,Spark最初设计就是跑在这两个资源管理框架之上,Spark的运作模式2,Spark的运行模式图解,Spark的生态系统1,Spark生态圈也称为BDAS(伯克利数据分析栈),是伯克利APMLab实验室打造的,力图在算法(Algorithms)、机器(Machines)、人(People)之间通过大规模集成来展现大数据应用的一个平台。伯克利AMPLab运用大数据、云计算、通信等各种资源以及各种灵活的技术方案,对海量不透明的数据进行甄别并转化为有用的信息,以供人们更好的理解世界。该生态圈已经涉及到机器学习、数据挖掘、数据库、信息检索、自然语言处理和语音识别等多个领域。Spark生态圈以SparkCore为核心,从HDFS、AmazonS3和HBase等持久层读取数据,以MESS、YARN和自身携带的Standalone为资源管理器调度Job完成Spark应用程序的计算。这些应用程序可以来自于不同的组件,如SparkShell/SparkSubmit的批处理、SparkStreaming的实时处理应用、SparkSQL的即席查询、BlinkDB的权衡查询、MLlib/MLbase的机器学习、GraphX的图处理和SparkR的数学计算等等。,Spark的生态系统2,Spark生态圈,Spark的适用场景1,目前大数据处理场景有以下几个类型:复杂的批量处理(BatchDataProcessing),偏重点在于处理海量数据的能力,至于处理速度可忍受,通常的时间可能是在数十分钟到数小时。基于历史数据的交互式查询(InteractiveQuery),通常的时间在数十秒到数十分钟之间。基于实时数据流的数据处理(StreamingDataProcessing),通常在数百毫秒到数秒之间。目前对以上三种场景需求都有比较成熟的处理框架,第一种情况可以用Hadoop的MapReduce来进行批量海量数据处理,第二种情况可以Hive或Impala进行交互式查询,第三种情况可以用Storm分布式处理框架处理实时流式数据。以上三者都是比较独立,各自一套维护成本比较高。,Spark的适用场景2,然后,Spark这个一站式平台出现了:Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小,比如迭代算法,包括大部分机器学习算法MachineLearning和比如PageRank的图形算法。由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引,就是对于那种增量修改的应用模型不适合。数据量不是特别大,但是要求实时统计分析需求,比如交互式数据挖掘,用户大部分情况都会大量重复的使用导入RAM的数据(R、Excel、python)。需要持续长时间维护状态聚合的流式计算。,Spark的客户1,腾讯:复广点通是最早使用Spark的应用之一。腾讯大数据精准推荐借助Spark快速迭代的优势,围绕“数据+算法+系统”这套技术方案,实现了在“数据实时采集、算法实时训练、系统实时预测”的全流程实时并行高维算法,最终成功应用于广点通pCTR投放系统上,支持每天上百亿的请求量。基于日志数据的快速查询系统业务构建于Spark之上的Shark,利用其快速查询以及内存表等优势,承担了日志数据的即席查询工作。在性能方面,普遍比Hive高2-10倍,如果使用内存表的功能,性能将会比Hive快百倍。Yahoo:Yahoo将Spark用在AudienceExpansion中的应用。AudienceExpansion是广告中寻找目标用户的一种方法:首先广告者提供一些观看了广告并且购买产品的样本客户,据此进行学习,寻找更多可能转化的用户,对他们定向广告。Yahoo采用的算法是logisticregression。同时由于有些SQL负载需要更高的服务质量,又加入了专门跑Shark的大内存集群,用于取代商业BI/OLAP工具,承担报表/仪表盘和交互式/即席查询,同时与桌面BI工具对接。目前在Yahoo部署的Spark集群有112台节点,9.2TB内存。,Spark的客户2,淘宝:阿里搜索和广告业务,最初使用M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论