书籍作者:肖力涛 | ISBN:9787111624325 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:3349 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
肖力涛 浙江大学计算机硕士,前腾讯优图实验室及WeTest研究员,现拼多多资深算法工程师。长期进行大数据处理、自然语言处理、深度学习、推荐算法的研究与实践,有丰富的项目经验。善于归纳和总结,所撰写的博客文章得到了大量读者的好评。擅长数据分析与处理、算法实践落地、用户行为数据挖掘、大规模数据处理等技术。运营《互联网技术猿》公众号。
前腾讯优图实验室及WeTest研究员/现拼多多资深算法工程师力作
腾讯WeTest总监等5位技术大咖力荐
快速搭建Spark平台,从0到1动手实践Spark Streaming流式大数据处理
对Spark及Spark Streaming所涉及的大数据平台做了重点阐述
对涉及的知识点详细阐述了基本原理,并给出了大量的应用实践
每个章节之后基本上都安排了典型实例,手把手带领读者动手演练
详细介绍了3个项目实战案例,帮助读者提高实际的项目开发水平
给出了大量的真实工作经验总结,对相关从业者有较高的参考价值
业内5位大咖力荐:
腾讯WeTest总监 方亮
上海场鲸科技有限公司CTO/19年老程序员 张景龙
腾讯深海实验室创始人 辛愿
腾讯云人工智能产品负责人/博士 余祖坤
腾讯WeTest舆情算法负责人 刘绩刚
本书精华内容:
Spark基础知识
Spark Streaming基础知识
动手搭建Spark集群
Spark编程模型
Spark Streaming编程模型
Spark Streaming结合ZooKeeper
Spark Streaming结合Kafka
Spark Streaming结合MySQL
Spark Streaming结合HBase
Spark Streaming结合Redis
Spark Streaming调优实践
Scala语言基础精编
Scala语言基础精编
3个经典实战案例:
实时词频统计处理系统实战
用户行为统计实战
监测报警系统实战
赠送:完整的实例源代码(需要下载)
为什么要写这本书?
对于计算机从业人员和在校大学生而言,多少都会接触到数据处理,如简单的信息管理系统和利用关系型数据库设计的存储系统等,这类系统通常涉及的数据量比较小。而随着互联网的发展,企业内部的数据量也呈现爆炸式增长,随之而来的大数据处理就会是一件非常棘手的事情。所以近年来随着大数据概念的火爆,也涌现出了越来越多的大数据处理平台,如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初学者;
前言
第1篇 Spark基础
第1章 初识Spark2
1.1 Spark由来3
1.2 流式处理与Spark Streaming5
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与Kafka75
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 安装Scala204
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 迭代器(Ite