Spark开发了一个丰富的生态系统,包括le 官方和第三方工具。 我们来看看5个以不同方式加强了Spark的第三方项目。
By Matthew Mayo, KDnuggets.
Apache Spark现在是最大的开源数据处理项目,有着来自200个组织的超过750个贡献者。
Spark由在AMP Berabley的AMPLab开发,现在是一个顶级的Apache项目,由Spark的创建者创办的Databricks监管。这两个组织携手合作,推动Spark的发展。 Apache Spark和Databricks创始人兼CTO副总裁Matei Zaharia这么描述这种发展关系:
在Databricks,我们正在努力使Spark通过我们对Spark代码库和支持文档的加强更容易使用和运行速度超过以往任何时候。我们在Spark上的所有工作都是开源的,并且直接进入Apache。
这有时会被视为是与Hadoop的竞争(但并不一定是这样),Spark已经设法从Hadoop的成长的痛苦中吸取经验教训,因为Hadoop已经十几岁了。因此,Spark已经建立了一个紧密的官方工具生态系统,它具有很好的处理能力。
Spark的官方生态系统包括以下主要组件(这是从Spark官方文档中获取的描述):
然而,会有一些额外的项目不是官方生态系统的一部分,而且在某些情况下已经(或正在成为)自己的能力或必须添加的创新。这只是一个项目列表,其中包含了已经观察到的它们在某些方面的有用性,或已被注意到变得流行。以下是被认为对Spark有用的5个选定项目。
1. Mesos
Apache Mesos是一个来自UC Berkeley的AMPLab的开源集群管理器。从其网站:
Apache Mesos将CPU,内存,存储和其他计算资源从机器(物理或虚拟)中抽象出来,使容错性和弹性分布式系统能够轻松构建和高效运行。
Mesos在集群的节点上运行,并为应用程序提供API,用于管理和调度资源。因为Mesos是Spark可以操作的集群配置之一。Spark的官方文档甚至包括Mesos作为集群管理器的信息。
为什么要使用Mesos管理Spark standalone或YARN?这是来自学习Spark,由Spark开发人员Databricks(包括一些联合创始人)的描述:
Mesos对于YARN和standalone的一个优点是它的细粒度共享选项,它允许交互式应用程序(如Spark Shell)缩减命令之间的CPU分配。这使得它在多个用户运行交互式shell的环境中很有吸引力。
2. Spark Cassandra Connector
Cassandra是高度可扩展的高性能数据库管理软件。Spark Cassandra Connector项目是一个正在积极开发的开源软件,它允许Spark与Cassandra的表交互。这是它的Github的描述:此库允许您作为Spark RDDs公开Cassandra表,将Spark RDDs写入Cassandra表,并在Spark中执行任意CQL查询。Spark Cassandra连接器负责将Spark与Cassandra连接的配置。这是以前可能是通过自己的一些辛苦工作,或使用Spark Hadoop API。
3. Zepellin
Zepellin是一个有趣的Spark项目,目前是Apache孵化器的成员。Zepellin正在整合的IPython(Jupyter)风格的笔记本带到Spark生态系统。虽然现有存在替代方案,但它们是(很好的)事后解决方案。 Zepellin是从基础架构建立与Spark,Scala和相关技术的联系,而不依赖于Jupyter。值得注意的是,它允许直接和容易地将代码执行结果作为嵌入式iframe发布在托管博客或网站中。这是来源于项目网站:基于Web的笔记本电脑,支持交互式数据分析。您可以使用SQL,Scala等创建漂亮的数据驱动,交互式和协作文档。
Zeppelin解释器允许额外的语言插件。 当前支持的语言包括Scala(带Spark),Python(带Spark),Spark SQL,Hive,Markdown和Shell。
4. Spark Job Server
Spark Job Server是一个简洁和准确的标题。 这是Github的描述:spark-jobserver提供了一个RESTful接口,用于提交和管理ApacheSpark作业,jar和作业内容。这个仓库包含完整的Spark Job Server项目,包括单元测试和部署脚本。它最初开始于Ooyala,但现在是主要开发仓库。为什么使用Spark Job Server? RESTful接口允许从任何语言或环境提交作业,作业内容由Job Server处理。
5. Alluxio (formerly Tachyon)
Alluxio将自己定义为“具有内存速度的虚拟分布式存储系统”。 Alluxio以前称为Tachyon,位于计算框架(如Apache Spark)和各种类型的存储系统(包括Amazon S3,HDFS,Ceph等)之间。 Spark作业可以在Alluxio上运行而不进行任何更改,Alluxio可以显着提高性能。 Alluxio声称“百度使用Alluxio将数据分析性能提高了30倍”。这是来源于他们的网站:Alluxio是一个开源的以内存为中心的分布式存储系统,能够以内存速度在集群任务之间进行可靠的数据共享,可能是在不同的计算框架(如Apache Spark,Apache MapReduce和Apache Flink)中编写。