Spark学习总结 - 入门

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Spark学习总结徐聪kfuuser@126.com18939195459一简介Spark是一个高效的分布式计算系统,发源于美国加州大学伯克利分校AMPLab的集群计算平台。Spark立足于内存计算,相比HadoopMapReduce,Spark在性能上要高100倍,而且Spark提供了比Hadoop更上层的API,同样的算法在Spark中实现往往只有Hadoop的1/10或者1/100的长度。Spark基于mapreduce算法模式实现的分布式计算,拥有HadoopMapReduce所具有的优点;但不同于HadoopMapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS目前Spark在全球已有广泛的应用,其中包括阿里巴巴、Cloudera、Databricks、IBM、Intel、雅虎等。Spark自2013年6月进入Apache的孵化器以来,已经有来自25个组织的120多位开发者参与贡献。二与Hadoop对比1,Spark的中间数据放到内存中,一次创建数据集,可以多次迭代运算,减少了IO的开销,对于迭代运算效率更高。2,Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的抽象概念。3,Spark比Hadoop更通用。4,Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Reduce两种操作。比如ap,filter,flatMap,sample,groupByKey,reduceByKey,union,join,cogroup,mapValues,sort,partionBy等多种操作类型,允许多种计算模型(包含map-reduce)。5,对机器学习算法,图计算能力有很好的支持。二.1运算模型对比(1)传统Hadoop数据抽取运算模型数据的抽取运算基于磁盘,中间结果也是存储在磁盘上。MR运算伴随着大量的磁盘IO。二.1运算模型对比(2)Spark则使用内存代替了传统HDFS存储中间结果简述:第一代的Hadoop完全使用Hdfs存储中间结果,第二带的Hadoop加入了cache来保存中间结果。而Spark则基于内存的中间数据集存储。可以将Spark理解为Hadoop的升级版本,Spark兼容了Hadoop的API,并且能够读取Hadoop的数据文件格式,包括HDFS,Hbase等。二.2YARN调度管理对比SparkOnYarn的调度管理:二.2YARN调度管理对比传统MapReduce在YARN上的调度:二YARN回顾1.Yarn是什么:Yarn(HadoopMapReduceV2)是Hadoop0.23.0版本后新的map-reduce框架或这更准确的说是框架容器。二YARN回顾名词解释:(1)ResourceManager:以下简称RM。YARN的中控模块,负责统一规划资源的使用。ps:ResourceManager是YARN资源控制框架的中心模块,负责集群中所有资源的统一管理和分配。它接收来自NM的汇报,建立AM,并将资源派送给AM。(2)NodeManager:以下简称MM。YARN中的资源结点模块,负责启动管理container。(3)ApplicationMaster以下简称AM。YARN中每个应用都会启动一个AM,负责向RM申请资源,请求NM启动container,并告诉container做什么事情。二YARN回顾(4)Container:资源容器。YARN中所有的应用都是在container之上运行的。AM也是在container上运行的,不过AM也是在Container上运行的,不过AM的container是向RM申请的。简述:新一代的YARN容器框架,是传统的MRHadoop容器框架的升级版本,之前的MR部署架构依赖于JobTracker和TaskTracker的交互模式,而新一代的YARN容器框架,则采用了ResourceManager和NodeManager的交互模式,更高层次的抽象和架构设计,是的YARN容器框架能够支撑多种计算引擎运行,包括传统的HadoopMR和现在的比较新的SPARK。二YARN回顾2.HadoopYARN产生的背景:(1)直接源于MRv1(传统的HadoopMR)如下几个缺陷:受限的扩展性;单点故障;难以支持MR之外的计算;(2)多计算框架各自为战,数据共享困难。比如MR(离线计算框架),Storm实时计算框架,Spark内存计算框架很难部署在同一个集群上,导致数据共享困难。简述:HadoopYarn的出现则解决了上述问题。二YARN回顾3.Hadoop1.0到Hadoop2.0(基于YARN)的演变:hadoop2.0在传统的MapReduce计算框架和存储框架HDFS之间加了一个YARN层,使得集群框架可以支撑多中计算引擎,包括上文中的SPARK。二YARN回顾4.以Yarn为核心的Hadoop2.0生态系统:二YARN回顾5.运行在YARN上的计算框架:(1)离线计算框架:MapReduce(2)DAG计算框架:Tez(3)流式计算框架:Storm(4)内存计算框架:Spark(5)图计算框架:Giraph,Graphlib三适用场景Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小。由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。例如:(1)迭代算法,包括大部分机器学习算法MachineLearning和比如PageRank的图形算法。(2)交互式数据挖掘,用户大部分情况都会大量重复的使用导入RAM的数据(R、Excel、python)(3)需要持续长时间维护状态聚合的流式计算。五运行模式目前ApacheSpark支持四种分布式部署方式,分别是standalone、sparkonmesos和sparkonYARN、Sparkoncloudstandalone模式,即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。Spark在standalone模式下单点故障问题是借助zookeeper实现的,思想类似于Hbasemaster单点故障解决方案。SparkOnMesos模式,Spark运行在Mesos上会比运行在YARN上更加灵活,更加自然。在SparkOnMesos环境中,用户可选择两种调度模式之一运行自己的应用程序,粗粒度模式(Coarse-grainedMode)和细粒度模式(Fine-grainedMode)。SparkOnYARN模式。这是一种最有前景的部署模式。但限于YARN自身的发展,目前仅支持粗粒度模式(Coarse-grainedMode)。SparkOncloud模式。比如AWS的EC2,使用这种模式,方便的访问Amazon的S3五运行模式Spark的几种运行模式local本地模式常用于本地开发测试,本地还分为local和local-clusterstandalone集群模式典型的Master/Slave模式,不过也能看出Master是有单点故障的,Spark支持Zookeeper来实现HAOnYARN集群模式运行在Yarn资源管理器框架之上,由Yarn负责资源管理,Spark负责任务调度和计算OnMesos集群模式运行在mesos资源管理器框架之上,由mesos负责资源管理,Spark负责任务调度和计算Oncloud集群模式比如Aws的EC2,使用这个模式能很方便地访问Amazon的S3;Spark支持多种分布式存储系统,hdfs和S3、hbase等五运行模式总之,这四种分布式部署方式各有利弊,通常需要根据公司情况决定采用哪种方案。进行方案选择时,往往要考虑公司的技术路线(采用Hadoop生态系统还是其他生态系统)、服务器资源(资源有限的话就不要考虑standalone模式了)、相关技术人才储备等。六架构组成六架构组成(1)Bagel(pregelonspark):Bagel是基于Spark的轻量级的Pregel(Pregel是Google鼎鼎有名的图计算框架)的实现。(2)Shark(HiveonSpark):Shark基本上就是在Spark的框架基础上提供和Hive一样的HiveQL命令接口。可以理解为SharkOnSpark,就是HiveOnHadoop,两者地位是一样的。ps:Shark可以通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询和运算分析功能结合在一起(最大化RDD的重复使用)。(3)Streaming(Spark):SparkStreaming是构建在Spark上的处理实时数据的框架。其基本原理是将Stream数据分成小的时间片段(几秒),以类似batch批处理的方式来处理小部分数据。六架构组成(4)RDD(ResilientDistributedDataset,弹性分布式数据集):RDD是Spark操纵数据的一个高度抽象,即Spark所操作的数据集都是包装成RDD来进行操作的,例如Spark可以兼容处理Hadoop的HDFS数据文件,那么这个HDFS数据文件就是包装成Spark认识的RDD来完成数据抽取和处理的。RDD的一个英文定义是:RDDsarefault-tolerant,paralleldatastructuresthatletusersexplicitlypersistintermediateresultsinmemory,controltheirpartitioningtooptimizedataplacement,andmanipulatethemusingarichsetofoperators.用我RDD是一个能够让用户可以准确的将中间结果数据持久化到内存中的一个可用错的并行数据结构,可以控制(RDD数据集)分区,优化数据存储,并且有一组丰富的操作集可以操作这份数据。RDD是Spark的一个核心抽象,Spark的数据操作都是基于RDD来完成。六架构组成(5)MapReduce:MR是Spark可以支撑的运算模式,比传统的HadoopMR的性能更好,并且操作集更加丰富。Spark的MR计算引擎的架构图:六架构组成(6)Spark的运行模式:apacheMesos和YARN计算两套资源管理框架,Spark最初设计就是跑在这两个资源管理框架之上的,至于Spark的本地运行模式和独立运行模式则是方便了调试。YARN资源管理框架也是Hadoop2.0的产物,大大优化了传统Hadoop通过JobTracker和TaskTracker来调度计算任务的方式,使集群更加平台化,可以部署多中计算引擎,比如传统的HadoopMR和Spark都可以跑在同一个集群上,YARN这类资源管理框架出现之前是做不到的。(7)Spark数据的存储:Spark支持多种数据底层存储,这点比Hadoop支持的数据文件格式广泛的多。Spark可以兼容HDFS,Hbase,AmazonS3等多种数据集,将这些数据集封装成RDD进行操作。七集群运行方式八核心RDDRDD:是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作本地集合的方式来操作分布式数据集的抽象实现。RDD是Spark最核心的东西,它表示已被分区,不可变的并能够被并行操作的数据集合,不同的数据集格式对应不同的RDD实现。RDD必须是可序列化的。RDD可以cache到内存中,每次对RDD数据集的操作之后的结果,都可以存放到内存中,下一个操作可以直接从内存中输入,省去了MapReduce大量的磁盘IO操作。这对于迭代运算比较常见的机器学习算法,交互式数据挖掘来说,效率提升比较大。RDD的特点:1.它是在集群节点上的不可变的、已分区的集合对象。2.通过并行转换的方式来创建如(map,filter,join,e

1 / 61
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功