Spark之火,已经燎原

本文选自“图灵教育”微信。

Spark简史

Spark于2009年作为一个研究项目在加州大学伯克利分校RAD实验室(AMPLab的前身)诞生。实验室中的一些研究人员曾经用过Hadoop MapReduce。他们发现MapReduce在迭代计算和交互计算的任务上表现得效率低下。因此,Spark从一开始就是为交互式查询和迭代算法设计的,同时还支持内存式存储和高效的容错机制。

2009年,关于Spark的研究论文在学术会议上发表,同年Spark项目正式诞生。其后不久,相比于MapReduce,Spark在某些任务上已经获得了10~20倍的性能提升。

Spark是什么

Spark是一个用来实现快速而通用的集群计算的平台。

在速度方面,Spark扩展了广泛使用的MapReduce计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。在处理大规模数据集时,速度是非常重要的。速度快就意味着我们可以进行交互式的数据操作,否则我们每次操作就需要等待数分钟甚至数小时。Spark的一个主要特点就是能够在内存中进行计算,因而更快。不过即使是必须在磁盘上进行的复杂计算,Spark依然比MapReduce更加高效。

总的来说,Spark适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代算法、交互式查询、流处理。通过在一个统一的框架下支持这些不同的计算,Spark使我们可以简单而低耗地把各种处理流程整合在一起。而这样的组合,在实际的数据分析过程中是很有意义的。不仅如此,Spark的这种特性还大大减轻了原先需要对各种平台分别管理的负担。

Spark所提供的接口非常丰富。除了提供基于Python、Java、Scala和SQL的简单易用的API以及内建的丰富的程序库以外,Spark还能和其他大数据工具密切配合使用。例如,Spark可以运行在Hadoop集群上,访问包括Cassandra在内的任意Hadoop数据源。

Spark组件

Spark项目包含多个紧密集成的组件。Spark的核心是一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎。由于Spark的核心引擎有着速度快和通用的特点,因此Spark还支持为各种不同应用场景专门设计的高级组件,比如SQL和机器学习等。这些组件关系密切并且可以相互调用,这样你就可以像在平常软件项目中使用程序库那样,组合使用这些的组件。

Spark的各个组件如图所示,后面附各个组件功能的简单介绍。

Spark Core

Spark Core实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(resilient distributed dataset,简称RDD)的API定义。RDD表示分布在多个计算节点上可以并行操作的元素集合,是Spark主要的编程抽象。Spark Core提供了创建和操作这些集合的多个API。

Spark SQL

Spark SQL是Spark用来操作结构化数据的程序包。通过Spark SQL,我们可以使用SQL或者Apache Hive版本的SQL方言(HQL)来查询数据。Spark SQL支持多种数据源,比如Hive表、Parquet以及JSON等。除了为Spark提供了一个SQL接口,Spark SQL还支持开发者将SQL和传统的RDD编程的数据操作方式相结合,不论是使用Python、Java还是Scala,开发者都可以在单个的应用中同时使用SQL和复杂的数据分析。通过与Spark所提供的丰富的计算环境进行如此紧密的结合,Spark SQL得以从其他开源数据仓库工具中脱颖而出。Spark SQL是在Spark 1.0中被引入的。

在Spark SQL之前,加州大学伯克利分校曾经尝试修改Apache Hive以使其运行在Spark上,当时的项目叫作Shark。现在,由于Spark SQL与Spark引擎和API的结合更紧密,Shark已经被Spark SQL所取代。

Spark Streaming

Spark Streaming是Spark提供的对实时数据进行流式计算的组件。比如生产环境中的网页服务器日志,或是网络服务中用户提交的状态更新组成的消息队列,都是数据流。Spark Streaming提供了用来操作数据流的API,并且与Spark Core中的RDD API高度对应。这样一来,程序员编写应用时的学习门槛就得以降低,不论是操作内存或硬盘中的数据,还是操作实时数据流,程序员都更能应对自如。从底层设计来看,Spark Streaming支持与Spark Core同级别的容错性、吞吐量以及可伸缩性。

MLlib

Spark中还包含一个提供常见的机器学习(ML)功能的程序库,叫作MLlib。MLlib提供了很多种机器学习算法,包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。MLlib还提供了一些更底层的机器学习原语,包括一个通用的梯度下降优化算法。所有这些方法都被设计为可以在集群上轻松伸缩的架构。

GraphX

GraphX是用来操作图(比如社交网络的朋友关系图)的程序库,可以进行并行的图计算。与Spark Streaming和Spark SQL类似,GraphX也扩展了Spark的RDD API,能用来创建一个顶点和边都包含任意属性的有向图。GraphX还支持针对图的各种操作(比如进行图分割的subgraph和操作所有顶点的mapVertices),以及一些常用图算法(比如PageRank和三角计数)。

集群管理器

就底层而言,Spark设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(cluster manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度器,叫作独立调度器。如果要在没有预装任何集群管理器的机器上安装Spark,那么Spark自带的独立调度器可以让你轻松入门;而如果已经有了一个装有Hadoop YARN或Mesos的集群,通过Spark对这些集群管理器的支持,你的应用也同样能运行在这些集群上。第7章会详细探讨这些不同的选项以及如何选择合适的集群管理器。

【图书推荐】

作者:Holden Karau,Andy Konwinski,Patrick Wendell,Matei Zaharia

译者:王道远

Spark作者及核心成员作品,Spark社区贡献者执笔翻译

Spark入门第一书

《Spark快速大数据分析》全面介绍Spark核心概念和基本原理,注重Spark用法。教会读者用Python、Java以及Scala的简易API来快速操控大规模数据集,使用简短的代码实现复杂的并行作业,了解从简单的批处理作业到流处理以及机器学习等应用。

“Spark是构建大数据应用最为流行的框架,而如果有人要我推荐一些指南书籍,《Spark快速大数据分析》无疑会排在首位。”

——Ben Lorica,O'Reilly首席数据科学家

作者:Sandy Ryza,Uri Laserson,Sean Owen,Josh Wills

译者:龚少成

定价:59

Amazon 4.8星实战手册,Cloudera公司数据科学家实践之作

展示利用Spark进行大规模数据分析的若干模式

将Spark、统计学方法和真实数据集结合起来

《Spark高级数据分析》是使用Spark进行大规模数据分析的实战宝典,由著名大数据公司Cloudera数据科学家撰写。首先介绍了Spark及其生态系统,接着详细介绍了将分类、协同过滤及异常检查等常用技术应用于基因学、安全和金融领域的若干模式。如果你对机器学习和统计学有基本的了解,并且会用Java、Python或Scala编程,这些模式将有助于你开发自己的数据应用。

作者:Nick Pentreath

译者:蔡立宇 黄章帅 周济民

用Scala、Java或Python语言编写你的第一个Spark程序

《Spark机器学习》介绍了Spark的基础知识,从利用Spark API来载入和处理数据,到将数据作为多种机器学习模型的输入。通过详细实例和现实应用讲解了常见的机器学习模型,包括推荐系统、分类、回归、聚类和降维。

你用Spark吗?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容