高性能分布式计算系统开发与实现:基于Hadoop、Scalding和Spark
作者 : [印度]K.G.斯里尼瓦沙(K.G.Srinivasa) 阿尼尔·库马尔·穆帕拉(Anil Kumar Muppalla) 著
译者 : 高辉 李东升 王宏志 译
出版日期 : 2018-07-03
ISBN : 978-7-111-60153-1
定价 : 69.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 244
开本 : 16
原书名 : Guide to High Performance Distributed Computing:Case Studies with Hadoop, Scalding and Spark
原出版社: Springer
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书介绍了如何使用开源工具和技术开发与实现大规模分布式处理系统,涵盖构建高性能分布式计算系统的方法和最佳实践。

图书特色

1

图书前言

过去的二十年中,随着计算机的使用越来越广泛,产生了大量的数据。生产与生活中各类设备和工具的数字化也促进了数据的增长。市场中,对这些庞大且不断增长的数据进行存储、处理和分析的需求应运而生。在硬件层面,每秒进行万亿次浮点运算的高性能计算(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.拉迈阿理工学院副院长N. V. R. Naidu博士
M. S.拉迈阿理工学院教务主任T. V. Suresh Kumar博士
感谢M. S.拉迈阿理工学院计算机科学与工程系的所有老师在本书的准备过程中给予我们灵感和鼓励。感谢P. M. Krishnaraj先生和Siddesh G. M.博士的指导。同样感谢Nikhil先生和Maaz先生在本书编写上提供及时的帮助。感谢Scalding和Spark社区给予的支持。
感谢家人的支持与理解。

K. G. Srinivasa
Anil Kumar Muppalla

上架指导

计算机\分布式

封底文字

本书结合Hadoop、Scalding和Spark等开放源码工具和技术,介绍大规模分布式处理系统的开发与实现。书中不仅全面阐述构建高性能分布式计算系统用到的主流技术,还提供了宝贵的实践经验,书中的应用实例、案例研究和可运行的源码有助于读者理解高性能分布式计算实现中较难理解的问题。

本书特色
系统介绍主流分布式系统的一般架构、设计核心,并通过示例说明其在发展过程中遇到的技术难题和该领域近年来的发展趋势。
全面介绍Hadoop、Scalding、Spark生态系统,涵盖安装、编程、实现,循序渐进的说明有助于提升读者使用主流大数据技术解决实际问题的能力。
本书给出了大量案例,涉及常见应用领域和计算方法。读者在了解理论知识之后,通过这些实践,可掌握常用主流技术的应用方法,并将其迁移到实际工作场景中。

作者介绍
K. G. 斯里尼瓦沙(K. G. Srinivasa)于2007年获得班加罗尔大学计算机科学与工程博士学位。现就职于班加罗尔的M.S.拉迈阿理工学院计算机科学与工程系,任教授兼主任。他在国际会议和期刊上共发表过一百多篇研究论文,曾作为访问学者出访过许多大学。他是UGC、DRDO和DST资助的多个项目的首席研究员,其研究领域包括数据挖掘、机器学习、高性能计算和云计算。他是IEEE和ACM的高级成员。

阿尼尔·库马尔·穆帕拉(Anil Kumar Muppalla)既是一位研究者也是一个作家,具有计算机科学和工程学学位,他是很多行业的软件开发者和顾问。他是活跃的研究者,并在国际会议和期刊上发表诸多文章,他研究的方向包括使用Hadoop、Scalding和Spark进行应用开发。

作者简介

[印度]K.G.斯里尼瓦沙(K.G.Srinivasa) 阿尼尔·库马尔·穆帕拉(Anil Kumar Muppalla) 著:K.G.斯里尼瓦沙(K.G.Srinivasa)于2007年获得班加罗尔大学计算机科学与工程博士学位。现就职于班加罗尔的M.S.拉迈阿理工学院计算机科学与工程系,任教授兼主任。他在国际会议和期刊上共发表过一百多篇研究论文,曾作为访问学者出访过许多大学。他是UGC、DRDO和DST资助的多个项目的首席研究员,其研究领域包括数据挖掘、机器学习、高性能计算和云计算。他是IEEE和ACM的高级成员。

阿尼尔·库马尔·穆帕拉(Anil Kumar Muppalla)既是一位研究者也是一个作家。具有计算机科学和工程学学位。他是很多行业的软件开发者和顾问。他是活跃的研究者,并在国际会议和期刊上发表诸多文章。他研究的方向包括使用Hadoop、Scalding和Spark进行应用开发。

译者序

随着计算机技术的不断发展和推广,大量的数据随之产生。对这些庞大且不断增长的数据进行存储、处理和分析的需求应运而生。如今,很多高级的Hadoop框架(如Pig、Hive、Scoobi、Scrunch、Cascalog、Scalding和Spark)使得Hadoop易于操作。本书全面具体地介绍了使用开放源码的工具,如Hadoop、Scalding、Spark等来创建和构建分布式处理系统的方法,为读者使用自由及开放源码软件技术(如Hadoop、Scalding和Spark)提供指导和相关实例。
与当下有关的大数据技术书籍相比,本书更具实际应用价值,有着如下鲜明的特色:
第一,从讨论各种形式的分布式系统开始,解析了它们的一般架构,也谈及了其设计的核心,即分布式文件系统。之后,通过相关的示例说明其在发展过程中遇到的技术难题和该领域近年来的发展趋势。
第二,对Hadoop生态系统概况进行了讨论,并对系统的安装、编程和实现做了详细说明。书中描述了Spark的核心—弹性分布式数据库,并谈及其安装、API编程和范例。第4章重点阐述Hadoop流,也涉及了Scalding的应用,并讨论了Python在Hadoop和Spark中的应用。
第三,本书并不局限于解释基本的理论常识,它最大的优势在于介绍了程序范例。书中有四类案例解析,内容涉及很多应用领域和计算方法。书中不仅讲述了K均值聚类算法的实现,还讲述了使用朴素贝叶斯分类器进行数据分类的问题,进一步阐述了使用Scalding和Spark的分布式系统中数据挖掘和机器学习的方法,并涉及了回归分析。
在本书的整个翻译过程中,东北林业大学的甄云志老师给予了极大的帮助,并且积极地参与到了翻译工作当中,在此对其表示由衷的感谢。此外,感谢哈尔滨广厦学院的伞颖老师,她对本书的翻译提出了有益的建议,为本书的翻译工作顺利完成提供了积极的帮助。同时感谢机械工业出版社的朱劼编辑,由于她的信任和支持,本书的翻译工作才得以顺利进行。
由于译者水平有限,加之翻译时间紧张,译文中可能存在许多不足,敬请各位同行和广大读者批评指正,欢迎大家将发现的错误或提出的意见与建议发送到邮箱chong-yue1979@126.com,我们今后将不断完善本书的译本。本书相关的信息也会在华章网站及译者的微信公众号“大数据与数据科学家”(big_data_scientist)发布。

译者
2018年5月于哈尔滨

图书目录

译者序
前言
作者简介
第一部分 高性能分布式计算编程基础
第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

教学资源推荐
作者: 余永红
作者: 陈家骏 郑滔 编著
作者: Bruce Eckel
作者: Charles N.Fischer, Richard J.LeBlanc
参考读物推荐
作者: (美)Steven L.Halter