TheTranslator'sWords译者序
目前,大数据已经成了一个热点,各个专业领域都在利用大数据技术解决复杂的业务问题。与此同时,很多业务人员和技术人员对大数据技术还不太了解,觉得大数据技术背后的技术平台很复杂、很深奥。而本书就可以让读者循序渐进地熟悉目前主流的大数据技术平台。
本书比较系统地讲解了利用Hadoop和Spark及其生态系统里的一系列工具进行大数据分析的方法,并配套了详细的示例,是一本比较实用的参考书。
大家可以按照本书的内容循序渐进地学习。本书的难度并不大,绝大部分内容都配有详细的说明和实践步骤。偶尔需要补充一些背景知识,我会尽力用译者注的形式进行说明,希望对读者能有所帮助。
我们可以看到,Hadoop和Spark实际上并不是相互竞争的关系,二者可以搭配使用,相互补充,为大数据分析人员提供一个全面和统一的技术框架,使之能够专注于业务需求,而无须在技术实现层面花费太多精力。
本书的定位主要是在大数据技术平台的搭建和配置方面。虽然原书书名是《BigDataAnalytics》,但本书的核心内容是大数据分析的基础架构及实施方法,而不是大数据的分析方法,比如书中对于示例中用到的机器学习模型只有比较简略的讲解。
从这个角度来说,本书比较适合大数据分析的技术支持人员,以及对机器学习算法和模型已有一定造诣,希望学习利用最新的技术平台进行分析的独立研究者。
如果读者对机器学习的算法和模型感兴趣,可以参考我之前翻译的《预测分析:R语言实现》(书号是:978-7-111-55354-0),该书比较深入地讲解了机器学习常用的一些模型,并且有详细的示例帮助读者进行练习。
和以往一样,我在GitHub上为本书开通了一个讨论区,网址是https://github.com/coderLMN/BigDataAnalytics/issues。如果读者在阅读中遇到问题或错误,欢迎来这里提出,更欢迎参与讨论。谢谢!
根据我之前的经验,这样的讨论区对于不少读者来说是很实用的。他们不仅能提出问题、参与讨论,也可以提出自己的观点和实现方法,让自己、译者、其他读者都能从中获益。
在此我要感谢贾立恒等读者在讨论中给我带来的启发。另外,他们在学习过程中表现出来的认真和严谨对我也是一种无声的督促,让我在翻译的过程中不敢懈怠,时刻提醒自己要对翻译出来的文字负责。
最后,我要感谢我的家人,他们对我的翻译工作给予了极大的耐心和理解,让我能专心地从事这项我热爱的工作。
吴今朝
Preface前言
本书讲解了ApacheSpark和Hadoop的基础知识,以及如何通过简单的方式将它们与最常用的工具和技术集成在一起。所有Spark组件(SparkCore、SparkSQL、DataFrame、Dataset、ConventionalStreaming、StructuredStreaming、MLlib、GraphX和Hadoop核心组件)、HDFS、MapReduce和Yarn都在Spark+Hadoop集群的实现示例中进行了深入的探讨。
大数据分析行业正在从MapReduce转向Spark。因此,本书深入讨论了Spark相比MapReduce的优势,从而揭示出它在内存计算速度方面的好处。我们还会讲解如何运用DataFrameAPI、DataSourcesAPI,以及新的DatasetAPI来构建大数据分析应用程序。书中还讲解了如何使用SparkStreaming配合ApacheKafka和HBase进行实时数据分析,以帮助构建流式应用程序(streamingapplication)。新的结构化流(StructuredStreaming)概念会通过物联网(InternetofThings,IOT)用例来解释。在本书中,机器学习技术会使用MLLib、机器学习流水线和SparkR来实现;图分析则会利用Spark的GraphX和GraphFrames组件包来进行。
本书还介绍了基于Web的笔记本(如Jupyter和ApacheZeppelin)和数据流工具ApacheNiFi,它们用于分析和可视化数据,以及利用Livy服务器把Spark作为一个服务提供给用户。
本书包含的内容
第1章从宏观的角度讲解了大数据分析的概念,并介绍了在ApacheHadoop和ApacheSpark平台上使用的工具和技术,以及一些最常见的用例。
第2章介绍了Hadoop和Spark平台的基础知识。该章还讲解了Spark与MapReduce有何不同,以及Hadoop平台上的Spark有哪些优点。随后介绍如何安装集群,以及如何设置分析所需的工具。
第3章介绍了Spark的更深层概念,例如SparkCore内部结构、如何使用键值对RDD、Spark程序的生命周期、如何构建Spark应用程序、如何持久化和缓存RDD,以及如何使用Spark资源管理器(Standalone、Yarn和Mesos)。
第4章涵盖了DataSourcesAPI、DataFramesAPI和新的DatasetAPI。本章会特别重点地讲解DataFrameAPI的用途,以及如何对具有内置数据源(CSV、Json、Parquet、ORC、JDBC和Hive)和外部数据源(如Avro、Xml和Pandas)的DataFrameAPI进行分析。Spark-on-HBase连接器部分解释了如何使用DataFrame分析Spark中的HBase数据。该章还讲解了如何使用SparkSQL作为分布式SQL引擎。
第5章讲解了实时分析的含义,以及SparkStreaming与Storm、trident、Flink和Samza等其他实时引擎的不同之处。其中描述了具有输入数据源和输出存储的SparkStreaming的架构,涵盖无状态和有状态的流处理,以及使用基于接收器的方法和直接方法,把Kafka作为数据源,把HBase作为存储。该章还讲解了应用程序在驱动进程(Driver)或执行进程(Executor)出现故障的情况下,有关Spark流的容错概念。结构化流(StructuredStreaming)的概念会通过一个物联网(IOT)的用例来解释。
第6章用Jupyter、Zeppelin和Hue等工具介绍了基于Web的笔记本。该章还介绍了LivyREST服务器,它用于把Spark构建为服务,并在多个用户之间共享SparkRDD。该章还介绍了ApacheNiFi,它可以利用Spark和Hadoop构建数据流。
第7章旨在更深入地讲解利用Spark和Hadoop来实现数据科学中用到的机器学习技术。该章介绍了Spark使用的机器学习算法,包括垃圾邮件的检测、实现和构建机器学习流水线(machinelearningpipeline)的方法,还讲解了使用H2O和Hivemall实现机器学习的方法。
第8章详细介绍了协同过滤技术,并解释了如何使用Spark和Mahout构建实时推荐引擎。
第9章介绍了图处理、GraphX与Giraph的区别,以及GraphX的各种图运算,如创建图、计数、过滤、度、三元组、修改、连接、属性变换、顶点RDD和边RDD运算等。它还通过一个航班分析用例讲解了GraphX算法,如三角计数和连通分量。该章还介绍了基于DataFrame的新GraphFrames组件,用来解释模式发现(motiffinding)这样的一些概念。
第10章讲解了R语言和SparkR之间的差异,以及如何开始通过shell脚本在local、standalone和Yarn模式下使用SparkR。该章还介绍了如何把SparkR与RStudio、DataFrame、机器学习算法,以及ApacheZeppelin配套使用。
学习本书所需的资源
为了方便入门,本书中的实践练习会在Cloudera、Hortonworks、MapR或预构建的SparkforHadoop的虚拟机(VM)上演示。同样的练习也可以在更大的集群上运行。
在你的笔记本电脑上使用虚拟机的必要条件有:
内存:8GB及以上
CPU:至少2个虚拟CPU
必须为Windows或Linux操作系统安装最新版本的VMWareplayer或OracleVirtualBox
Mac上需要安装最新版本的OracleVirtualBox或VMWareFusion
需要在BIOS里启用虚拟化
浏览器:推荐使用Chrome25+、IE9+、Safari6+或Firefox18+(HDPSandbox无法在IE10上运行)
Putty
WinScP
在本书的各章中会使用Python和Scala编程语言,其中Python的侧重程度更高。我们假设读者具备Java、Scala、Python、SQL或R语言的初级编程背景,并具有基本的Linux经验。如果读者在Hadoop平台上的大数据环境中有一些工作经验,就能比较快捷地开始构建Spark应用程序。
本书的目标读者
虽然本书主要是针对数据分析师和数据科学家编写的,但它也会对架构师、程序员和大数据从业者有所帮助。
对于数据分析师:本书可以用作数据分析人员在Spark和Hadoop上开发分析应用程序的参考指南。
对于数据科学家:本书可以用作在Spark和Hadoop上构建数据产品的参考指南。
对于架构师:本书提供了一个完整生态系统的概述和一些大数据分析应用程序的示例,有助于构建大数据分析的解决方案。
对于程序员:本书讲解了用Scala和Python语言构建大数据应用程序所使用的API和技术。
对于大数据从业者:本书有助于了解新的范例和技术,并做出正确的决定。
下载示例代码
你可以从http://www.packtpub.com的账户下载此书的示例代码文件。如果你是通过其他渠道购买了此书,可以访问http://www.packtpub.com/support并注册,以便将文件直接发送给你。
你可以通过以下步骤下载代码文件:
(1)使用你的电子邮件地址和密码登录或注册Packt网站。
(2)将鼠标指针悬停在网页顶部的SUPPORT选项卡上。
(3)点击CodeDownloads&Errata。
(4)在Search输入框里输入本书的书名。
(5)选择你要下载代码文件的图书。
(6)从你购买此书的下拉菜单中选择要下载的代码。
(7)点击CodeDownload。
你也可以通过点击Packt出版社网站上该图书对应网页上的CodeFiles按钮来下载代码文件。这个页面可以通过在搜索框中输入图书的名称来访问。请注意,你需要登录到你的Packt账户。
下载文件后,请确保你使用以下软件的最新版本来解压缩或提取文件夹:
WinRAR/7-ZipforWindows
Zipeg/iZip/UnRarXforMac
7-Zip/PeaZipforLinux
该书配套的代码也托管在GitHub上,网址为https://github.com/PacktPublishing/big-data-analytics。在https://github.com/PacktPublishing/上还有其他代码库,里面有丰富的书籍和视频分类。去看一下吧!
下载本书的彩色图像
本书还提供了一个PDF文件,其中包含本书中使用的截图/图表的彩色图像。这些彩色图像会帮助你更好地了解输出的变化。你可以从http://www.packtpub.com/sites/default/files/downloads/BigDataAnalyticsWithSparkAndHadoop_ColorImages.pdf下载此文件。