Spark 教程
-
Spark
Apache Spark 是专为快速计算而设计的闪电般的集群计算。它建立在Hadoop MapReduce之上,并且扩展了MapReduce模型以有效地使用更多类型的计算,包括交互式查询和流处理。这是一个简短的教程,解释了Spark Core编程的基础。 -
简述
行业正在广泛使用Hadoop分析其数据集。原因是Hadoop框架基于简单的编程模型(MapReduce),它使计算解决方案具有可扩展性,灵活性,容错性和成本效益。在这里,主要的问题是要根据查询之间的等待时间和运行程序的等待时间来维持处理大型数据集的速度。Apache软件基金会(Apache Software Foundation)引入了Spark,以加快Hadoop计算计算软件流程。与通常的看法相反,Spark不是Hadoop的修改版,并且实际上不依赖Hadoop,因为它具有自己的集群管理。Hadoop只是实施Spark的方法之一。Spark通过两种方式使用Hadoop:一种是存储,另一种是处理。由于Spark具有自己的集群管理计算,因此仅将Hadoop用于存储目的。Spark旨在涵盖各种工作负载,例如批处理应用程序,迭代算法,交互式查询和流。除了在各自的系统中支持所有这些工作负载之外,它还减少了维护单独工具的管理负担。 -
Apache Spark的演变
Spark是Hadoop的子项目之一,该子项目由Matei Zaharia在2009年在UC Berkeley的AMPLab中开发。它在BSD许可下于2010年开源。它于2013年捐赠给Apache软件基金会,现在Apache Spark从2014年2月起已成为顶级Apache项目。 -
Apache Spark的功能
Apache Spark具有以下功能。- 速度-Spark有助于在Hadoop集群中运行应用程序,内存速度最高可提高100倍,而在磁盘上运行时则可提高10倍。这可以通过减少对磁盘的读/写操作次数来实现。它将中间处理数据存储在内存中。
- 支持多种语言-Spark提供Java,Scala或Python内置的API。因此,您可以使用不同的语言编写应用程序。Spark提供了80个高级操作员用于交互式查询。
- 高级分析-Spark不仅支持“Map”和“Reduce”。它还支持SQL查询,流数据,机器学习(ML)和图算法。
-
基于Hadoop构建的Spark
下图显示了如何使用Hadoop组件构建Spark的三种方式。Spark部署有以下三种方式。- 独立 - Spark独立部署意味着Spark占据了HDFS(Hadoop分布式文件系统)之上的位置,并且为HDFS明确分配了空间。在这里,Spark和MapReduce将并排运行以覆盖集群上的所有Spark作业。
- Hadoop Yarn - Hadoop Yarn部署意味着,Spark可以在Yarn上运行,而无需任何预安装或root访问。它有助于将Spark集成到Hadoop生态系统或Hadoop堆栈中。它允许其他组件在堆栈顶部运行。
- MapReduce中的Spark(SIMR)- MapReduce中的Spark除了独立部署外,还用于启动Spark作业。使用SIMR,用户可以启动Spark并使用其Shell,而无需任何管理访问权限。
-
Spark的组成
下图描述了Spark的不同组件。Apache Spark Core(核心)Spark Core是所有其他功能都基于的Spark平台的基础通用执行引擎。它提供了外部存储系统中的内存中计算和引用数据集。Spark SQLSpark SQL是Spark Core之上的组件,它引入了一个称为SchemaRDD的新数据抽象,该抽象为结构化和半结构化数据提供支持。Spark Streaming(流)Spark Streaming利用Spark Core的快速调度功能来执行流分析。它以小批量提取数据,并对那些小批量数据执行RDD(弹性分布式数据集)转换。MLlib(机器学习库)由于基于分布式内存的Spark体系结构,MLlib是Spark之上的分布式机器学习框架。根据基准,它是MLlib开发人员针对交替最小二乘(ALS)实现而完成的。Spark MLlib的速度是Apache Mahout的基于Hadoop磁盘的版本的9倍(在Mahout获得Spark接口之前)。GraphXGraphX是基于Spark的分布式图形处理框架。它提供了一个用于表达图形计算的API,该API可以通过使用Pregel抽象API对用户定义的图形进行建模。它还为此抽象提供了优化的运行时。 -