基本信息
- 作者: (美)Holden Karau Andy Konwinski Patrick Wendell (加)Matei Zaharia
- 译者: 王道远
- 出版社:人民邮电出版社
- ISBN:9787115403094
- 上架时间:2015-9-16
- 出版日期:2015 年9月
- 开本:16开
- 页码:210
- 版次:1-1
- 所属分类:计算机 > 数据库 > 数据库存储与管理
编辑推荐
国内第一本Spark图书!
Spark开发者出品!
《Spark快速大数据分析》是一本为Spark初学者准备的书,它没有过多深入实现细节,而是更多关注上层用户的具体用法。不过,本书绝不仅仅限于Spark的用法,它对Spark的核心概念和基本原理也有较为全面的介绍,让读者能够知其然且知其所以然。
内容简介
作译者
Andy Konwinski是Databricks联合创始人,Apache Spark项目技术专家,还是Apache Mesos项目的联合发起人。
Patrick Wendell是Databricks联合创始人,也是Apache Spark项目技术专家。他还负责维护Spark核心引擎的几个子系统。
Matei Zaharia是Databricks的CTO,同时也是Apache Spark项目发起人以及Apache基金会副主席。
目录
译者序 xiv
序 xvi
前言 xvii
第1章 Spark数据分析导论 1
1.1 Spark是什么 1
1.2 一个大一统的软件栈 2
1.2.1 Spark Core 2
1.2.2 Spark SQL 3
1.2.3 Spark Streaming 3
1.2.4 MLlib 3
1.2.5 GraphX 3
1.2.6 集群管理器 4
1.3 Spark的用户和用途 4
1.3.1 数据科学任务 4
1.3.2 数据处理应用 5
1.4 Spark简史 5
1.5 Spark的版本和发布 6
1.6 Spark的存储层次 6
第2章 Spark下载与入门 7
译者序
《Spark 快速大数据分析》是一本为Spark 初学者准备的书,它没有过多深入实现细节,而是更多关注上层用户的具体用法。不过,本书绝不仅仅限于Spark 的用法,它对Spark 的核心概念和基本原理也有较为全面的介绍,让读者能够知其然且知其所以然。
Spark 只是一个通用计算框架,利用Spark 实现的应用才是其真正价值所在。我们很欣慰地看到,国内的许多知名互联网公司已经利用Spark 创造出了难以估量的价值。本书的读者不妨也尝试把Spark 应用到实践中,去探寻数据海洋里的无尽瑰宝。
本书得以完成,离不开各方支持。感谢人民邮电出版社图灵公司的李松峰老师、岳新欣老师、张曼老师,他们为本译稿的出版提供了大力支持。感谢本人所在的英特尔亚太研发有限公司大数据团队,其中程浩、孙锐、俞育才、张李晔分别负责了本书各部分的审校工作,黄洁、邵赛赛、史鸣飞也为本书的翻译工作提供了帮助。感谢Databricks 的连城学长,他促成了我与出版社的合作。在翻译的过程中,来自家人与朋友的理解和支持也让我深深感动。
如本书所述,Spark 是一个大一统的软件栈,涉及方方面面的知识,为本书的翻译增加了不少难度。尽管译者一直努力保证翻译的准确性,由于学识有限,难免会有疏忽之处。而大数据作为一门新兴学科,许多术语尚未有约定俗成的译法。Spark 也在不断发展中,本书英文稿是根据Spark 1.2 编纂,而译者也尽量标注了直至Spark 1.4 为止(翻译时的最新版本)引入的一些变化。如果读者发现了本书中的不足或错误之处,恳请批评指正。我的电子邮箱是:me@daoyuan.wang。
王道远
2015 年夏
前言
本书主要介绍Spark,让读者能够轻松入门并玩转Spark。你能从本书中学到如何让Spark在你的电脑上运行起来,并且通过交互式操作来学习Spark 的API。我们也会讲解一些用Spark 作数据操作和分布式执行时的细节。最后,本书会带你畅游Spark 上一些高级的程序库,包括机器学习、流处理、图计算和SQL 查询。我们希望本书能够让你了解Spark。不论你只有一台电脑还是有一个庞大的集群,Spark 都能成为令你运筹帷幄的数据分析工具。
读者对象
本书的目标读者是数据科学家和工程师。我们选择这两个群体的原因,在于他们能够利用Spark 去解决一些可能会遇到但是没有办法解决的问题。Spark 提供了功能丰富的数据操作库(例如MLlib),可以帮助数据科学家利用他们自己的统计学背景知识,研究数据集大小超过单机所能处理极限的数据问题。与此同时,工程师们则可以从本书中学习和利用Spark 编写通用的分布式程序并运维这些应用。工程师和数据科学家都不仅能从本书中学到各自需要的具体技能,而且还能够在各自领域中利用Spark 解决大型分布式问题。
数据科学家关注如何从数据中发现关联以及建立模型。数据科学家通常有着统计学或者数学背景,他们中的大多数也熟悉Python 语言、R 语言、SQL 等传统数据分析工具。在本书中,我们不仅会讲到Spark 中一些机器学习和高级数据分析的程序库,也会把一些Python或者SQL 的应用作为Spark 使用示例进行展示。如果你是一位数据科学家,我们希望你读完本书之后,能够在获得更快速度和更大数据规模支持的同时,使用早已熟悉的方式来解决问题。
本书的第二类目标读者是软件工程师。对于工程师,不管你擅长的是Java 还是Python,抑或是别的编程语言,我们希望这本书能够教会你如何搭建一个Spark 集群,如何使用Spark shell,以及如何编写Spark 应用程序来解决需要并行处理的问题。如果你熟悉Hadoop,你就已经在如何与HDFS 进行交互以及如何管理集群的领域中领先了一小步。即使你没有Hadoop 经验也不用担心,我们会在本书中讲解一些基本的分布式执行的概念。
不论你是数据分析师还是工程师,如果想读透这本书,就应当对Python、Java、Scala 或者一门类似的编程语言有一些基本了解。另外,我们假设你已经有了关于数据存储的解决方案,所以不会讲到如何搭建一个数据存储系统,不过我们会介绍如何在常见的数据存储系统上读取和保存数据。即使你没用过这些编程语言也不必担心,有很多优秀的学习资源可以帮助你理解这些语言,我们在下文的相关书籍中列举了一些。
本书结构
本书结构清晰,章节是按照从前到后依次阅读的顺序组织的。在每一章的开头,我们会说明本章中的哪些小节对于数据科学家们更重要,而哪些小节则对于工程师们更为有用。话虽如此,我们还是希望书中的所有内容对两类读者都能有一定的帮助。
前两章将会带你入门,让你在自己的电脑上搭好一个基础的Spark,并且让你对于用Spark能做什么有一个基本的概念。等我们弄明白了Spark 的目标和Spark 的安装之后,就会着重介绍Spark shell。Spark shell 是开发Spark 应用原型时非常有用的工具。后续几章则会详细介绍Spark API、如何将Spark 应用运行在集群上,以及Spark 所提供的更高层的程序库支持,例如SQL(数据库支持)和MLlib(机器学习库)。
相关书籍
如果你是一个没有太多Python 经验的数据科学家,那么我们向你推荐Learning Python(O’Reilly)和Head First Python(O’Reilly)。如果你已经有了一定的Python 经验,那么Dive Into Python(http://www.diveintopython.net/)可以进一步加深你对Python 的理解。
如果你是个工程师,读完本书之后还希望提高自己的数据分析技能,O’Reilly 出版的Machine Learning for Hackers 和Doing Data Science 是不错的参考书。
本书主要为初学者而写,但我们也正在计划为那些渴望全面理解Spark 内部原理的人写一本更加深入的书。
排版约定
本书使用了下列排版约定。
·楷体
表示新术语。
·等宽字体(Constant width)
表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。
序言
我很荣幸能够一直密切地参与到Spark 的开发中,伴随Spark 一路走来,看着Spark 从草稿纸上的原型成长为当下最活跃的大数据开源项目。如今,Spark 已经成为Apache 基金会下最为活跃的项目之一。不仅如此,我也为结识Spark 项目创始人Matei Zaharia 以及其他几位Spark 长期开发者Patrick Wendell、Andy Konwinski 和Holden Karau 感到由衷高兴。正是他们四位完成了本书的著作工作。
随着Spark 的迅速流行,相关优秀参考资料匮乏的问题顿时突显出来。本书共有11 章,包含许多专为渴望学习Spark 的数据科学家、学生、开发者们设计的具体实例,大大缓解了Spark 缺少优秀参考资料的问题。即使是没有大数据方面背景知识的读者,也可以把本书作为入门大数据领域的明智之选。我真挚地希望这本书能引领你和其他读者走进大数据这个令人激动的新领域,在多年之后依然令你回味无穷。
——Databricks 公司首席执行官,加州大学伯克利分校AMPlab 联合主任 Ion Stoica
推荐序
近年来大数据逐渐升温,经常有人问起大数据为何重要。我们处在一个数据爆炸的时代,大量涌现的智能手机、平板、可穿戴设备及物联网设备每时每刻都在产生新的数据。当今世界,有90%的数据是在过去短短两年内产生的。到2020年,将有500多亿台的互联设备产生Zeta字节级的数据。带来革命性改变的并非海量数据本身,而是我们如何利用这些数据。大数据解决方案的强大在于它们可以快速处理大规模、复杂的数据集,可以比传统方法更快、更好地生成洞见。
一套大数据解决方案通常包含多个重要组件,从存储、计算和网络等硬件层,到数据处理引擎,再到利用改良的统计和计算算法、数据可视化来获得商业洞见的分析层。这中间,数据处理引擎起到了十分重要的作用。毫不夸张地说,数据处理引擎之于大数据就像CPU之于计算机,或大脑之于人类。
早在2009年,Matei Zaharia在加州大学伯克利分校的AMPLab进行博士研究时创立了Spark大数据处理和计算框架。不同于传统的数据处理框架,Spark基于内存的基本类型(primitive)为一些应用程序带来了100倍的性能提升。Spark允许用户程序将数据加载到集群内存中用于反复查询,非常适用于大数据和机器学习,日益成为最广泛采用的大数据模块之一。包括Cloudera和MapR在内的大数据发行版也在发布时添加了Spark。
目前,Spark正在促使Hadoop和大数据生态系统发生演变,以更好地支持端到端的大数据分析需求,例如:Spark已经超越Spark核心,发展到了Spark streaming、SQL、MLlib、GraphX、SparkR等模块。学习Spark和它的各个内部构件不仅有助于改善大数据处理速度,还能帮助开发者和数据科学家更轻松地创建分析应用。从企业、医疗、交通到零售业,Spark这样的大数据解决方案正以前所未见的力量推进着商业洞见的形成,带来更多更好的洞见以加速决策制定。
在过去几年中,我的部门有机会与本书的作者合作,向Apache Spark社区贡献成果,并在英特尔架构上优化各种大数据和Spark应用。《Spark快速大数据分析》的出版为开发者和
数据科学家提供了丰富的Spark 知识。更重要的是,这本书不是简单地教开发者如何使用Spark,而是更深入介绍了Spark 的内部构成,并通过各种实例展示了如何优化大数据应用。我向大家推荐这本书,或更具体点,推荐这本书里提倡的优化方法和思路,相信它们能帮助你创建出更好的大数据应用。
英特尔软件服务事业部全球大数据技术中心总经理 马子雅
2015 年7 月于加州圣克拉拉
Big data is getting hot in recent years. Quite often, folks ask why big data is a big deal. We are in the era of data explosion, with the emergence of smart phones, tablets, wearables, IoT devices,etc. Ninety percent of the data in the world today was generated in just the past two years. By 2020, we will see >50B devices connected and Zeta byte data created. It is not the quantity of the data that is revolutionary. It is that we can now do something with it that's revolutionary. The
power of big data solutions is they can process large and complex data sets very fast, generate better and faster insights than conventional methods.
A big data solution suite can consist of several critical components, from the hardware layer like storage, compute and network, to data processing engine, to analytics layer where business insights are generated using improved statistical & computational algorithms and data visualization. Among all, the data processing engine is one most critical player. It is not overstating that the data processing engine for big data is like CPU for a computer or brain for a human being.
Spark was initially started for the purpose of creating a big data processing and computing framework, when Matei Zaharia was doing his Ph.D. research at UC Berkeley AMPLab in 2009.Different from the traditional data processing framework, Spark's in-memory primitives provide performance up to 100 times faster for certain applications. By allowing user programs to load data into a cluster's memory and query it repeatedly, Spark is well-suited for big data and machine
learning use cases. Spark is becoming one best adopted among all big data modules. Big Data Distributions like Cloudera, MapR now all include Spark into their distributions.
Spark is now evolving the Hadoop and big data ecosystem to better support the end-to-end big data analytics needs, e.g. Spark grew beyond Spark core to Spark streaming, SQL, MLlib, GraphX, SparkR, etc. Learning Spark and its internals will not just help improve the processing speed for big data, but also help developers and data scientists create analytics applications with more ease. With big data solutions like Spark, we expect to see significant improvement with business insights which will help expedite the decision making—like we've never seen before,from enterprise, healthcare, transportation, and retail.
媒体评论
——Ben Lorica,O'Reilly首席数据科学家
书摘
Spark 是由一个强大而活跃的开源社区开发和维护的,社区中的开发者们来自许许多多不同的机构。如果你或者你所在的机构是第一次尝试使用 Spark,也许你会对 Spark 这个项目的历史感兴趣。Spark 是于 2009 年作为一个研究项目在加州大学伯克利分校 RAD 实验室(AMPLab 的前身)诞生。实验室中的一些研究人员曾经用过 Hadoop MapReduce。他们发现 MapReduce 在迭代计算和交互计算的任务上表现得效率低下。因此,Spark 从一开始就是为交互式查询和迭代算法设计的,同时还支持内存式存储和高效的容错机制。
2009 年,关于 Spark 的研究论文在学术会议上发表,同年 Spark 项目正式诞生。其后不久,相比于 MapReduce,Spark 在某些任务上已经获得了 10 ~ 20 倍的性能提升。
Spark 最早的一部分用户来自加州伯克利分校的其他研究小组,其中比较著名的有 Mobile Millennium。作为机器学习领域的研究项目,他们利用 Spark 来监控并预测旧金山湾区的交通拥堵情况。仅仅过了短短的一段时间,许多外部机构也开始使用 Spark。如今,有超过 50 个机构将自己添加到了使用 Spark 的机构列表页面。在 Spark 社区如火如荼的社区活动 Spark Meetups和 Spark 峰会中,许多机构也向大家积极分享他们特有的 Spark 应用场景。除了加州大学伯克利分校,对 Spark 作出贡献的主要机构还有 Databricks、雅虎以及英特尔。
2011 年,AMPLab 开始基于 Spark 开发更高层的组件,比如 Shark(Spark 上的 Hive)1 和 Spark Streaming。这些组件和其他一些组件一起被称为伯克利数据分析工具栈(BDAS,https://amplab.cs.berkeley.edu/software/)。
1Shark 已经被 Spark SQL 所取代。
Spark 最早在 2010 年 3 月开源,并且在 2013 年 6 月交给了 Apache 基金会,现在已经成了 Apache 开源基金会的顶级项目。
Spark的版本和发布
自其出现以来,Spark 就一直是一个非常活跃的项目,Spark 社区也一直保持着非常繁荣的态势。随着版本号的不断更迭,Spark 的贡献者也与日俱增。Spark 1.0 吸引了 100 多个开源程序员参与开发。尽管项目活跃度在飞速地提升,Spark 社区依然保持着常规的发布新版本的节奏。2014 年 5 月,Spark 1.0 正式发布,而本书则主要关注 Spark 1.1.0 以及后续的版本。不过,大多数概念在老版本的 Spark 中依然适用,而大多数示例也能运行在老版本的 Spark 上。
Spark的存储层次
Spark 不仅可以将任何 Hadoop 分布式文件系统(HDFS)上的文件读取为分布式数据集,也可以支持其他支持 Hadoop 接口的系统,比如本地文件、亚马逊 S3、Cassandra、Hive、HBase 等。我们需要弄清楚的是,Hadoop 并非 Spark 的必要条件,Spark 支持任何实现了 Hadoop 接口的存储系统。Spark 支持的 Hadoop 输入格式包括文本文件、SequenceFile、Avro、Parquet 等。我们会在第 5 章讨论读取和存储时详细介绍如何与这些数据源进行交互。
……