Hadoop与Spark
行业普遍使用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年在加州大学伯克利分校的Matei Zaharia的AMPLab开发的子项目之一。它是在2010年根据BSD许可开放。它在2013年捐赠给Apache软件基金会,如今Apache Spark已经成为2014年2月的顶级Apache项目。
Apache Spark的特性
Apache Spark具备如下功能。
速度算法
Spark有助于在Hadoop集群中运行应用程序,在内存中速度提升100倍,在磁盘上运行时提升10倍。这能够经过减小对磁盘的读/写操做的数量来实现。它将中间处理数据存储在存储器中。shell
支持多种语言编程
Spark在Java,Scala或Python中提供了内置的API。所以,您可使用不一样的语言编写应用程序。 Spark提供了80个高级操做员进行交互式查询。架构
高级分析框架
Spark不只支持“Map”和“reduce”。它还支持SQL查询,流数据,机器学习(ML)和图算法。机器学习
Spark基于Hadoop
下图显示了如何使用Hadoop组件构建Spark的三种方式。
Spark部署有三种方式,以下所述。
Standalone- Spark独立部署意味着Spark占据HDFS(Hadoop分布式文件系统)顶部的位置,并明确为HDFS分配空间。 这里,Spark和MapReduce将并行运行以覆盖集群上的全部spark做业。
Hadoop Yarn- Hadoop Yarn部署意味着,spark只需运行在Yarn上,无需任何预安装或根访问。 它有助于将Spark集成到Hadoop生态系统或Hadoop堆栈中。 它容许其余组件在堆栈顶部运行。
Spark in MapReduce (SIMR) - MapReduce中的Spark用于在独立部署以外启动spark job。 使用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 (Machine Learning Library)工具
MLlib是Spark之上的分布式机器学习框架,由于基于分布式内存的Spark架构。根据基准,它是由MLlib开发人员针对交替最小二乘法(ALS)实现完成的。 Spark MLlib是基于Hadoop磁盘的
Apache Mahout版本的9倍(在Mahout得到了Spark接口以前)。
GraphX GraphX是Spark上的一个分布式图形处理框架。它提供了一个用于表达图形计算的API,能够经过使用Pregel抽象API为用户定义的图形建模。它还为此抽象提供了一个优化的运行时。