《Spark基础知识》课件.docx
Spark基础知识ApacheSpark是专为大规模数据处理而设计的快速通用的计算引擎。SPark是UCBerkeIeyAMPIab(加州大学伯克利分校的AMP实验室)所开源的类HadoopMapReduce的通用并行框架,Spark,拥有HadoopMapReduce所具有的优点;但不同于M叩RedUCe的是一Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此SPark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。Spark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使Spark在某些工作负载方面表现得更加优越,换句话说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。Spark是在Scala语言中实现的,它将Scala用作其应用程序框架。与Hadoop不同,Spark和Scala能够紧密集成,其中的Scala可以像操作本地集合对象一样轻松地操作分布式数据集。尽管创建Spark是为了支持分布式数据集上的迭代作业,但是实际上它是对Hadoop的补充,可以在Hadoop文件系统中并行运行。通过名为Mesos的第三方集群框架可以支持此行为。Spark由加州大学伯克利分校AMP实验室(Algorithms,Machines,andPeopleLab)开发,可用来构建大型的、低延迟的数据分析应用程序。1.基本介绍ApacheSPark是专为大规模数据处理而设计的快速通用的计算引擎2。现在形成一个高速发展应用广泛的生态系统。2.特点Spark主要有三个特点3:首先,高级API剥离了对集群本身的关注,Spark应用开发者可以专注于应用所要做的计算本身。其次,Spark很快,支持交互式计算和复杂算法。最后5park是一个通用引擎,可用它来完成各种各样的运算,包括SQL查询、文本处理、机器学习等,而在Spark出现之前,我们一般需要学习各种各样的引擎来分别处理这些需求。344能特点更快的速度内存计算下,Spark比Hadoop快IOo倍。易用性Spark提供了80多个高级运算符。通用性Spark提供了大量的库,包括SParkCore、SParkSQL、SParkStreaming、MLIib、GraphXe开发者可以在同一个应用程序中无缝组合使用这些库。支持多种资源管理器Spark支持HadoopYARN,ApacheMesos,及其自带的独立集群管理器SPark生态系统令Shark:Shark基本上就是在Spark的框架基础上提供和Hive一样的HiVeQL命令接口为了最大程度的保持和Hive的兼容性,Spark使用了Hive的API来实现queryParsing和LogicPlangeneration,最后的PhysicaIPIanexecution阶段用Spark代替HadoopMapReduceo通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD实现数据重用进而加快特定数据集的检索。同时,Shark通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询和运算分析能结合在一起,最大化RDD的重复使用。÷SparkR:SparkR是f为R提供了轻量级的Spark前端的R包。SparkR提供了一个分布式的dataframe数据结构,解决了R中的dataframe只能在单机中使用的瓶颈,它和R中的dataframe样支持许多操作,比如SeIeCt,filter,aggregate等等。(类似dplyr包中的功能)这很好的解决了R的大数据级瓶颈问题。SparkR也支持分布式的机器学习算法,比如使用MLib机器学习库。4SparkR为Spark引入了R语言社区的活力,吸引了大量的数据科学家开始在Spark平台上直接开始数据分析之旅。54 .基本原理SparkStreaming:构建在Spark上处理Stream数据的框架,基本的原理是将Stream数据分成小的时间片段(几秒),以类似batch批量处理的方式来处理这小部分数据。SparkStreaming构建在Spark上,一方面是因为Spark的低延迟执行引擎(100ms+),虽然比不上专门的流式数据处理软件,也可以用于实时计算,另一方面相比基于Record的其它处理框架(如Storm),一部分窄依赖的RDD数据集可以从源数据重新计算达到容错处理目的。此外小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法。方便了一些需要历史数据和实时数据联合分析的特定应用场合。5 .计算方法 Bagel:PregelonSpark,可以用Spark进行图计算,这是个非常有用的小项目。Bagel自带了一个例子,实现了Google的PageRank算法。 当下Spark已不止步于实时计算,目标直指通用大数据处理平台,而终止Spark,开启SparkSQL或许已经初见端倪。 近几年来,大数据机器学习和数据挖掘的并行化算法研究成为大数据领域一个较为重要的研究热点。早几年国内外研究者和业界比较关注的是在Hadoop平台上的并行化算法设计。然而,HadoopMapReduce平台由于网络和磁盘读写开销大,难以高效地实现需要大量迭代计算的机器学习并行化算法。随着UCBerkeleyAMPLab推出的新一代大数据平台Spark系统的出现和逐步发展成熟,近年来国内外开始关注在Spark平台上如何实现各种机器学习和数据挖掘并行化算法设计。为了方便一般应用领域的数据分析人员使用所熟悉的R语言在Spark平台上完成数据分析,Spark提供了一个称为SparkR的编程接口,使得一般应用领域的数据分析人员可以在R语言的环境里方便地使用Spark的并行化编程接口和强大计算能力。