行业正在广泛使用Hadoop来分析他们的数据集.原因是Hadoop框架基于简单的编程模型(MapReduce),它使计算解决方案具有可扩展性,灵活性,容错性和成本效益.在这里,主要关注的是在查询之间的等待时间和运行程序的等待时间方面保持处理大型数据集的速度.
Spark由Apache Software Foundation引入以加速Hadoop计算计算软件过程.
对于一个普遍的看法, Spark不是Hadoop的修改版本并且实际上并不依赖于Hadoop,因为它有它自己的集群管理. Hadoop只是实现Spark的方法之一.
Spark以两种方式使用Hadoop - 一种是存储,第二种是处理 .由于Spark有自己的集群管理计算,因此它仅使用Hadoop进行存储.
Apache Spark
Apache Spark是一种闪电般快速的集群计算技术,专为快速计算而设计.它基于Hadoop MapReduce,它扩展了MapReduce模型,以便有效地将其用于更多类型的计算,包括交互式查询和流处理. Spark的主要特性是内存中集群计算,可以提高应用程序的处理速度.
Spark旨在涵盖各种工作负载,如作为批处理应用程序,迭代算法,交互式查询和流式处理.除了在相应的系统中支持所有这些工作负载之外,它还减少了维护单独工具的管理负担.
Apache Spark的演变
Spark是一个Hadoop的子项目于2009年在加州大学伯克利分校的AMPLab由Matei Zaharia开发.它是在2010年根据BSD许可证开源的.它于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 Standalone部署意味着Spark占据了HDFS(Hadoop分布式文件系统)之上的位置,并且明确地为HDFS分配了空间.在这里,Spark和MapReduce将并排运行以覆盖集群上的所有火花作业.
Hadoop Yarn : 简单地说,Hadoop Yarn部署意味着在Yarn上运行spark,无需任何预安装或root访问.它有助于将Spark集成到Hadoop生态系统或Hadoop堆栈中.它允许其他组件在堆栈顶部运行.
MapReduce中的Spark(SIMR) : 除了独立部署之外,MapReduce中的Spark还用于启动spark作业.使用SIMR,用户可以启动Spark并使用其shell而无需任何管理访问权.
Spark的组件
下图描绘了Spark的不同组件.
Apache Spark Core
Spark Core是Spark平台的基础通用执行引擎,所有其他功能都是基于此构建的.它在外部存储系统中提供内存计算和引用数据集.
Spark SQL
Spark SQL是Spark Core之上的一个组件,它引入了一个名为SchemaRDD的新数据抽象,它为结构化和半结构化数据提供支持.
Spark Streaming
Spark Streaming利用Spark Core的快速调度功能执行流分析.它以小批量方式提取数据并对这些小批量数据执行RDD(弹性分布式数据集)转换.
MLlib(机器学习库)
MLlib是Spark之上的分布式机器学习框架,因为基于分布式内存的Spark架构.根据基准测试,MLlib开发人员针对交替最小二乘(ALS)实现进行了测试. Spark MLlib的速度是基于Hadoop磁盘的 Apache Mahout 版本的9倍(在Mahout获得Spark接口之前).
GraphX
GraphX是Spark上的分布式图形处理框架.它提供了一个表达图形计算的API,可以使用Pregel抽象API对用户定义的图形进行建模.它还为此抽象提供了优化的运行时.