编辑推荐

适读人群:开发人员、Spark应用的项目经理,以及那些在考虑将开发的Spark应用程序迁移到生产环境的系统管理员(或者DevOps)

Spark:大数据集群计算的生产实践》涵盖了开发及维护生产级Spark应用的各种方法、组件与有用实践。作者均为大数据社区的知名专家,带着你一步步从概念验证或Spark应用的demo版迁移到生产环境,用真实案例分析常见问题、限制、挑战和机会。

调优Spark应用

管理资源、组织存储、做好监控

了解在生产环境中使用Spark时有哪些潜在的问题

知晓Spark用在何处*能发挥作用

预估集群的规模,搞清楚硬件需求

通过内存管理、分区、shuffle等技术提升性能

用Kerberos保证数据的安全

解决Sparkstreaming在生产环境中的问题

将Spark与Yarn、Mesos、Tachyon等集成

内容简介

Spark:大数据集群计算的生产实践》针对spark从验证性环境迁移到实际生产环境时会遇到的各种问题给出了实际的帮助,涵盖了开发及维护生产级Spark应用的各种方法、组件与有用实践。《Spark:大数据集群计算的生产实践》分为6章,第1~2章帮助读者深入理解Spark的内部机制以及它们在生产流程中的含义;第3章和第5章阐述了针对配置参数的法则和权衡方案,用来调优Spark,改善性能,获得高可用性和容错性;第4章专门讨论Spark应用中的安全问题;第6章则全面介绍生产流,以及把一个应用迁移到一个生产工作流中时所需要的各种组件,同时对Spark生态系统进行了梳理。

作者简介

IlyaGanelin从机器人专家成功跨界成为一名数据工程师。他曾在密歇根大学花费数年时间研究自发现机器人(self-discoveringrobot),在波音公司从事手机及无线嵌入式DSP(数据信号处理)软件开发项目,随后加入CapitalOne的数据创新实验室,由此进入大数据领域。Ilya是ApacheSpark核心组件的活跃贡献者以及ApacheApex的提交者(committer),他希望研究构建下一代分布式计算平台。同时,Ilya还是一个狂热的面包烘焙师、厨师、赛车手和滑雪爱好者。

EmaOrhian是一位对伸缩性算法充满激情的大数据工程师。她活跃于大数据社区,组织会议,在会上发表演讲,积极投身于开源项目。她是jaws-spark-sql-rest(SparkSQL数据仓库上的一种资源管理器)的主要提交者。Ema一直致力于将大数据分析引入医疗领域,开发一个对大型数据集计算统计指标的端到端的管道。

KaiSasaki是一位日本软件工程师,对分布式计算和机器学习很感兴趣。但是一开始他并未从事Hadoop或Spark相关的工作,他最初的兴趣是中间件以及提供这些服务的基础技术,是互联网驱使他转向大数据技术领域。Kai一直是Spark的贡献者,开发了不少MLlib和ML库。如今,他正尝试研究将机器学习和大数据结合起来。他相信Spark在大数据时代的人工智能领域也将扮演重要角色。他的GitHub地址为:https://github.com/Lewuathe。

BrennonYork既是一名特技飞行员,也是一位计算机科学家。他的爱好是分布式计算、可扩展架构以及编程语言。自2014年以来,他就是ApacheSpark的核心贡献者,目标是通过发展GraphX和核心编译环境,培育一个更强大的Spark社区,激发更多合作。从为Spark提交贡献开始,York就一直在用Spark,而且从那个时候开始,就使用Spark将应用带入生产环境。

李刚,曾在IBM工作近20年,在数据中心IT建设、优化及管理领域有深入的研究和丰富的经验。在IBM期间负责IBM系统服务相关解决方案的开发与管理,其中包含数据中心基础设施与IT技术瓶体、数据中心高可用性管理暨灾难恢复,以及企业IT战略及IT架构优化等相关领域。

 

目录

第1章成功运行Sparkjob/1
安装所需组件/2
原生安装SparkStandalone集群/3
分布式计算的发展史/3
步入云时代/5
理解资源管理/6
使用各种类型的存储格式/9
文本文件/11
Sequence文件/13
Avro文件/13
Parquet文件/13
监控和度量的意义/14
SparkUI/14
SparkStandaloneUI/17
MetricsRESTAPI/17
MetricsSystem/18
外部监控工具/18
总结/19
第2章集群管理/21
背景知识/23
Spark组件/26
Driver/27
workers与executors/28
配置/30
SparkStandalone/33
架构/34
单节点设置场景/34
多节点设置/36
YARN/36
架构/38
动态资源分配/41
场景/43
Mesos/45
安装/46
架构/47
动态资源分配/49
基本安装场景/50
比较/52
总结/56
第3章性能调优/59
Spark执行模型/60
分区/62
控制并行度/62
分区器/64
shuffle数据/65
shuffle与数据分区/67
算子与shuffle/70
shuffle并不总是坏事/75
序列化/75
Kryo注册器/77
Spark缓存/77
SparkSQL缓存/81
内存管理/82
垃圾回收/83
共享变量/84
广播变量/85
累加器/87
数据局部性/90
总结/91
第4章安全/93
架构/94
SecurityManager/94
设定配置/95
ACL/97
配置/97
提交job/98
WebUI/99
网络安全/107
加密/108
事件日志/113
Kerberos/114
ApacheSentry./114
总结/115
第5章容错或job执行/117
Sparkjob的生命周期/118
Sparkmaster/119
Sparkdriver/122
Sparkworker/124
job生命周期/124
job调度/125
应用程序内部调度/125
用外部工具进行调度/133
容错/135
内部容错与外部容错/136
SLA/137
RDD/138
BatchvsStreaming/145
测试策略/148
推荐配置/155
总结/158
第6章超越Spark/159
数据仓库/159
SparkSQLCLI/161
ThriftJDBC/ODBC服务器/162
HiveonSpark/162
机器学习/164
DataFrame/165
MLlib和ML/167
MahoutonSpark/174
HivemallOnSpark/175
外部的框架/176
SparkPackage/177
XGBoost/179
spark-jobserver/179
未来的工作/182
与参数服务器集成/184
深度学习/192
Spark在企业中的应用/200
用Spark及Kafka收集用户活动日志/200
用Spark做实时推荐/202
TwitterBots的实时分类/204
总结/205

精彩书摘

  《Spark:大数据集群计算的生产实践》:
  1.有一个需要连接(join)两个大数据集的应用程序。它要求两个文件的所有数据以及对于给定的join条件数据集的所有行都驻留在内存中。假设每个数据集有512GB,Spark集群的每个数据节点只有256GB的内存。在16个数据节点上,哪一个节点都放不下这两个文件。在这个实例中,构建一个2TB内存的客户端比较理想,在客户端上本地启动driver应用并执行join操作。
  2.多个应用共享一个Spark集群。它们通过客户端节点访问集群,该节点仅有60GB的内存。这个集群管理着50个数据节点,每个节点有48个CPU和256GB的内存。所有应用的负载每次在不超过40GB的单个数据集上操作。在这种情况下,对于给定的driver应用,使用它时最多只需要存储40GB的数据,而且它能被放置在到任意可用的数据节点。此外,因为这是一个共享的集群,客户端机器(用户在这台机器上启动各自的应用)上的资源使用是有限制的,由多个用户共享。在这个例子中,在Spark集群的节点上启动driver应用是非常明智的选择。
  ……

前言/序言

引言

ApacheSpark一个易于掌握的、面向大规模计算的分布式计算框架。它又被称为“计算网格”或者“计算框架”——考虑到Spark使开发人员能够便捷地获得大量数据且进行分析,这些说法也是正确的。

ApacheSpark由MateiZaharia2009年在加州大学伯克利分校创建,一开始把它作为一个研究项目,后来在2010年捐给开源社区。2013年,Spark作为一个孵化项目加入Apache软件基金会,并于2014年成为顶级项目(TLP),一直发展到现在。

Spark:大数据集群计算的生产实践》面向的读者

如果你拿起这《Spark:大数据集群计算的生产实践》,我们认为你应该对Spark非常感兴趣。《Spark:大数据集群计算的生产实践》面向的读者群体是开发人员、Spark应用的项目经理,以及那些准备考虑将开发的Spark应用程序迁移到生产环境的系统管理员(或者DevOps)。

涵盖的内容

Spark:大数据集群计算的生产实践》涵盖了开发及维护生产级Spark应用的各种方法论、组件与最佳实践。也就是说,我们假设你已经有一个或者打算开发一个Spark应用,并且具备Spark的一些基础知识。

内容结构

Spark:大数据集群计算的生产实践》分为6章,旨在传授给读者以下知识:

?深入理解Spark的内部机制以及它们在生产流程中的含义。

?一组针对配置参数的法则和权衡方案,用来调优Spark以获得高可用性和容错性。

?全面了解生产流,以及把一个应用迁移到一个生产工作流中时所需要的各种组件。

读者需要具备的知识

作为读者,你应该具备基本的Spark开发及使用的知识。《Spark:大数据集群计算的生产实践》不会讲述入门级内容。市面上有许多关于Spark入门的书籍、论坛及各类资源,如果你对某部分的知识点有所缺失,可以阅读相关主题的资料以便更好地理解《Spark:大数据集群计算的生产实践》所表达的内容。《Spark:大数据集群计算的生产实践》示例的源代码可从Wiley网站上下载:(www.wiley.com/go/sparkbigdataclustercomputing。)

格式的约定

为帮助你了解《Spark:大数据集群计算的生产实践》的内容及主线,在《Spark:大数据集群计算的生产实践》用了一些格式约定。

注意这个样例表示注意事项、小提示、暗示、技巧,或者当前讨论的旁白。

?当介绍一些新的术语和重要的词时,会采用黑体(中文)或者加粗(英文)。

?在文本里显示代码时会使用代码体,譬如:persistence.properties。

源码

学习《Spark:大数据集群计算的生产实践》中的示例时,你可以选择手动输入所有代码,或使用《Spark:大数据集群计算的生产实践》所配套的源

码文件。所有的源码均可从www.wiley.com下载。对于《Spark:大数据集群计算的生产实践》,下载页面在

www.wiley.com/go/sparkbigdataclustercomputing的“DownloadCode”

标签页上。

可以在www.wiley.com上通过英文版的ISBN(978-1-119-25401-0)来搜索本

书。

你也可以在https://github.com/backstopmedia/sparkbook上找到

这些文件。

下载完代码,随便用哪种解压工具解压即可。

读者服务

轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达《Spark:大数据集群计算的生产实践》页面。

?提交勘误:您对书中内容的修改意见可在提交勘误处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。

?交流互动:在页面下方读者评论处留下您的疑问或观点,与我们和其他读者一同学习交流。

页面入口:http://www.broadview.com.cn/31364


其他推荐