首页>参考读物>计算机科学与技术>软件与程序设计

Spark Streaming实时流式大数据处理实战
作者 : 肖力涛 编著
出版日期 : 2019-04-16
ISBN : 978-7-111-62432-5
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 248
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书以翔实的原理讲解和充实的实战代码剖析,全面阐述了Spark Streaming流式处理平台,便于读者能够从入门开始了解搭建Spark平台,在此基础上学习流式处理框架,并动手实践,进行Spark Streaming流式大数据处理,包括与主流平台框架,如Kafka、Redis和ZooKeeper的对接应用等,并介绍了项目实战中的一些开发和调优策略。读者能够通过本书快速搭建Spark平台,并根据自己面临的使用场景快速搭建处理平台,同时能够了解背后的原理,对调优、开发都能起到一定的指导作用。本书适合大数据处理人员,尤其是基于流式大数据处理的人员阅读,本书也可以作为大数据处理人员的常备工具书随时翻阅。

图书特色

前腾讯优图实验室及WeTest研究员/现拼多多资深算法工程师力作
腾讯WeTest总监等5位技术大咖力荐
快速搭建Spark平台,从0到1动手实践Spark Streaming流式大数据处理
对Spark及Spark Streaming所涉及的大数据平台做了重点阐述
对涉及的知识点详细阐述了基本原理,并给出了大量的应用实践
每个章节之后基本上都安排了典型实例,手把手带领读者动手演练
详细介绍了3个项目实战案例,帮助读者提高实际的项目开发水平
给出了大量的真实工作经验总结,对相关从业者有较高的参考价值


业内5位大咖力荐:
方亮 腾讯WeTest总监
张景龙 上海场鲸科技有限公司CTO/19年老程序员
辛愿 腾讯深海实验室创始人
余祖坤博士 腾讯云人工智能产品负责人
刘绩刚 腾讯WeTest舆情算法负责人 

图书前言

为什么要写这本书?
  对于计算机从业人员和在校大学生而言,多少都会接触到数据处理,如简单的信息管理系统和利用关系型数据库设计的存储系统等,这类系统通常涉及的数据量比较小。而随着互联网的发展,企业内部的数据量也呈现爆炸式增长,随之而来的大数据处理就会是一件非常棘手的事情。所以近年来随着大数据概念的火爆,也涌现出了越来越多的大数据处理平台,如Hadoop、Hive、HBase、Flume、Kafka、Storm和Spark等,让人眼花缭乱。开发人员需要针对具体的场景和任务特点,选择合适的工具,将它们组合起来以完成任务。
  本书围绕大数据处理领域应用最广泛的Spark平台展开讲解,并对时下比较热门的大数据平台都有所介绍,以此为基础重点切入流式大数据处理这个比较垂直和常用的领域,对Spark Streaming、Kafka和ZooKeeper等大数据处理工具进行介绍,并给出多个实战案例,让读者能够从零到一学习如何构建一个大数据处理任务,掌握如何选择合适的处理工具,以及学习编程中一些常见的技巧。
本书特色
  1.内容丰富,讲解详细
  本书对大数据的相关知识体系做了详细阐述,并对Spark平台和Spark Streaming及其涉及的大数据平台做了重点阐述,以方便读者掌握常用的大数据架构平台。
  2.原理分析与应用实践并重
  本书对涉及的知识点详细地阐述了其背后的基本原理,并给出了大量的应用实践,便于读者更加透彻地理解所学知识,从而在调优和排查问题等具体实践时更加得心应手。
  3.详解大量的应用实例和实战案例
  本书中的每个章节都安排了实例,以方便读者动手演练。另外,第8~10章还给出了3个实战案例,以帮助读者提高实际的项目开发水平。这些案例改写自笔者和同事在工作中的真实应用案例,有较高的实用价值,读者在实践中可以进行借鉴。
  4.提供详细的源代码
  笔者对书中涉及的所有源代码都进行了整理并开源,供读者下载使用。读者可以对这些代码稍加修改,即可用于自己的项目中。
本书内容
  第1篇 Spark基础(第1~3章)
  本篇重点围绕Spark平台进行讲解,并具体就如何搭建一个自己的Spark集群进行了详细介绍,为后面的实战演练打下基础。
  第1章初识Spark,从Spark的历史发展出发,重点介绍了流式处理任务,对比了不同流式处理框架,并介绍了Spark Streaming的特点。
  第2章Spark运行与开发环境,主要介绍了如何搭建Spark集群,以及如何从零到一开始开发Spark应用程序,最后对从文件中进行词频统计的Spark应用做了介绍。
  第3章Spark编程模型,对Spark的核心编程模型做了详细讲解,这对于开发Spark应用及Spark Streaming应用优化来说都是必要的。另外,本章还对RDD的各种操作做了讲解。
  第2篇 Spark Streaming详解(第4~7章)
  本篇重点阐述了Spark Streaming的编程模型和特点,并将一些常用的大数据平台与Spark Streaming相结合进行讲解,最后对Spark Streaming应用中常见的调优实践进行了总结。
  第4章Spark Streaming编程模型及原理,着重介绍了Spark Streaming的运行原理,并且讲解了Spark Streaming应用开发的必要知识,最后以Spark Streaming接收网络输入流并进行词频统计进行实例演练。
  第5章Spark Streaming与Kafka,重点介绍了Spark Streaming与Kafka配合使用的相关知识点,并介绍了在部署时常见的ZooKeeper平台,最后利用Kafka作为Spark Streaming的输入源进行分析操作。
  第6章Spark Streaming与外部存储介质,主要介绍了流式处理任务中如何将处理结果输出到外部存储介质等相关知识。本章就一些常用的数据库与Spark Streaming结合进行讲解,最后结合日志分析实例,将日志文件分析后输出到MySQL中,可以让读者了解整个流程。
  第7章Spark Streaming调优实践,介绍了在实际生产中如何根据具体的数据量和任务情况对Spark Streaming进行优化修改,并且以一个具体的项目调优实例讲解调优的分析过程。
  第3篇 Spark Streaming案例实战(第8~10章)
  经过前两篇的学习,读者应该已经掌握了Spark和Spark Streaming的基本原理及开发技术。本篇在此基础上进行实战演练,带领读者完成3个大数据项目实战案例。
  第8章实时词频统计处理系统实战,针对文本数据常见的流式处理任务,通过一个实战案例,对词频统计从设计、实现到部署的相关知识进行了详细讲解。
  第9章用户行为统计实战,通过一个实战案例,介绍了在广告行为分析和推荐系统中如何对用户行为进行统计分析。
  第10章监控报警系统实战,对监控报警系统提出了一种架构上的设计思路,即以Kafka为数据总线串联,利用爬虫技术爬取数据,再用Spark Streaming进行过滤处理和后续的归纳汇总报警。
  附录A Scala语言基础,对本书在讲解时所采用的Spark源生语言Scala的基础知识做了简单讲解,用于帮助对Scala还不是很熟悉的读者。
本书读者对象
  阅读本书需要读者有一定的编程经验,建议读者最好对Java和C++等面向对象编程语言有一定的了解。具体而言,本书主要适合以下读者阅读:
* 有一定编程基础的Spark初学者;
* 了解Spark,想进一步使用Spark Streaming的从业人员;
* 流式大数据处理程序员;
* 对Spark和Spark Streaming感兴趣的程序员;
* 高校相关专业的学生;
* 大数据技术培训机构的学员。
本书阅读建议
* 基础相对薄弱的读者,可以先从附录开始了解Scala语言的特性,然后从第1章顺次阅读本书。
* Java基础良好的读者可以直接顺次阅读本书,阅读中涉及的Scala语言特性可在附录中查阅。
* 对Spark有所了解的读者可以直接从本书第2篇开始阅读,即从本书第4章开始阅读。
* 对Spark及Spark Streaming比较熟悉的读者,可以直接动手演练本书第3篇中的3个实战案例。 
* 学习时一定要亲自动手编写代码进行实践,再结合实际场景才能更好地掌握相关技术。
本书配套资源
本书涉及的所有源代码都已经开源并提供在了GitHub上,读者可以根据自己的需要进行下载,下载地址为https://github.com/xlturing/spark-streaming-action。另外,读者也可以登录机工新阅读网站(www.cmpreading.com),在该网站上搜索到本书,然后单击“资料下载”按钮,再单击页面上的“配书资源”链接进行下载。
读者反馈
  由于笔者水平所限,书中可能还存在一些疏漏,敬请读者指正,笔者会及时进行调整和修改。联系我们可通过电子邮箱litaoxiao@gmail.com或hzbook2017@163.com。笔者会将一些反馈信息整理在博客中(http://www.cnblogs.com/xlturing)。另外也欢迎读者关注笔者的微信公众号pang tao1027/互联网技术猿,笔者会定期分享一些技术文章。
致谢
  感谢洪福兴在第9章内容上给予笔者的宝贵意见!
  感谢在腾讯工作期间,辛愿、李铮、刘绩刚和方亮等人给予笔者的指导与帮助!
  感谢本书编辑在本书出版过程中给予笔者的大力支持与帮助!
  最后感谢我的家人在写书上给予我的理解与支持,在遇到挫折和困难时,我的家人都坚定地支持着我。爱你们!

肖力涛

上架指导

计算机科学/大数据分析与处理

封底文字

大咖力荐

Spark Streaming是面向海量数据实现高吞吐量、高容错的实时计算流式处理框架。本书理论结合实践,通过大数据平台项目,深入浅出地介绍了Spark Streaming在生产环境中的应用。书中详细介绍了大量的实战案例及开发心得,可为Spark Streaming开发者提供翔实的指导,是一本不可多得的诚意之作。
——腾讯WeTest总监 方亮

本书围绕Spark Streaming流式处理框架展开讲解,从理论到实战,带领读者实现从零基础到动手实践项目的飞跃。书中还贯穿了作者总结的大量开发经验与实践思考,这对开发人员有很大的借鉴意义。
——上海场鲸科技有限公司CTO/19年老程序员 张景龙

本书在实践层面介绍了Spark Streaming框架及重要的核心概念,这对新入门想要迅速了解如何搭建流计算应用的开发者提供了卓有成效的指导。作者基于实战经验,对必须掌握的内容进行了重点介绍,可以让读者少走弯路。
——腾讯深海实验室创始人 辛愿

本书作者结合平时的工作经验,将实际案例融汇到了Spark Streaming的理论中,可以帮助读者快速上手。书中从理论讲起,逐步过渡到项目实战,内容系统,结构完整,讲述逻辑清晰,实用性强,值得相关开发人员阅读。
     ——腾讯云人工智能产品负责人/ 博士 余祖坤

本书提供了Spark Streaming流式大数据处理从理论到实践落地的绝佳范本,涉及编程语言、Spark算子逻辑、资源利用、数据接口和使用场景等内容,是大数据处理及挖掘从业者不可多得的枕边书。
——腾讯WeTest舆情算法负责人 刘绩刚

图书目录

前言
第1篇 Spark基础
第1章 初识Spark 2
1.1 Spark由来 3
1.2 流式处理与Spark Streaming 5
1.2.1 流式处理框架 5
1.2.2 Spark Streaming初识 7
1.2.3 Structed Streaming简述 8
1.3 本章小结 8
第2章 Spark运行与开发环境 9
2.1 Spark的下载与安装 9
2.2 Spark运行模式 10
2.2.1 本地模式 13
2.2.2 本地集群模式 13
2.2.3 Standalone模式 14
2.2.4 Spark On Yarn模式 15
2.2.5 Spark On Mesos模式 15
2.3 搭建开发环境 15
2.3.1 修改配置 16
2.3.2 启动集群 18
2.3.3 IDE配置 20
2.3.4 UI监控界面 24
2.4 实例——Spark文件词频统计 28
2.5 本章小结 35
第3章 Spark编程模型 36
3.1 RDD概述 36
3.2 RDD存储结构 37
3.3 RDD操作 38
3.3.1 Transformation操作 38
3.3.2 Action操作 41
3.4 RDD间的依赖方式 42
3.4.1 窄依赖(Narrow Dependency) 42
3.4.2 Shuffle依赖(宽依赖Wide Dependency) 43
3.5 从RDD看集群调度 45
3.6 RDD持久化(Cachinng/Persistence) 46
3.7 共享变量 47
3.7.1 累加器(Accumulator) 48
3.7.2 广播变量(Broadcast Variables) 50
3.8 实例——Spark RDD操作 51
3.9 本章小结 56
第2篇 Spark Streaming详解
第4章 Spark Streaming编程模型及原理 58
4.1 DStream数据结构 58
4.2 DStream操作 59
4.2.1 DStream Transformation操作 59
4.2.2 DStream输出操作 63
4.3 Spark Streaming初始化及输入源 63
4.3.1 初始化流式上下文(StreamingContext) 63
4.3.2 输入源及接收器(Receivers) 64
4.4 持久化、Checkpointing和共享变量 65
4.4.1 DStream持久化(Caching/Persistence) 65
4.4.2 Checkpointing操作 66
4.5 实例——Spark Streaming流式词频统计 69
4.6 本章小结 73
第5章 Spark Streaming与Kafka 75
5.1 ZooKeeper简介 75
5.1.1 相关概念 75
5.1.2 ZooKeeper部署 77
5.2 Kafka简介 79
5.2.1 相关术语 80
5.2.2 Kafka运行机制 81
5.2.3 Kafka部署 83
5.2.4 简单样例 85
5.3 Spark Streaming接收Kafka数据 86
5.3.1 基于Receiver的方式 87
5.3.2 直接读取的方式 88
5.4 Spark Streaming向Kafka中写入数据 90
5.5 实例——Spark Streaming分析Kafka数据 92
5.6 本章小结 101
第6章 Spark Streaming与外部存储介质 102
6.1 将DStream输出到文件中 102
6.2 使用foreachRDD设计模式 105
6.3 将DStream输出到MySQL中 106
6.3.1 MySQL概述 107
6.3.2 MySQL通用连接类 107
6.3.3 MySQL输出操作 108
6.4 将DStream输出到HBase中 109
6.4.1 HBase概述 109
6.4.2 HBase通用连接类 110
6.4.3 HBase输出操作 111
6.4.4 “填坑”记录 112
6.5 将DStream数据输出到Redis中 112
6.5.1 Redis安装 112
6.5.2 Redis概述 113
6.5.3 Redis通用连接类 113
6.5.4 输出Redis操作 115
6.6 实例——日志分析 115
6.7 本章小结 122
第7章 Spark Streaming调优实践 124
7.1 数据序列化 124
7.2 广播大变量 126
7.3 数据处理和接收时的并行度 127
7.4 设置合理的批处理间隔 128
7.5 内存优化 128
7.5.1 内存管理 129
7.5.2 优化策略 130
7.5.3 垃圾回收(GC)优化 131
7.5.4 Spark Streaming内存优化 132
  7.6 实例——项目实战中的调优示例 133
7.6.1 合理的批处理时间(batchDuration) 133
7.6.2 合理的Kafka拉取量(maxRatePerPartition参数设置) 134
7.6.3 缓存反复使用的Dstream(RDD) 135
7.6.4 其他一些优化策略 135
7.6.5 结果 136
7.7 本章小结 138
第3篇 Spark Streaming案例实战
第8章 实时词频统计处理系统实战 140
8.1 背景与设计 140
8.2 代码实现 142
8.2.1 数据生成器 142
8.2.2 分词服务 146
8.2.3 流式词频统计 147
8.3 环境配置与运行 158
8.3.1 相关服务启动 158
8.3.2 查看结果 160
8.4 本章小结 163
第9章 用户行为统计实战 164
9.1 背景与设计 164
9.1.1 不同状态的保存方式 164
9.1.2 State设计 166
9.1.3 Redis存储 167
9.2 代码实现 167
9.2.1 数据生成器 167
9.2.2 用户行为统计 168
9.3 环境配置与运行 172
9.3.1 相关服务启动 172
9.3.2 查看结果 173
9.4 本章小结 175
第10章 监控报警系统实战 177
10.1 背景与设计 177
10.2 代码实现 179
10.2.1 简易爬虫子项目 179
10.2.2 流式处理子项目 184
10.2.3 归纳统计子项目 191
10.2.4 数据表情况 199
10.3 环境配置与查看 200
10.3.1 启动各个模块 200
10.3.2 查看结果 200
10.4 本章小结 203
附录A Scala语言基础 204
A.1 安装及环境配置 204
A.1.1 安装Scala 204
A.1.2 开发环境配置 205
A.2 Scala语法独特性 206
A.2.1 换行符 207
A.2.2 统一类型 207
A.2.3 Scala变量 208
A.2.4 条件和循环语句 209
A.2.5 函数和方法 210
A.2.6 特质、单例和样例类 213
A.3 Scala集合 215
A.3.1 集合框架 216
A.3.2 核心特质(Trait) 219
A.3.3 常用的不可变集合类 222
A.3.4 常用的可变集合类 225
A.3.5 字符串 227
A.3.6 数组 228
A.3.7 迭代器(Iterators) 230
A.4 其他常用特性 231
A.4.1 模式匹配 231
A.4.2 异常处理 232
A.4.3 文件I/O 233

教学资源推荐
作者: 汪同庆 关焕梅 汤洁
作者: Bruce Eckel, Chuck Allison
作者: 刘振安 刘燕君 孙忱
参考读物推荐
作者: Cay S. Horstmann,Gary Cornell
作者: David Conger
作者: (美)Paul Kimmel 著