📅  最后修改于: 2020-11-29 07:59:46             🧑  作者: Mango
行业正在广泛使用Hadoop分析其数据集。原因是Hadoop框架基于简单的编程模型(MapReduce),它使计算解决方案具有可扩展性,灵活性,容错性和成本效益。在这里,主要的关注点是在查询之间的等待时间和运行程序的等待时间方面,保持处理大型数据集的速度。
Apache Software Foundation引入Spark是为了加快Hadoop计算计算软件过程。
与通常的看法相反, Spark不是Hadoop的修改版,并且实际上不依赖Hadoop,因为它具有自己的集群管理。 Hadoop只是实施Spark的方法之一。
Spark通过两种方式使用Hadoop:一种是存储,另一种是处理。由于Spark具有自己的集群管理计算,因此仅将Hadoop用于存储目的。
Apache Spark是一种快如闪电的集群计算技术,专为快速计算而设计。它基于Hadoop MapReduce,并扩展了MapReduce模型以有效地将其用于更多类型的计算,其中包括交互式查询和流处理。 Spark的主要功能是其内存中的群集计算,可提高应用程序的处理速度。
Spark旨在涵盖各种工作负载,例如批处理应用程序,迭代算法,交互式查询和流。除了在各自的系统中支持所有这些工作负载之外,它还减少了维护单独工具的管理负担。
Spark是Hadoop的子项目之一,该子项目由Matei Zaharia在2009年在UC Berkeley的AMPLab中开发。它在BSD许可下于2010年开源。它于2013年捐赠给Apache软件基金会,现在Apache Spark从2014年2月起已成为顶级Apache项目。
Apache Spark具有以下功能。
速度-Spark有助于在Hadoop集群中运行应用程序,内存速度最高可提高100倍,而在磁盘上运行时则可提高10倍。这可以通过减少对磁盘的读/写操作次数来实现。它将中间处理数据存储在内存中。
支持多种语言-Spark提供Java,Scala或Python内置的API。因此,您可以使用不同的语言编写应用程序。 Spark提供了80个高级运算符用于交互式查询。
高级分析-Spark不仅支持“地图”和“减少”。它还支持SQL查询,流数据,机器学习(ML)和图算法。
下图显示了如何使用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 Core是所有其他功能都基于的Spark平台的基础通用执行引擎。它提供了外部存储系统中的内存中计算和引用数据集。
Spark SQL是Spark Core之上的组件,它引入了一个称为SchemaRDD的新数据抽象,该抽象为结构化和半结构化数据提供支持。
Spark Streaming利用Spark Core的快速调度功能来执行流分析。它以小批量提取数据,并对那些小批量数据执行RDD(弹性分布式数据集)转换。
MLlib是基于Spark的分布式机器学习框架,因为它基于分布式内存的Spark体系结构。根据基准,它是由MLlib开发人员针对交替最小二乘(ALS)实现而完成的。 Spark MLlib的速度是Apache Mahout的基于Hadoop磁盘的版本的9倍(在Mahout获得Spark接口之前)。
GraphX是基于Spark的分布式图形处理框架。它提供了一个用于表达图形计算的API,该API可以通过使用Pregel抽象API对用户定义的图形进行建模。它还为此抽象提供了优化的运行时。