高性能分布式计算系统开发与实现:基于Hadoop、Scalding和Spark
定 价:69 元
丛书名:华章IT
- 作者:[印度] 斯里尼瓦沙(Srinivasa, K.G.), 阿尼尔·库马尔·穆帕拉(Anil Kumar Muppal
- 出版时间:2018/7/1
- ISBN:9787111601531
- 出 版 社:机械工业出版社
- 中图法分类:TP274
- 页码:
- 纸张:胶版纸
- 版次:
- 开本:16开
本书分两部分,共8章,介绍了如何使用开源工具和技术开发与实现大规模分布式处理系统,涵盖构建高性能分布式计算系统的方法和佳实践。第 一部分(第1~4章)介绍了高性能分布式计算编程的基础知识,包括分布式系统、Hadoop入门、Spark入门、Scalding入门等;第二部分(第5~8章)给出了使用Hadoop、Spark、Scalding的案例研究,涉及数据聚类、数据分类、回归分析、推荐系统等。本书适合作为高等院校计算机相关专业的教材,也适合作为软件工程师、应用开发人员、科研人员的参考书。
前 言过去的二十年中,随着计算机的使用越来越广泛,产生了大量的数据。生产与生活中各类设备和工具的数字化也促进了数据的增长。市场中,对这些庞大且不断增长的数据进行存储、处理和分析的需求应运而生。在硬件层面,每秒进行万亿次浮点运算的高性能计算(HPC)系统可以对庞大的数据进行管理。由于单个计算机无法应对其操作的复杂性,因此HPC系统需要在分布式环境中运行。可以通过两种趋势实现万亿次浮点的分布式运算。一种是通过全球网络连接计算机,实现复杂数据的分布式管理。另一种是采用专用的处理器,并集中存放,这样可以缩短机器之间的数据传输时间。这两种趋势正在呈现快速的融合之势,必然会为浩繁的数据处理问题带来更为迅捷和有效的硬件解决方案。
在软件层面,Apache Hadoop在解决庞大数据的管理问题方面已经是久负盛名。Hadoop的生态系统包括Hadoop分布式文件系统(HDFS)、MapReduce框架(支持多种数据格式和数据源)、单元测试、对变体和项目进行聚类(如Pig、Hive等)。它能够实现包括存储和处理在内的全生命周期的数据管理。Hadoop的优势在于,它通过分布式模块处理大型数据。它还可以处理非结构化数据,这使其更具吸引力。与HPC骨干网结合,Hadoop可以使处理海量数据的任务变得非常简单。
如今,很多高级的Hadoop框架,如Pig、Hive、Scoobi、Scrunch、Cascalog、Scald-ing和Spark,使得Hadoop易于操作。它们中大多数都得到著名企业的支持,如Yahoo(Pig)、Facebook(Hive)、Cloudera(Scrunch)和Twitter(Scalding),这说明Hadoop在工业领域得到了广泛支持。这些框架使用的是Hadoop的基础模块,例如HDFS和MapReduce,但是通过创建一个抽象来隐藏Hadoop模块的复杂性,为复杂的数据处理提供了一种简单的方法。这个抽象的一个例证就是Cascading。许多具体的语言是使用Cascading的框架创建的。其中一个实例就是Twitter的Scalding,它用来查询存储在HDFS中的大型数据集,如Twitter上的推文。
Hadoop和Scalding中的数据存储大多基于磁盘。这一结构因其较长的数据寻道和传输时间影响了运行速率。如果数据从磁盘中读取然后保持在内存中,运行速率会提高数倍。Spark实现了这一概念,并宣称其效率较之MapReduce在内存中快100倍,在磁盘上快10倍。Spark使用了弹性分布式数据集的基本抽象,这些数据集是分布式的不可变集合。由于Spark将数据存储在内存中,因此迭代算法可以在数据挖掘和机器学习方面更有效地发挥作用。
目标本书旨在介绍使用自由和开放源码的工具和技术(如Hadoop、Scalding、Spark等)构建分布式处理系统的方法,关键目标包括以下几点。
使读者掌握当前使用Hadoop、Scalding和Spark构建高性能分布式计算系统的新发展。
为读者提供相关理论的软件框架和实践途径。
为学生和实践者使用自由及开放源码软件技术(如Hadoop、Scalding和Spark)提供指导和实例。
使读者加深对与高性能分布式计算(HPDC)相关的新兴范式在构建可扩展软件系统以供大规模数据处理方面的理解。
本书结构本书共8章,分成两部分,各章内容概述如下。
第一部分 高性能分布式计算编程基础第1章阐述构成现代HPDC范式(如云计算、网格和集群系统等)主体的分布式系统的基本知识。从讨论各种形式的分布式系统开始,解析它们的通用架构,也谈及其设计的核心,即分布式文件系统。此外,还通过相关的示例说明其在发展过程中遇到的技术难题和该领域近年来的发展趋势。
第2章概述Hadoop生态系统,一步步地介绍系统的安装、编程和实现。第3章描述Spark的核心—弹性分布式数据集,谈及其安装、API编程,并给出一些范例。第4章重点阐述Hadoop流,也涉及Scalding的应用,并讨论Python在Hadoop和Spark中的应用。
第二部分 使用Hadoop、Scalding和Spark的案例研究本书并不局限于解释基本的理论常识,它的优势在于提供了程序范例。书中给出四个案例,内容涉及很多应用领域和计算方法,足以令怀疑论者变成Scalding和Spark的信众。第5章讲述K均值聚类算法的实现,第6章讲述使用朴素贝叶斯分类器进行数据分类。第7章进一步阐述使用Scalding和Spark的分布式系统中进行数据挖掘和机器学习的方法,并概述回归分析。
当前,推荐系统在诸多领域都非常受欢迎。它自动充当了两个不相交实体的中间人,在购物、检索、出版领域的现代网络应用中正日趋流行。一个可运行的推荐系统不仅需要有强大的计算引擎,还应该能够实时扩展。第8章阐释使用Scalding和Spark创建这样一个推荐系统的过程。
目标受众本书的目标受众主要包括:
软件工程师和应用开发者学生和大学讲师自由和开放源码软件的贡献者研究人员代码库书中使用的源码和数据集可以从https://github.com/4ni1/hpdc-scalding-spark下载。
致谢感谢以下人员在本书的准备过程中提供的支持和帮助:
M. S.拉迈阿理工学院董事M. R. Seetharam先生M. S.拉迈阿理工学院董事M. R. Ramaiah先生M. S.拉迈阿理工学院行政主管S. M. Acharya先生M. S.拉迈阿理工学院院长S. Y. Kulkarni博士M. S.拉迈阿
K.G.斯里尼瓦沙(K.G.Srinivasa)于2007年获得班加罗尔大学计算机科学与工程博士学位。现就职于班加罗尔的M.S.拉迈阿理工学院计算机科学与工程系,任教授兼主任。他在国际会议和期刊上共发表过一百多篇研究论文,曾作为访问学者出访过许多大学。他是UGC、DRDO和DST资助的多个项目的首席研究员,其研究领域包括数据挖掘、机器学习、高性能计算和云计算。他是IEEE和ACM的高级成员。
阿尼尔·库马尔·穆帕拉(Anil Kumar Muppalla)既是一位研究者也是一个作家。具有计算机科学和工程学学位。他是很多行业的软件开发者和顾问。他是活跃的研究者,并在国际会议和期刊上发表诸多文章。他研究的方向包括使用Hadoop、Scalding和Spark进行应用开发。
目 录
译者序
前言
作者简介
第一部分 高性能分布式计算编程基础
第1章 引言2
1.1 分布式系统2
1.2 分布式系统类型5
1.2.1 分布式嵌入式系统5
1.2.2 分布式信息系统7
1.2.3 分布式计算系统8
1.3 分布式计算架构9
1.4 分布式文件系统10
1.4.1 分布式文件系统需求10
1.4.2 分布式文件系统架构11
1.5 分布式系统面临的挑战13
1.6 分布式系统的发展趋势16
1.7 高性能分布式计算系统示例18
参考文献20
第2章 Hadoop入门22
2.1 Hadoop简介22
2.2 Hadoop生态系统24
2.3 Hadoop分布式文件系统26
2.3.1 HDFS的特性26
2.3.2 名称节点和数据节点27
2.3.3 文件系统28
2.3.4 数据复制28
2.3.5 通信30
2.3.6 数据组织30
2.4 MapReduce准备工作31
2.5 安装前的准备33
2.6 单节点集群的安装35
2.7 多节点集群的安装38
2.8 Hadoop编程45
2.9 Hadoop流48
参考文献51
第3章 Spark入门53
3.1 Spark简介53
3.2 Spark内部结构54
3.3 Spark安装58
3.3.1 安装前的准备58
3.3.2 开始使用60
3.3.3 示例:Scala应用63
3.3.4 Python下Spark的使用65
3.3.5 示例:Python应用67
3.4 Spark部署68
3.4.1 应用提交68
3.4.2 单机模式70
参考文献72
第4章 Scalding和Spark的内部编程74
4.1 Scalding简介74
4.1.1 安装74
4.1.2 编程指南77
4.2 Spark编程指南103
参考文献120
第二部分 使用Hadoop、Scalding和Spark的案例研究
第5章 案例研究Ⅰ:使用Scalding和Spark进行数据聚类122
5.1 简介122
5.2 聚类122
5.2.1 聚类方法123
5.2.2 聚类处理125
5.2.3 K均值算法125
5.2.4 简单的K均值示例126
5.3 实现128
问题142
参考文献142
第6章 案例研究Ⅱ:使用Scalding和Spark进行数据分类144
6.1 分类145
6.2 概率论146
6.2.1 随机变量146
6.2.2 分布146
6.2.3 均值和方差147
6.3 朴素贝叶斯148
6.3.1 概率模型148
6.3.2 参数估计和事件模型149
6.3.3 示例150
6.4 朴素贝叶斯分类器的实现152
6.4.1 Scalding实现153
6.4.2 结果166
问题168
参考文献168
第7章 案例研究Ⅲ:使用Scalding和Spark进行回归分析169
7.1 回归分析的步骤169
7.2 实现细节172
7.2.1 线性回归:代数方法173
7.2.2 代数方法的Scalding实现174
7.2.3 代数方法的Spark实现179
7.2.4 线性回归:梯度下降法184
7.2.5 梯度下降法的Scalding实现187
7.2.6 梯度下降法的Spark实现195
问题198
参考文献199
第8章 案例研究Ⅳ:使用Scalding和Spark实现推荐系统200
8.1 推荐系统200
8.1.1 目标201
8.1.2 推荐系统的数据源201
8.1.3 推荐系统中使用的技术202
8.2 实现细节204
8.2.1 Spark实现206
8.2.2 Scalding实现221
问题230
参考文献230
索引233