位置:首页 > 大数据在线教程 > Spark在线教程 > Spark在线教程

Spark在线教程

Apache Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行框架。它是建立在Hadoop MapReduce之上,它扩展了 MapReduce 模式,Job中间输出结果可以保存在内存中,有效地使用更多类型的计算,其中包括交互式查询和流处理。。相对于MapReduce上的批量计算、迭代型计 算以及基于Hive的SQL查询,Spark可以带来上百倍的性能提升。Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。这是一个简单的Spark在线教程,介绍了Spark核心编程的基础知识。


伯克利将Spark的整个生态系统称为伯克利数据分析栈(BDAS)。其核心框架是Spark,同时BDAS涵盖支持结构化数据SQL查询与分析的查询引擎Spark SQL和Shark,提供机器学习功能的系统MLbase及底层的分布式机器学习库MLlib、并行图计算框架GraphX、流计算框架Spark Streaming、采样近似计算查询引擎BlinkDB、内存分布式文件系统Tachyon、资源管理框架Mesos等子项目。这些子项目在Spark上层提供了更高层、更丰富的计算范式。 工业公司广泛的使用 Hadoop 来分析他们的数据集。其原因是,Hadoop框架是基于简单的编程模型(MapReduce),并且它使用的计算解决方案,是可扩展的,柔性的,容错和低成本。 在这里,主要关心的是在查询之间等待时间和等待时间来运行程序处理大型数据集的速度。

Spark由Apache软件基金会对于加快Hadoop计算软件的过程。

作为对一个共同的信念,Spark不是 Hadoop 的修改版本,不依赖于Hadoop,因为它有自己的集群管理。Hadoop仅仅是实现Spark的方式之一。

Spark使用Hadoop的方式有两种- 一种是存储和第二个是处理。由于Spark有自己的集群管理计算,所以一般它使用Hadoop只有存储的目的。

Apache Spark

Apache Spark是一个快速的集群计算技术,设计用于快速计算。它是基于Hadoop MapReduce和它扩展了MapReduce模型,以有效地将其用于多种类型的计算,其中包括交互式查询和流处理。Spark的主要特征是其内存集群计算,增加的应用程序的处理速度。

Spark旨在涵盖广泛的工作负载,如批量应用,迭代算法,交互式查询和分流。除了支持所有这些工作负载在各自的系统中,它减少了维护单独工具的管理负担。

Apache Spark的演变

Spark是在加州大学伯克利分校的AMPLab由马太·扎哈里亚在2009年开发的Hadoop子项目之一。它在2010年开源,在BSD许可下。它在2013年捐赠给Apache Software 基金,现在的Apache Spark已经在2014年2月成为Apache的顶级项目。

Apache Spark于Hadoop的关系

Spark是一个计算框架,而Hadoop中包含计算框架MapReduce和分布式文 件系统HDFS,Hadoop更广泛地说还包括在其生态系统上的其他系统,如Hbase、Hive等。

Spark是MapReduce的替代方案,而且兼容HDFS、Hive等分布式存储层,可融入 Hadoop的生态系统,以弥补缺失MapReduce的不足。

Apache Spark特色

Apache Spark有以下特点。

  • 速度 − Spark有助于运行Hadoop集群应用,在存储器高达100倍更快的速度,以及10倍的速度在磁盘上运行时。这可以通过减少读/写操作数到磁盘。它存储在内存中的中间处理数据。

  • 支持多语言 − Spark 提供了Java, Scala, Python的内置API。因此,可以使用不同语言来写应用程序。Spark 配备了80个高层次的操作符进行互动查询。

  • 高级分析 − Spark不只支持“Map”和“reduce”。它还支持SQL查询,流数据,机器学习(ML),和图形的算法。

Spark在Hadoop上建立

下图显示了Spark 如何使用Hadoop组件的三种方式来构建。

有三种方法部署Spark ,如下面所解释。

  • 单机版 − Spark独立部署是指Spark占据在HDFS之上(Hadoop分布式文件系统)并将空间分配给HDFS。在这里,Spark和MapReduce将并列覆盖所有Spark的作业集群。

  • Hadoop Yarn − Hadoop Yarn部署方式,简单地说,spark运行在Yarn没有任何必要预安装或使用root访问权限。它有助于Spark融入Hadoop生态系统和Hadoop堆栈。它允许在其它部件叠上层的顶部上运行。

  • Spark 在 MapReduce (SIMR) − Spark在MapReduce的用于启动spark作业,除了独立部署。通过SIMR,用户可以启动Spark和使用Shell,而不需要任何管理权限。

Spark组件

下图说明了Spark的不同组成部分。

spark结构图

Apache Spark 核心

Spark核心是底层一般执行引擎,所有其他的功能都是建立在Spark的平台之上。 它提供了内存计算和引用数据集在外部存储系统。

Spark SQL

星火SQL是引入了一种名为SchemaRDD一个新的数据抽象,它提供了结构化和半结构化数据的支持,它是Spark核心的组成部分。

Spark 数据流

Spark数据流充分利用Spark核心快速调度能力进行流分析。它摄取的数据在小型分批进行RDD(弹性分布式数据集),对这些小批量的数据转换。

MLlib (机器学习库)

MLlib是一个分布式的机器学习框架的分布式存储器为基础的Spark架构。它根据基准,由MLlib开发商对交替最小二乘(ALS)实现完成。Spark MLlib 9倍快于Hadoop基于磁盘的版本(前Mahout中获得了星火接口)Apache Mahout 。

GraphX

GraphX是Spark顶部上的分布式图形处理框架。它提供了用于表达图表计算,并可以通过使用预凝胶抽象API来建模用户定义的图形的API。它还提供了这种抽象的优化运行。