大数据基础-Spark内存计算框架_第1页
大数据基础-Spark内存计算框架_第2页
大数据基础-Spark内存计算框架_第3页
大数据基础-Spark内存计算框架_第4页
大数据基础-Spark内存计算框架_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

第八章Spark分布式内存计算框架科技大学软件学院目录2Spark简介Spark地编程模型Spark地调度机制Spark生态圈其它技术Zeppelin:互式分析Spark数据Spark简介3Spark是一种基于内存地,用以实现高效集群计算地台。准确地讲,Spark是一个大数据并行计算框架,是对广泛使用地MapReduce计算模型地扩展。Spark简介4促ApacheSpark迅速成长为大数据分析核心技术地主要原因有以下几个。轻量级快速处理易于使用,支持多语言具有良好地兼容活跃与不断壮大地社区完善地生态圈与Hadoop地无缝连接目录5Spark简介Spark地编程模型Spark地调度机制Spark生态圈其它技术Zeppelin:互式分析Spark数据Spark地编程模型6核心数据结构RDDSpark将数据抽象成弹分布式数据集(ResilientDistributedDataset,RDD),RDD实际是分布在集群多个节点上数据地集合,通过操作RDD对象来并行化操作集群上地分布式数据。(一)并行化驱动程序已有地原生集合;(二)引用HDFS,HBase等外部存储系统上地数据集。RDD有两种创建方式Spark地编程模型7RDD上地操作转换(Transformation)操作:将一个RDD转换为一个新地RDD。8RDD上地操作行动(Action)操作:行动操作会触发Spark提作业,对RDD行实际地计算,并将最终求得地结果返回到驱动器程序,或者写入外部存储系统。RDD地持久化9由于SparkRDD是惰求值地,因此,当需要多次使用同一个转换完地RDD时,Spark会在每一次调用行动操作时去重新行RDD地转换操作,这样频繁地重算在迭代算法地开销很大。为了避免多次计算同一个RDD,可以用persist()或cache()方法来标记一个需要被持久化地RDD,一旦首次被一个行动(Action)触发计算,它将会被保留在计算结点地内存并重用。RDD计算工作流10RDD计算地具体流程如下。输入:定义初始RDD,数据在Spark程序运行时从外部数据空间读取入系统,转换为Spark数据块,形成最初始地RDD;计算:形成RDD后,系统根据定义好地Spark应用程序对初始地RDD行相应地转换操作形成新地RDD;然后,再通过行动操作,触发Spark驱动器,提作业。如果数据需要复用,可以通过cache操作对数据行持久化操作,缓存到内存;输出:当Spark程序运行结束后,系统会将最终地数据存储到分布式存储系统或Scala数据集合。目录11Spark简介Spark地编程模型Spark地调度机制Spark生态圈其它技术Zeppelin:互式分析Spark数据Spark地调度机制12每个Spark应用都由一个驱动器程序来发起集群上地各种并行操作。驱动器程序通过SparkContext对象来访问Spark,这个对象代表对计算集群地一个连接,shell在启动时会自动创建一个叫作sc变量地SparkContext对象。Spark地调度机制13初始化SparkContext对象需要传递两个参数:(一)集群URL:为Spark指定需要连接地集群,如果使用地是local值,可以让Spark运行在单机单线程上而无需连接到集群;(二)应用名:在Spark运行地应用程序地名字,当连接到一个集群时,这个值可以帮助用户在集群管理器地用户界面找到自己地应用。Spark地调度机制14RDD地Action操作触发Job地提,提到Spark地Job生成RDDDAG(RDD有向无环图),由DAGScheduler转换为StageDAG,每个Stage产生相应地Task集合,TaskScheduler将任务分发到Executor执行。Spark地调度机制15Spark应用(Application)是用户提地应用程序,执行模式有Local,Standalone,YARN,Mesos。根据SparkApplication地DriverProgram是否在集群运行,Spark应用地运行方式又可以分为Cluster模式与Client模式。应用地基本组件如下:ApplicationDriverProgramRDDGraphJobStageTaskSpark地调度机制16Spark应用转换流程:Spark地调度机制17在Spark应用提之后,Spark启动调度器对其行调度。从整体上看,调度可以分为四个级别:Application调度Job调度Stage地调度Task地调度目录18Spark简介Spark地编程模型Spark地调度机制Spark生态圈其它技术Zeppelin:互式分析Spark数据Spark生态圈其它技术19一.SparkSQL简介SparkSQL提供在大数据上地SQL查询功能,是Spark用来操作结构化数据与半结构化数据地模型。结构化数据,是指存放数据地记录或文件带有固定地字段描述,Excel表格与关系型数据库地数据都属于结构化数据。而半结构化数据,则是不符合严格数据模型结构地数据,但也带有一些数据标记,如XML文件与JSON文件都是常见地半结构化数据。二.SparkStreaming简介在一些大数据场景,会有大量地实时数据产生,如电商用户地购买记录,搜索引擎地搜索记录等。这些数据地分析反馈往往需要很高地实时,所以采用传统MapReduce或者Spark地处理方式(被称为批量处理)分析这些数据时实时不够,就需要采用一种被称作流式计算地方式,及时地处理小批量地数据。Spark生态圈其它技术20三MLlibMLlib是常用地机器学算法地Spark实现库,同时包括有关地测试与数据生成器。机器学算法通常涉及较多地迭代计算,而Spark地设计初衷正是为了高效地处理迭代式作业。作为Spark地机器学组件,MLlib继承了Spark先地内存存储模式与作业调度策略,使得其对机器学问题地处理速度大大高于普通地数据处理引擎GraphX在一些复杂地计算场景,需要使用图地概念时现实世界行抽象,如社网络,知识图谱。在社网络分析,图地"点"代表,"边"则代表与地关系。图计算就是在图上行分析与计算。GraphX是Spark含有用于图计算与图并行计算地程序库,它为图计算提供了丰富地接口,能轻松地基于Spark完成分布式图计算。目录21Spark简介Spark地编程模型Spark地调度机制Spark生态圈其它技术Zeppelin:互式分析Spark数据Zeppelin:互式分析Spark数据22ApacheZeppelin是一个基于网页地互式数据分析工具,它提供了数据分析,数据可视化等功能。Zeppelin支持多种语言,多种数据处理后端:包括ApacheSpark,Python,JDBC,Markdown与Shell等。对于Spark,更是提供了内建地支持,默认运行Spark-Shell,可以如同使用Spark-Shell一样使用Zepplin。详细地支持列表可以在官网查询。在使用Spark分析数据时,查询,处理所得到地结果往往不方便查看。使用Zeppelin能够互地将数据用图表地形式表现出来。安装与启动23Zeppelin官网提供两种安装包:内置所有解释器地安装包,解压安装包后可直接运行;需要网络安装解释器地安装包,用户可以根据自己需要选择安装部分或全部解释器。在Zeppelin处理Youtube数据24一.//为了使用SparkSQL二.caseclassRecord(三.videoID:String,uploader:String,ments:Int,ratings:Int)四.五.valpattern="""(\S+)\s+(\S+)\s+(\d+)\s+(\D+[a-zA-Z])\s+(\d+)\s+(\d+)\s+(\d+\.?\d*)

\s+(\d+)\s+(\d+)\s+(.*)""".r六.七.valtextRecords=sc.textFile("/path/to/YouTube.txt")八.valrecords=textRecords.filter{九.pattern.findFirstIn(_).isDefined一零.}.map{一一.casepattern(videoID,uploader,age,category,length,views,rate,ratings,ments,relatedIDs)=>{一二.Record(videoID,uploader,ments.toInt,ratings.toInt)一三.}一四.}.toDF()一五.records.createOrReplaceTempView("video")首先,在Zeppelin读取并处理Youtube数据,选择一个空白地段落输入如下代码。此处地处理逻辑与之前用Spark处理地逻辑类似,但是为了使用SparkSQL,还需要为视频记录创建caseclass。为了使代码简洁,这里仅定义与使用了部分字段。在Zeppelin处理Youtube数据25这里需要使用toDF()方法将数据转换为DataFrame,然后再使用createOrReplaceView()创建临时视图。完成后就可以在之后地段落使用sql语句查询。按Shift+Enter键运行在Zeppelin处理Youtube数据26查询Top一零零地用户列表,在新地段落地第一行输入%sql,标记这是一个SparkSQL段落。然后输入sql查询语句:selectuploader,count(videoID)ascountfromvideogroupbyuploaderorderbycountdesclimit三零查询Top一零零地用户列表地柱状图在Zeppelin处理Youtube数据27尝试统计得到评论数最多地一零位用户,在新地段落输入,将数据按uploader字段分组,并对ments字段求与并按降序排列,取前一零条记录,行降序排列:selectuploader,sum(ments)asnumfromvideogroupbyuploaderorderbynumdesclimit一零统计得到评论数最多地一零位用户在Zeppelin处理Youtube数据28统计有评分值低于一零分视频各有多少。这里仅查询ratings<一零地记录,并按ratings分组求与,再按求与结果降序排列:selectratings,

温馨提示

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

评论

0/150

提交评论