近日,Spark 从 Apache 孵化器毕业。Spark 声称,与Apache Hadoop 相比,它在内存数据集上的性能提升了高达100 倍,而在磁盘数据集上的性能则正常回落到10 倍。自2010 年开源以来,Spark 一直是社区中最活跃的项目之一。
它的快速成长可以归于几个原因。为了利用众所周知的SQL 语言,它可以将自身的 DSL 与 SQL 相结合。Spark 的基本 API 是一种 Scala DSL,围绕名为弹性分布式数据集( RDD )的分布式项集合构建。利用分布式执行,RDD 可以支持批量和聚集操作,如筛选、映射和 reduceByKey。Spark 可以使用 Hive SQL 提供具有同等执行速度的原生 Scala API。重用 Hive 的前端和后端意味着它可以与 Hive 一起使用,共享数据、查询和 UDFs。
Spark 使用 MLib 提供了一系列开箱即用的机器学习算法,涉及分类、回归分析、聚簇和推荐领域。MLib 只是 MLBase 的一个组件。 MLBase 是一个分布式机器学习系统,旨在使机器学习任务对于终端用户和 ML 研究人员都更简单易懂。它是第一个将用户从算法选择中解放出来的系统,并针对分布式执行进行自动优化。算法选择是根据ML 最佳实践和基于成本的模型实现的。分布式执行与Apache Mahout 类似,并针对机器学习的数据访问模式进行了优化。
图算法可以用 GraphX 实现,后者结合了数据并行和“图并行(graph-parallel)”两种系统语义。GraphX 提供了可以与 Apache Giraph 相媲美甚或更好的性能,而Apache Giraph 则是 Facebook 使用的著名的图处理系统。
SparkR 向 R 暴露了 Spark API,允许统计人员从 R 函数直接向 Apache Spark 集群提交作业。除了 RDBMS 之外,R 是最受数据科学家欢迎的工具。它的主要问题是单线程以及本来不是为大型数据集而设计。SparkR 解决了这些问题,但有限制,它只对像梯度下降法这种本来就并行的算法才有效。
Spark 可以部署在Apache YARN 上,易于与异构系统集成和共存。它还是由 Cloudera 和 Databricks 支持的 Cloudera 企业数据中心版的一部分,其中 Databricks 是 Spark 商业化的推动者。最后, Streaming 可以帮助快速创建原型及应用有效的分布式系统语义。读者可以从 GitHub 上获取 Spark 的代码。
查看英文原文:**** Spark Officially Graduates From Apache Incubator
评论