文档详情

Spark:一个高效的分布式计算系统.pdf

发布:2024-10-16约1.31万字共13页下载文档
文本预览下载声明

Spark:一个高效的分布式计算系统

概述

什么是Spark

Spark是UCBerkeleyAMPlab所开源的类HadoopMapReduce的通用的并行计算框架,Spark

基于mapreduce算法实现的分布式计算,拥有HadoopMapReduce所具有的优点;但不同于MapReduce

的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于

数据挖掘与机器学习等需要迭代的mapreduce的算法。其架构如下图所示:

Spark与Hadoop的对比

Spark的中间数据放到内存中,对于迭代运算效率更高。

Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的抽象概念。

Spark比Hadoop更通用。

Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Reduce两种操作。比如map,

filter,flatMap,sample,groupByKey,reduceByKey,union,join,cogroup,mapValues,

sort,partionBy等多种操作类型,Spark把这些操作称为Transformations。同时还提供Count,

collect,reduce,lookup,save等多种actions操作。

这些多种多样的数据集操作类型,给给开发上层应用的用户提供了方便。各个处理节点之间的通

信模型不再像Hadoop那样就是唯一的DataShuffle一种模式。用户可以命名,物化,控制中间结果

的存储、分区等。可以说编程模型比Hadoop更灵活。

不过由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者

是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。

容错性。

在分布式数据集计算时通过checkpoint来实现容错,而checkpoint有两种方式,一个是

checkpointdata,一个是loggingtheupdates。用户可以控制采用哪种方式来实现容错。

可用性。

Spark通过提供丰富的Scala,Java,PythonAPI及交互式Shell来提高可用性。

Spark与Hadoop的结合

Spark可以直接对HDFS进行数据的读写,同样支持SparkonYARN。Spark可以与MapReduce运

行于同集群中,共享存储资源与计算,数据仓库Shark实现上借用Hive,几乎与Hive完全兼容。

Spark的适用场景

Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作

的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对

较小

由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增

量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。

总的来说Spark的适用面比较广泛且比较通用。

运行模式

本地模式

Standalone模式

Mesoes模式

yarn模式

Spark生态系统

Shark(HiveonSpark):Shark基本上就是在Spark的框架基础上提供和Hive一样的HiveQL

命令接口,为了最大程度的保持和Hive的兼容性,Shark使用了Hive的API来实现queryParsing

和LogicPlangeneration,最后的PhysicalPlanexecution阶段用Spark代替HadoopMapReduce。

通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据

集的检索。同时,Shark通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询

和运算分析能结合在一起,最大化RDD的重复使用。

Sparkstreaming:构建在Spark上处理Stream数据的框架,基本的原理是将Stream数据分成

小的时间片断(几秒),以类似batch批量处理的方式来处理这小部分数据。SparkStreaming构建

在Spark上,一方面是因为Spark的低延迟执行引擎(100ms+)可以

显示全部
相似文档