现在 Apache Spark 已形成一个丰富的生态系统,包括官方的和第三方开发的组件或工具。后面主要给出 5 个使用广泛的第三方项目。
Spark 官方构建了一个非常紧凑的生态系统组件,提供各种处理能力。 下面是 Spark 官方给出的生态系统组件(引自 Spark 官方文档)。
- Spark DataFrames:列式存储的分布式数据组织,类似于关系型数据表。
- Spark SQL:可以执行 SQL 查询,包括基本的 SQL 语法和 HiveQL 语法。读取的数据源包括 Hive 表、Parquent 文件、JSON 数据、关系数据库(MySQL 等)等。
- Spark Streaming:Spark Streaming 是 Spark 核心 API,易扩展、高吞吐量、流式数据容错。
- MLlib:Spark 的机器学习库,由常规的机器学习算法和基础构成,包括但不限于分类算法、回归算法、聚类算法、协调过滤算法、降维算法等。
- GraphX:Spark GraphX 是一个分布式图处理框架,基于 Spark 平台提供对图计算和图挖掘的接口,方便用户对分布式图处理的需求。
- Spark Core API:Spark 提供多种语言的 API,包括 R、SQL、Python、Scala 和 Java。
除了上述官方的 Spark 组件外,还有些是在某种情形下必用的项目。以下只是简单的列出这些重量级 项目,而不涉及一些性能指标。
- Mesos
Mesos 是开源的资源统一管理和调度平台。抽象物理机的 CPU、内存、存储和计算资源,再由框架自身的调度器决定资源的使用者。
Mesos 是 Master/Slave 结构,由 Mesos-master,Mesos-slave,Framework 和 executor 四个组件构成。
为什么官方选用 Mesos,而不是 Spark standalone 模式或者基于 Yarn 框架?由 Spark 开发者所写的书《Learning Spark》:Mesos 优于其它两个资源框架是因为 Mesos 的细粒度调度,这样可让多用户运行 Spark shell 占有更少的 CPU。
- Spark Cassandra Connector
Cassandra 是一个易扩展、高性能的数据库。 Spark Cassandra Connector 现在是 Spark 和 Cassandra 表间直接交互的连接器,高度活跃的开源软件。 Spark Cassandra Connector 库让你读 Cassandra 表就如同 Spark RDD 一样,同样可以写 Spark RDD 到 Cassandra 表,并可以在 Spark 程序中执行 CQL 语句。 - Zepellin
Zepellin 是一个集成 IPythoon notebook 风格的 Spark 应用。Zepellin 可以基于 Spark 和 Scala,允许用户很简单直接的在他们的博客或者网站发布代码执行的结果。
Zepellin 也支持其它语言插件,包括 Scala 和 Spark,Python 和 Spark,SparkSQL,HIve,Markdown 和 Shell。
- Spark Job Server
Spark Job Server 提供 RESTful 接口来提交和管理 Spark jobs,jar 包和 job 上下文。Spark Job Server 提供 Spark 任务相关的运行健康信息。 - Alluxio
Alluxio 是一个分布式内存文件系统,它在减轻 Spark 内存压力的同时,也赋予 Spark 内存快速读写海量数据的能力。Alluxio 以前叫做 Tachyon,即钨丝。Spark jobs 可以不做任何改变即可运行在 Alluxio 上,并能得到极大的性能优化。Alluxio 宣称:“百度使用 Alluxio 可以提高 30 倍多数据处理能力”。
评论