本节书摘来异步社区《Spark Cookbook 中文版》一书中的第1章,第1.1节,作者: 【印度】Rishi Yadav(亚达夫)译者: 顾星竹 , 刘见康 责编: 胡俊英,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.1 简介
Apache Spark是一个用于处理大数据工作流的多功能集群计算系统。Spark在速度、易用性以及分析能力上都强于它的前辈们(如MapReduce)。
Apache Spark最初在2009年,由加州大学伯克利分校的AMPLab实验室研发,在2010年按照BSD协议实现开源,并在2013年转为Apache 2.0协议。到2013年下半年,Spark的创始人建立了Databricks,专注于Spark的研发和未来的公开发行。
谈到速度,Spark大数据工作流的处理可以达到亚秒级别的延迟。为了达到如此低的延迟,Spark充分利用了内存。在MapReduce中,内存仅仅用于实际计算,而Spark不仅使用内存进行计算,而且还用于存储对象。
Spark也提供一个连接各种大数据存储源的统一运行时接口,例如HDFS、Cassandra、Hbase和S3。它同时也提供大量的用于不同的大数据计算任务的顶层库,例如机器学习、SQL处理、图像处理以及实时数据流。这些库加快了开发速度,可以任意组合。
虽然Spark是用Scala所写,本书也只关注Scala部分的教程,但是Spark也支持Java和Python语言。
Spark是一个开源社区产品,每个人都是用Apache纯开源分布部署,不像Hadoop,有大量开发商改进的分布部署。
图1-1展示了Spark的生态圈。
Spark运行时运行在一系列集群管理器的基础之上,包括YARN(Hadoop的计算框架)、Mesos以及Spark自己的被称为独立模式的集群管理器。Tachyon是一个内存层的分布式文件系统,使得集群架构之间的文件共享速度能够可靠到达内存级别。(译注:Tachyon现已更名为alluxio,官网地址:www.alluxio.org。本书的其他部分仍会按照原文写作Tachyon,后续不再赘述。)简而言之,它是内存上的一个堆外存储层,用于在任务和用户之间分享数据。Mesos 是一个涉及数据中心处理系统的集群管理器。YARN是一个有着健壮的资源管理特性的Hadoop计算框架,Spark可以与它无缝连接使用。