Spark:大数据集群计算的生产实践
更新日期:2024-07-13 00:59:56
出版时间:2017-05-01
浏览量:1105
价格:0.0¥

书籍下载

内容介绍

产品特色

编辑推荐

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

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

调优Spark应用

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

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

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

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

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

用Kerberos保证数据的安全

解决Spark streaming在生产环境中的问题

将Spark与Yarn、Mesos、Tachyon等集成


内容简介

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

作者简介

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


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


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


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


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


 

目录

第1 章 成功运行Spark job / 1
安装所需组件 / 2
原生安装Spark Standalone 集群 /3
分布式计算的发展史/ 3
步入云时代 /5
理解资源管理/6
使用各种类型的存储格式 /9
文本文件/11
Sequence 文件/13
Avro 文件/ 13
Parquet 文件 /13
监控和度量的意义/ 14
Spark UI/ 14
Spark Standalone UI/ 17
Metrics REST API / 17
Metrics System / 18
外部监控工具 / 18
总结 /19
第2 章 集群管理 /21
背景知识/ 23
Spark 组件 / 26
Driver / 27
workers 与executors /28
配置 / 30
Spark Standalone/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
Security Manager/ 94
设定配置 / 95
ACL / 97
配置 / 97
提交job / 98
Web UI/ 99
网络安全 / 107
加密/ 108
事件日志 /113
Kerberos/114
Apache Sentry./114
总结 /115
第5 章 容错或job 执行/ 117
Spark job 的生命周期 /118
Spark master /119
Spark driver/ 122
Spark worker /124
job 生命周期 /124
job 调度 /125
应用程序内部调度 / 125
用外部工具进行调度 / 133
容错 /135
内部容错与外部容错 / 136
SLA/ 137
RDD / 138
Batch vs Streaming / 145
测试策略 / 148
推荐配置/ 155
总结 / 158
第6 章 超越Spark /159
数据仓库 /159
SparkSQL CLI/161
Thrift JDBC/ODBC 服务器 / 162
Hive on Spark/ 162
机器学习 / 164
DataFrame / 165
MLlib 和ML / 167
Mahout on Spark / 174
Hivemall On Spark/ 175
外部的框架 / 176
Spark Package / 177
XGBoost/ 179
spark-jobserver / 179
未来的工作 /182
与参数服务器集成 / 184
深度学习 / 192
Spark 在企业中的应用 / 200
用Spark 及Kafka 收集用户活动日志 / 200
用Spark 做实时推荐/ 202
Twitter Bots 的实时分类 / 204
总结 / 205

精彩书摘

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

前言/序言

引言

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

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

本书面向的读者

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

涵盖的内容

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

内容结构

本书分为6 章,旨在传授给读者以下知识:

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

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

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

读者需要具备的知识

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

格式的约定

为帮助你了解本书的内容及主线,在本书用了一些格式约定。

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

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

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

源码

学习本书中的示例时,你可以选择手动输入所有代码,或使用本书所配套的源

码文件。所有的源码均可从www.wiley.com 下载。对于本书,下载页面在

www.wiley.com/go/sparkbigdataclustercomputing 的“Download Code”

标签页上。

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

书。

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

这些文件。

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

读者服务

轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。

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

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

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