一、Spark原理与机制初探

1.Spark

    作为Spark生态系统的核心,Spark主要提供基于内存计算的功能,不仅包含Hadoop的计算模型MapReduce,还包含很多其他的API,如reduceByKey、groupByKey、foreach、join和filter等。Spark将数据抽象为RDD,有效地扩充了Spark编程模型,使Spark成为多面手,能让交互式查询、流处理、机器学习和图计算无缝交叉融合,极大地扩展了Spark的业务应用场景,同时Spark使用函数式编程Scale,使编程更简洁高效。

一、Spark原理与机制初探_第1张图片

2.SQL/Shark

    Shark是为了将Hive应用移植到Spark平台下面而出现的数据仓库。Shark在HQL(一般将Hive上对SQL支持的语言成为HQL)方面重用了Hive的HQL解析、逻辑计划翻译、执行计划优化等逻辑,可以认为仅将底层物理执行计划从Hadoop的MapReduce作业转移到Spark作业,此外还依赖Hive Metastore和Hive SerDe。这样做会导致执行计划过程过于依赖Hive,不利于添加新的优化策略,因此为了减少对Hive本身框架的依赖,引入了Spark SQL。

    Spark SQL仅依赖HQL Parser、Hive metostore和Hive SerDe,即说明在解析SQL生成抽象语法数(Abstract Syntax Tree,AST)后的部分都是由Spark SQL自身的Calalyst负责(图中所示Spark SQLyu Hive之间的关系),利用Scala模式匹配等函数式语言的特性,让Catalyst开发的执行计划优化策略比Hive更简洁。除了HQL以外,Spark SQL还内建了一个精简的SQL parser,以及一套Scale特定领域语言(Domain Specific Language,DSL)。也就是说,如果只是使用Spark SQL内建的SQL方言或Scale DSL对原生RDD对象进行关系查询,用户在开发Spark应用时完全不需要依赖Hive的任何东西,因而日后的发展趋势重点在Spark SQL,对Shark的支持会逐渐淡化。

    Spark SQL从Spark1.3开始支持提供一个抽象的编程架构DataFrames,能充当分布式SQL查询引擎。DataFrame本质就是一张关系型数据库中的表,但是底层有很多方面的优化,他能从多种数据源中转化而来,例如结构性数据文件、Hive表、外部数据库或者已经存在的RDD。

一、Spark原理与机制初探_第2张图片

3.Spark Streaming

    Spark Streaming是基于Spark的上层应用框架,使用内建API,能像写批处理文件一样编写流处理任务,易于使用,它还提供良好的容错特性,能在结点宕机情况下同时恢复丢失的工作和操作状态。

    在处理时间方面,Spark Streaming是基于时间片的准实时处理,能达到妙级延迟,吞吐量比Storm大,此外还能和Spark MLib联合使用,构造强大的流状态运行即席(ad-hoc)查询和实时推荐系统。

4.GraphX

    GraphX是基于Spark的上层分布式图计算框架,提供了类似Goole图算法引擎Pregel的功能,主要处理社交网络等结点和边模型的问题,因为Spark能很好地支付迭代计算,故处理效率优势明显。GraphX的较新版本支持PageRank、SVD++和三角形计算等算法。目前国内的淘宝技术部在GraphX方面的应用成果很多。

5.MLlib

    MLlib是Spark生态系统在机器学习领域的重要应用,它充分发挥Spark迭代计算的优势,比传统MapReduce模型算法块一百倍以上。

    MLlib实现了逻辑回归、线性SVM、随即森林、K-means、奇异值分解等多种传统机器学习的算法,充分利用RDD的迭代优势,能对大规模数据应用机器学习模型,并能与Spark Streaming、Spark SQL进行协作开发应用,让机器学习算法在基于大数据的预测、推荐和模式识别等方面应用更广泛。

    

 

你可能感兴趣的:(大数据,Spark)