Spark 生态顶级项目汇总

阅读数:3564 2016 年 3 月 6 日

话题:DevOps语言 & 开发架构Spark

现在 Apache Spark 已形成一个丰富的生态系统,包括官方的和第三方开发的组件或工具。后面主要给出 5 个使用广泛的第三方项目。

Spark 官方构建了一个非常紧凑的生态系统组件,提供各种处理能力。 下面是 Spark 官方给出的生态系统组件(引自 Spark 官方文档)。

  1. Spark DataFrames:列式存储的分布式数据组织,类似于关系型数据表。
  2. Spark SQL:可以执行 SQL 查询,包括基本的 SQL 语法和 HiveQL 语法。读取的数据源包括 Hive 表、Parquent 文件、JSON 数据、关系数据库(MySQL 等)等。
  3. Spark Streaming:Spark Streaming 是 Spark 核心 API,易扩展、高吞吐量、流式数据容错。
  4. MLlib:Spark 的机器学习库,由常规的机器学习算法和基础构成,包括但不限于分类算法、回归算法、聚类算法、协调过滤算法、降维算法等。
  5. GraphX:Spark GraphX 是一个分布式图处理框架,基于 Spark 平台提供对图计算和图挖掘的接口,方便用户对分布式图处理的需求。
  6. Spark Core API:Spark 提供多种语言的 API,包括 R、SQL、Python、Scala 和 Java。

除了上述官方的 Spark 组件外,还有些是在某种情形下必用的项目。以下只是简单的列出这些重量级 项目,而不涉及一些性能指标。

  1. Mesos

    Mesos 是开源的资源统一管理和调度平台。抽象物理机的 CPU、内存、存储和计算资源,再由框架自身的调度器决定资源的使用者。

    Mesos 是 Master/Slave 结构,由 Mesos-master,Mesos-slave,Framework 和 executor 四个组件构成。

    为什么官方选用 Mesos,而不是 Spark standalone 模式或者基于 Yarn 框架?由 Spark 开发者所写的书《Learning Spark》:Mesos 优于其它两个资源框架是因为 Mesos 的细粒度调度,这样可让多用户运行 Spark shell 占有更少的 CPU。

  2. Spark Cassandra Connector

    Cassandra 是一个易扩展、高性能的数据库。 Spark Cassandra Connector 现在是 Spark 和 Cassandra 表间直接交互的连接器,高度活跃的开源软件。 Spark Cassandra Connector 库让你读 Cassandra 表就如同 Spark RDD 一样,同样可以写 Spark RDD 到 Cassandra 表,并可以在 Spark 程序中执行 CQL 语句。
  3. Zepellin

    Zepellin 是一个集成 IPythoon notebook 风格的 Spark 应用。Zepellin 可以基于 Spark 和 Scala,允许用户很简单直接的在他们的博客或者网站发布代码执行的结果。

    Zepellin 也支持其它语言插件,包括 Scala 和 Spark,Python 和 Spark,SparkSQL,HIve,Markdown 和 Shell。

  4. Spark Job Server

    Spark Job Server 提供 RESTful 接口来提交和管理 Spark jobs,jar 包和 job 上下文。Spark Job Server 提供 Spark 任务相关的运行健康信息。

  5. Alluxio

    Alluxio 是一个分布式内存文件系统,它在减轻 Spark 内存压力的同时,也赋予 Spark 内存快速读写海量数据的能力。Alluxio 以前叫做 Tachyon,即钨丝。Spark jobs 可以不做任何改变即可运行在 Alluxio 上,并能得到极大的性能优化。Alluxio 宣称:“百度使用 Alluxio 可以提高 30 倍多数据处理能力”。