ImageVerifierCode 换一换
格式:PPT , 页数:72 ,大小:3.48MB ,
资源ID:5887092      下载积分:16 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/5887092.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(spark入门及实践PPT.ppt)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

spark入门及实践PPT.ppt

1、单击此处编辑母版标题样式,#,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2010NJUPT,Title:,Type,:Arial Bold,Size:28pt,Color:blue,Subtitle:,Type:,Arial,Size:,24pt,Color:Blue,Text,(2-5,Level,),Type:Arial,Size:24,pt,Color:blue,R:23 G:55 B:94,R:55 G:96 B:146,R:85 G:142 B:213,R:255 G:51 B:0,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#

2、,之,Spark,胡楠,计算机学院,云计算技术和大数据,1,纲要,Spark,综述,1,核心技术,2,Spark,架构,3,BDAS,简介,4,函数式编程简介,7,Spark,应用实例,6,Spark,安装部署,5,2,一、,Spark,综述,Spark,是什么,1,Spark,是基于内存计算的大数据并行计算框架。,Spark,基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将,Spark,部署在大量廉价硬件之上,形成集群。,Spark,于,2009,年诞生于加州大学伯克利分校,AMPLab,。并且于,2010,年开源。,2013,年,6,月,Spa

3、rk,进入,Apache,孵化器。目前,已经成为,Apache,软件基金会旗下的顶级开源项目。,people.csail.mit.edu/matei/,Matai zaharia,3,一、,Spark,综述,Spark,与,Hadoop,2,Spark,相比,HadoopMapRedue,的优势如下:,1,、,中间结果输出,基于,MapReduce,的计算模型会将中间结果序列化到磁盘上。而,Spark,将执行模型抽象为通用的有向无环图执行计划。且可以将中间结果缓存内存中。,2,、,数据格式和内存布局,Spark,抽象出分布式内存存储结构,RDD,,进行数据存储。,Spark,能够控制数据在不同

4、节点上的分区,用户可以自定义分区策略。,4,一、,Spark,综述,Spark,与Hadoop,3,3,、执行策略,MapReduce,在数据,shuffle,之前总是花费大量时间来排序。,Spark,支持基于,Hash,的分布式聚合,在需要的时候再进行实际排序。,4,、任务调度的开销,MapReduce,上的不同作业在同一个节点运行时,会各自启动一个,JVM,。而,Spark,同一节点的所有任务都可以在一个,JVM,上运行。,5,一、,Spark,综述,Spark,发展现状,3,Spark,生态随着,BDAS,的完善,已经成型。,Spark,全面兼容,Hadoop,的数据持久层。从而让把计算

5、任务从原来的,MapReduce,计算任务迁移到,Spark,中更加简单。,目前,Spark,的工业应用在国内已经大范围落地。包括,BAT,在内的一众互联网公司都建立了自己的,Spark,集群,6,纲要,Spark,综述,1,核心技术,2,Spark,架构,3,BDAS,简介,4,函数式编程简介,7,Spark,应用实例,6,Spark,安装部署,5,7,二、,Spark,关键技术,RDD,的全称是弹性分布式数据集(,resilient distributed dataset,)是,Spark,的核心数据模型,,RDD,是,Spark,中待处理的数据的抽象,它是逻辑中的实体。,对于使用者来说,

6、你得到的数据操作接口就是,RDD,,在对,RDD,进行处理的时候不需要考虑底层的分布式集群,就像在单机上一样即可,这也正是,Spark,的优势之一。,什么是,RDD,1,8,二、,Spark,关键技术,从,Hadoop,文件系统输入(比如,HDFS,)创建。,从父,RDD,转换得到新的,RDD,。,将数组或者集合这样的数据结构并行化,转化成,RDD,。,通过,cache(),函数将计算后的,RDD,缓存到内存中。,RDD,创建方式,2,9,二、,Spark,关键技术,从逻辑上来看,,RDD,就是数据。而实际上,从物理上来看,,RDD,是一种分布式内存的抽象。,Spark,中的数据实际上是像,H

7、DFS,那样分块存储,RDD,存储结构,3,10,二、,Spark,关键技术,分区列表,计算每个分片的函数,对父,RDD,的依赖,对“键值对”数据类型,RDD,的分区器,控制分区策略和分区数。,每个数据分区的地址列表。,所以,RDD,实际上只是一个元数据对象,用于将对数据集的操作映射到物理存储之上。,RDD,的重要内部属性如下:,11,二、,Spark,关键技术,RDD,中的依赖关系,RDD,之间的依赖关系可以分为两类:,窄依赖:每个父,RDD,的分区都至多被一个子,RDD,的分区使用;,窄依赖允许在单个集群节点上流水线式执行,这个节点可以计算所有父级分区。,在窄依赖中,节点失败后的恢复更加高

8、效。因为只有丢失的父级分区需要重新计算,并且这些丢失的父级分区可以并行地在不同节点上重新计算。,宽依赖:多个子,RDD,的分区依赖一个父,RDD,的分区。,宽依赖需要所有的父,RDD,数据可用并且数据已经通过类,MapReduce,的操作,shuffle,完成。,在宽依赖的继承关系中,单个失败的节点可能导致一个,RDD,的所有先祖,RDD,中的一些分区丢失,导致计算的重新执行。,12,二、,Spark,关键技术,宽依赖和窄依赖的样例。每一个方框表示一个,RDD,,其内的阴影矩形表示,RDD,的分区。,13,二、,Spark,关键技术,Transformation,Transformation,

9、操作是延迟计算的,也就是说从一个,RDD,转换生成另一个,RDD,的转换操作不是立即执行的,而是需要等到,Action,操作是才真正出发运算。,Action,Action,算子会触发,Spark,提交作业,并将数据输出到,Spark,系统。,RDD,操作算子,,RDD,中的操作算子可以分为两类:,Transformation,(变换)算子,与,Action,(行动)算子。,RDD,算子,4,14,二、,Spark,关键技术,RDD,算子操作举例如下:,Val line=sc.textFile(Test.txt),line.map(n=Integer.parseInt(n)*Integer.pa

10、rseInt(n).reduce(_+_),15,二、,Spark,关键技术,运行逻辑,5,16,spark,的容错机制,6,二、,Spark,关键技术,基于血统的容错机制(,lineage,):,在,spark,中,RDD,具有不变性,在数据处理过程中,,spark,通过,lineage,图记录了各个,RDD,之间的变换关系,一旦某个数据处理过程出现错误,,spark,可以根据,lineage,图快速进行容错恢复。,特别是对于,map,操作来说,当某个节点的任务失败,,spark,只需要重新计算相应分区的数据,而不必将整个任务重新计算。,在很多分布式数据处理系统中通过备份来进行容错,相比于这

11、种会导致巨大存储消耗的容错方式,,spark,的,lineage,图只需要十几,kb,的存储空间。,Spark,允许用户将数据,cache,下来,对于将来可能频繁使用的某个计算结果,将这个,RDDcache,下来是明智的选择。,17,二、,Spark,关键技术,检查点支持:,虽然,lineage,可用于错误后,RDD,的恢复,但对于很长的,lineage,的,RDD,来说,这样的恢复耗时较长。由此,可以考虑将某些,RDD,进行检查点操作,(Checkpoint),保存到稳定存储上。,Spark,当前提供了为,RDD,设置检查点操作的,API,让用户自行决定需要为哪些数据设置检查点操作。,由于,

12、RDD,的只读特性使得比常用的共享内存更容易做,checkpoint.,由于不需要关心一致性的问题,,RDD,的写出可在后台进行,而不需要程序暂停或进行分布式快照,18,纲要,Spark,综述,1,核心技术,2,Spark,架构,3,BDAS,简介,4,Scala,简介,7,Spark,应用实例,6,Spark,安装部署,5,19,三、,Spark,体系架构,架构组成,1,Master,Worker,20,三、,Spark,体系架构,架构图,2,21,三、,Spark,体系架构,角色任务,3,Master,进程和,Worker,进程,对整个集群进行控制。,Driver,程序是应用逻辑执行的起点

13、,负责作业的调度,即,Task,任务的分发,Worker,用来管理计算节点和创建,Executor,并行处理任务。,Executor,对相应数据分区的任务进行处理。,22,三、,Spark,体系架构,执行流程,4,Client,提交应用,,Master,找到一个,Worker,启动,Driver,Driver,向,Master,或者资源管理器申请资源,之后将应用转化为,RDD Graph,DAGScheduler,将,RDD Graph,转化为,Stage,的有向无环图提交给,TaskScheduler,TaskScheduler,提交任务给,Executor,执行。,23,纲要,Spark,

14、综述,1,核心技术,2,Spark,架构,3,BDAS,简介,4,Scala,简介,7,Spark,应用实例,6,Spark,安装部署,5,24,四、,BDAS,简介,目前,,Spark,已经发展成为包含众多子项目的大数据计算平台。伯克利将,Spark,的整个生态系统称为伯克利数据分析栈(,BDAS,),目前包含四个已经比较成熟的组件。,25,四、,BDAS,简介,谈到,Spark SQL,:首先需要从,Shark,说起。,Spark SQL,1,.1,26,四、,BDAS,简介,Shark,起源,1,.,2,为了,给熟悉,RDBMS,但又不理解,MapReduce,的技术人员提供快速上手的工

15、具,,Hive,应运而生,它是当时唯一运行在,Hadoop,上的,SQL-on-Hadoop,工具。但是,MapReduce,计算过程中大量的中间磁盘落地过程消耗了大量的,I/O,,降低的运行效率,为了提高,SQL-on-Hadoop,的效率,大量的,SQL-on-Hadoop,工具开始产生。,其中就包括,Shark,27,四、,BDAS,简介,Shark,与,hive,1,.,3,Shark,基于,Hive,修改了内存管理、物理计划、执行三个模块,并使之能运行在,Spark,引擎上,从而使得,SQL,查询的速度得到,10-100,倍的提升,28,四、,BDAS,简介,Spark SQL,1,

16、.,4,Shark,缺陷:,Shark,对于,Hive,的太多依赖,制约了,Spark,的,One Stack Rule Them All,的既定方针,制约了,Spark,各个组件的相互集成,SparkSQL,抛弃原有,Shark,的代码,汲取了,Shark,的一些优点,如内存列存储(,In-Memory Columnar Storage,)、,Hive,兼容性等,重新开发了,SparkSQL,代码;,由于摆脱了对,Hive,的依赖性,,SparkSQL,无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便,29,四、,BDAS,简介,Spark SQL,特点,1,.,5,*数据兼容方面

17、不但兼容,Hive,,还可以从,RDD,、,JSON,文件中获取数据,*性能优化方面 采取,In-Memory Columnar Storage,、,byte-code generation,等优化技术,*组件扩展方面 无论是,SQL,的语法解析器、分析器还是优化器都可以重新定义,进行扩展。,30,四、,BDAS,简介,Overview,1,.,6,Spark SQL,是一个用于结构化的数据处理的模块。,Spark SQL,和,Spark RDD API,的区别如下:,1,、,Spark SQL,的接口提供更多的关于数据以及操作的结构方面的信息。,2,、,Spark SQL,会利用这些信息对数

18、据操作进行额外的优化。,可以通过三种方式与,Spark SQL,进行交互:,SQL,、,DataFrames API,、,Datasets API,这三种,API/,语言最终都同一个执行引擎完成操作。所以你可以选择任何一种舒服的方式来书写自己的数据处理逻辑。,31,四、,BDAS,简介,SQL,1,.,7,Spark SQL,的使用方式之一是用来执行,SQL,查询。,特性如下:,同时支持标准的,SQL,语句和,HiveQL,能够从,Hive,表中读取数据(需要进行配置),查询结果将返回一个,DataFrame,支持在交互式环境中使用,SQL,语句,32,四、,BDAS,简介,DataFrame

19、s,1,.,7,DataFrame,用来描述结构化的数据。,Spark,官方给出的定义为:,A DataFrame is a distributed collection of data organized into named columns.,DataFrame,概念上等同于关系型数据库中的一个表或者,R/Python,语言中的,data frame,,,不同的是,Spark,提供更丰富的优化。,DataFrame,可从多种资源中构建:结构化的数据文件、,hive,中的表、外部数据库、现有的,RDD,等。,DataFrame,提供了丰富的,API,。,33,四、,BDAS,简介,Spark

20、 Streaming,2,Spark Streaming,是建立在,Spark,上的实时计算框架,通过它提供的丰富的,API,、基于内存的高速执行引擎,用户可以结合流式、批处理和交互试查询应用。,Spark Streaming,通过将流数据按指定时间片累积为,RDD,,然后将每个,RDD,进行批处理,进而实现大规模的流数据处理。其吞吐量能够超越现有主流流处理框架,Storm,,并提供丰富的,API,用于流数据计算。,34,四、,BDAS,简介,计算流程,2.1,Spark Streaming,是将流式计算分解成一系列短小的批处理作业。把,Spark Streaming,的输入数据按照,batc

21、h size,(如,1,秒)分成一段一段的数据,每一段数据都转换成,Spark,中的,RDD,将,Spark Streaming,中对,DStream,的,Transformation,操作变为针对,Spark,中对,RDD,的,Transformation,操作,将,RDD,经过操作变成中间结果保存在内存中。整个流式计算根据业务的需求可以对中间的结果进行叠加,或者存储到外部设备。,35,四、,BDAS,简介,流程图,2.2,36,四、,BDAS,简介,spark,与,storm,2.3,处理模型,延迟,:,Storm,处理的是每次传入的一个事件,而,Spark Streaming,是处理某个

22、时间段窗口内的事件流,。,容错、数据保证,:,Spark Streaming,使用,Spark,的血统容错机制,,Storm,单独跟踪每条记录,在错误恢复时可能出错。,另一方面,,Spark Streaming,只需要在批级别进行跟踪处理,因此即便一个节点发生故障,也可以有效地保证每个,batch,将完全被处理一次。,简而言之,如果你需要秒内的延迟,,Storm,是一个不错的选择,而且没有数据丢失。如果你需要有状态的计算,而且要完全保证每个事件只被处理一次,,Spark Streaming,则更好。,37,四、,BDAS,简介,GraphX,3,Graphx,是,Spark,生态中的非常重要的

23、组件,可以对图这种数据结构进行并行的处理计算。,GraphX,基于,BSP,(整体同步并行计算模型)模型,在,Spark,之上封装类似,Pregel,(,google,的图计算框架)的接口,。,GraphX,通过引入*,Resilient Distributed Property Graph*,扩展了,Spark RDD,这种抽象数据结构,38,四、,BDAS,简介,GraphX,架构,3,.1,39,四、,BDAS,简介,GraphX,存储结构,3.2,graphx,借鉴,powerGraph,,使用的是,vertexcut(,点分割,),方式存储图。,优点:,任何一条边只会出现在一台机器上

24、,对边的操作进行起来比较简单。网络开销小,缺点:,每个点可能要存储多份,更新点要有数据同步开销,。,40,四、,BDAS,简介,GraphX,底层设计,3.3,1,、,对,Graph,视图的所有操作,最终都会转换成其关联的,Table,视图的,RDD,操作来完成。,2,、,两种视图底层共用的物理数据,由,RDDVertex-Partition,和,RDDEdgePartition,这两个,RDD,组成。,3,、,图的分布式存储采用点分割模式,而且使用,partitionBy,方法,由用户指定不同的划分策略,。,41,四、,BDAS,简介,MLlib,1,MLlib,是构建在,Spark,上的分

25、布式机器学习库,充分利用了,Spark,的内存计算和适合迭代型计算的优势,使性能大幅提升,同时,Spark,算子丰富的表现力,让大规模机器学习的算法开发不再复杂。,MLlib,包含了分类、回归、聚类、协同过滤、数据降维等基本机器学习算法的实现。使用者也能够根据自己的业务需要,在这些算法之上进行进一步开发。,42,纲要,Spark,综述,1,核心技术,2,Spark,架构,3,BDAS,简介,4,函数式编程简介,7,Spark,应用开发实战,6,Spark,安装部署,5,43,五、,Spark,安装部署,Spark,部署模式,1,Spark,有三种部署模式:,1,、,standalone,2,、

26、,Spark on Yarn,3,、,Spark on Mesos,44,五、,Spark,安装部署,Standalone,1,.1,自带完整的服务,包括资源调度和文件管理都由自己完成,可单独部署到一个集群中,。,无需依赖任何其他资源管理系统。,目前,Spark,在,standalone,模式下是没有任何单点故障问题的,这是借助,zookeeper,实现的,思想类似于,Hbase master,单点故障解决方案。,45,五、,Spark,安装部署,Spark,On Mesos,1,.2,Mesos,是,AMPlab,开发的资源调度器,,Spark,可以在其上以插件的形式运行。,正因为,Meso

27、s,与,Spark,同出一源,所以,Spark,运行在,Mesos,更加灵活,自然。,Spark On Mesos,有两种调度模式:,粗粒度模式,(,Coarse-grained Mode,),细粒度模式,(,Fine-grained Mode,),46,五、,Spark,安装部署,Spark On Yarn,1,.3,这是一种最有前景的部署模式。但限于,YARN,自身的发展,目前仅支持粗粒度模式(,Coarse-grained Mode,)。,YARN,上的,Container,资源是不可以动态伸缩的,一旦,Container,启动之后,可使用的资源不能再发生变化,不过这个已经在,YARN,

28、计划中了。,47,五、,Spark,安装部署,Spark,部署实战,2,给大家演示,Spark on Yarn,的部署过程。,部署在最简单的集群之上:两个节点,一个,master,和一个,slave,服务器操作系统是,ubuntu12,Hadoop,版本:,2.2.0,Spark,版本:,1.0.2,JDK,版本:,1.7,Scala,版本:,2.10.4,Master,:,192.168.1.131,Slave,:,192.168.1.125,48,五、,Spark,安装部署,首先安装,Scala,:,下载地址:,www.scala-lang.org/download/,下载完成后将,Sca

29、la-2.10.4.tgz,上传至,linux,主机中,解压:,tar-zxvf Scala-2.10.4.tgz-C/cloud/,配置环境变量:,在,/etc/profile,文件中添加:,export SCALA_HOME=/cloud/scala-2.10.4,export PATH=$SCALA_HOME/bin:$PATH,保存退出,,source/etc/profile,使配置生效。,49,五、,Spark,安装部署,安装,Spark,进入官网下载,Spark,程序包,下载地址:,spark.apache.org/downloads.html,下载,spark-1.0.2-bin

30、-hadoop2.tgz,解压:,tar-zxvf spark-1.0.2-bin-hadoop2.tgz-C/cloud,接下来修改,Spark,的配置文件,这里对,Spark,进行简单配置,50,五、,Spark,安装部署,1,、修改,conf/spark-env.sh,在文件中添加以下参数:,export SCALA_HOME=/cloud/scala-2.10.4,export JAVA_HOME=/cloud/jdk1.7.0_80,export SPARK_WORKER_MEMORY=6g,export SPARK_MASTER_IP=192.168.1.131,export MA

31、STER=spark:/192.168.1.131:7077,2,、修改,conf/slaves,文件:,本次示例集群有两个节点,一个,master,节点和一个,slave1,节点。所以在,slaves,文件中只需要添加:,slave1,51,五、,Spark,安装部署,接下来同步至,slave,节点:,首先,同步,scala,。,scp-r/cloud/scala-2.10.4usernamemaster:/cloud,然后是,spark,:,scp-r/cloud/spark-1.0.2-bin-hadoop2/usernamemaster:/cloud/,最后修改,slave1,上的,/

32、etc/profile,文件和,master,节点一致。记得,source/etc/profile,。,提示:如果有多个从节点,这样同步会很麻烦,可以用,pssh,批量操作。,52,五、,Spark,安装部署,启动,Spark,首先启动,Hadoop:,Start-all.sh,然后启动,Spark,cd/cloud/spark-1.0.2-bin-hadoop2/sbin,./start-all.sh,正常情况下,,master,节点会出现,master,进程,可以用,jps,查看:,#jps,23489 Jps,1258 Worker,1364 DataNode,24587 NodeMan

33、ager,#jps,23526 Jps,2112 Master,7235 NameNode,7598 SecondaryNameNode,7569 ResourceManager,worker,节点会有,worker,进程:,53,纲要,Spark,综述,1,核心技术,2,Spark,架构,3,BDAS,简介,4,函数式编程简介,7,Spark,应用实例,6,Spark,安装部署,5,54,六、,Spark,应用开发实战,Wordcount,相当于大数据应用程序中的“,Hello World,”,本次演示的,WordCount,是在,eclipse,下编写,目前大部分的,Scala,开发者都比

34、较推崇,IntelliJ IDEA,。,如果电脑配置还不错的话,推荐用这个,IDEA.,以上开发工具都可以在,Scala,官网找到下载链接,scala-ide.org/,55,六、,Spark,应用开发实战,编程准备,1,首先,FIle-New-Scala project,:新建一个,Scala,工程,名称就叫,TestSpark_01,好了。,JRE,选择,1.7/1.8,都可以。,然后在工程中的,src,文件夹上面右击,-new-Package,,建立一个包。,最后在包上面右击,-New-Scala Object,,这里要注意一下,选择的是,Scala Object,,而不是,Scala

35、Class,。,56,六、,Spark,应用开发实战,编程准备,2,注意在写代码之前一定要先导入相关的依赖。,首先要将工程中自动生成的,Scala library container,文件夹删除,否则工程会由于,Scala,版本冲突出现错误。,然后在,Spark,安装目录的,lib,目录下找到,spark-assembly-1.3.0-hadoop2.3.0.jar,这个文件,以,“spark-assembly-”,开头,后面的因版本而异。,这个就是,Spark,程序的依赖,jar,包。在工程上右击,新建一个名为,lib,的文件夹,将,jar,包复制过来,然后在,jar,包上右击,-build

36、path-add to buildpath,即可。,57,六、,Spark,应用开发实战,写代码,3,1.package cn.hunan,2.,3.import org.apache.spark._,4.import org.apache.spark.SparkContext._,5.,6.object WordCount,7.def main(args:ArrayString),8.val conf=new SparkConf(),9.val sc=new SparkContext(conf),10.val line=sc.textFile(args(0),11.,val result=l

37、ine.flatMap(_.split(a-zA-Z+).map(_,1).reduceByKey(_+_),13.result.saveAsTextFile(args(1),14.sc.stop(),15.,16.,58,六、,Spark,应用开发实战,生成,jar,包,4,接下来就可以导出,jar,包了。在,WordCount.Scala,文件上右击,-Export,然后选择,JAR file,包名为,WC.jar,存放在,E,:,myjar,目录下。接下来需要把,Jar,包上传至,Spark,集群。我用的是,SecureCRT,这个工具,用这个工具链接,master,节点后,按,alt+

38、p,即可调出,SFTP,文件传输窗口。,59,六、,Spark,应用开发实战,运行,Jar,5,在,HDFS,上传一个测试文本,用于,wordcount,。,hadoop fs-put Jane1.txt/Spark/Jane1.txt,切换到目录,SPARK_HOME/bin,目录下:在,linux shell,中执行以下命令:,./spark-submit-classcn.hunan.WordCount-,masteryarn/HunanJar/WC.jar/Spark/Jane1.txt,/Spark/out,60,六、,Spark,应用开发实战,运行结果,6,等待执行结束后就可以看到在

39、,HDFS:/Spark/out,目录下生成了以下文件:,61,七、函数式编程简介,为什么要学,Scala,?,1,Scala,是,Spark,的原生语言。而,Spark,又是一个开源项目,开源项目一般是免费供大家使用,源代码也是完全公开。这是开源的优势。,但是开源软件正因为是免费的,所以在遇到问题的时候,软件作者并没有义务为你解决问题,如果用的是收费的商业软件,就有很多的售后支持。所以,对于开源使用者来说,了解源码是必须要做的功课。而且这些源码都是世界顶尖的程序猿所写,在阅读源代码的过程中也能够学到很多编程的技巧。,62,Scala,特点,2,Scala,是一门多范式的编程语言,并集成面向对

40、象编程和函数式编程的各种特性。,这种语言和,Java,语言一样,运行在,Java,虚拟机,JVM,之上所以,,Scala,能够和,Java,无缝集成,只要将,jar,包导进来,里面的类可以随便用。,所以,Java,程序猿能够很快上手,Scala,。对于熟悉,Python,的同学来说也同样。,七、函数式编程简介,63,函数式编程,3,Scala,作为一个多范式编程语言。虽然,Scala,不强求开发者使用函数式编程,不强求变量都是不可变的(通过,val,定义的),但是还是鼓励使用函数式编程。,现在的计算机都是多核,CPU,,想充分利用其多核处理,我们需要写可并行计算的代码。而函数式编程在并行操作性

41、有着天生的优势,函数式编程没有可变变量,那么就不会有内存共享的问题,也不会产生副作用,(side effect),的函数。下面介绍函数式编程的五大特性,。,七、函数式编程简介,64,闭包和高阶函数,3.1,在面向对象编程中,我们把对象作为编程中的第一类对象,所有代码的编写都是围绕对象来编程。那么函数式编程中,我们的第一类对象就是函数,也叫做 闭包 或者 仿函数,(functor),对象。而高阶函数的意思则是用另一个函数作为参数,甚至可以返回一个函数的叫做 高阶函数。,七、函数式编程简介,65,无副作用,3.2,无副作用,函数副作用维基百科的解释是:指當調用函數時,除了返回函數值之外,還對主調用

42、函數產生附加的影響。简单来说就是调用函数时,函数执行过程中不会改变参数的值。,在函数式编程中需要极力避免可变变量,因此才能彻底避免函数的副作用。,Var x=1,Def XplusY(y:Int)=x+=y;x,七、函数式编程简介,66,递归与尾递归,3.3,七、函数式编程简介,尾递归是递归的一种优化方法。因为递归的空间效率很低,而且如果递归深度很深,容易产生栈溢出的情况。尾递归就是将递归语句写在函数的最底部,这样尾递归的每次调用的时候,不需要保存当前状态,而是把当前的状态值直接传给下次一次调用,然后清空当前的状态。那么占用的栈空间就是常量值了,不会出现栈的溢出。,67,惰性计算,3.4,惰性

43、 求值 特别用于 函数式编程语言 中。在使用延迟求值的时候,表达式不在它被绑定到变量之后就立即求值,而是在该值被取用的时候求值。,除可以得到性能的提升外,惰性计算的最重要的好处是它可以构造一个无限的数据类型。,七、函数式编程简介,68,引用透明,3.5,引用透明,(Referential Transparent),的概念与函数的副作用相关,且受其影响。,如果程序中两个相同值得表达式能在该程序的任何地方互相替换,而不影响程序的动作,那么该程序就具有引用透明性。,它的优点是比非引用透明的语言的语义更容易理解,不那么晦涩。纯函数式语言没有变量,所以它们都具有引用透明性。,七、函数式编程简介,69,八、,相关资源,参考资料,1,An Architecture for Fast and General Data Processing on Large Clusters,spark.apache.org/docs/latest/,70,Q1,:请叙述,RDDs,之间的两种依赖方式及特性。,Q2:,简述在,Spark,框架中应用的执行流程。,71,Thank You!,欢迎批评指正!,南京邮电大学,-,综合科研大楼,72,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服