猜你喜欢
Spark海量数据处理 技术详解与平台实战

Spark海量数据处理 技术详解与平台实战

书籍作者:范东来 ISBN:9787115507006
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:3660
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介
本书基于Spark发行版2.4.4写作而成,包含大量的实例与一个完整项目,层次分明,循序渐进。全书分为3部分,涵盖了技术理论与实战,读者可以从实战中巩固学习到的知识。第一部分主要围绕BDAS(伯克利数据分析栈),不仅介绍了如何开发Spark应用的基础内容,还介绍了Structured Streaming、Spark机器学习、Spark图挖掘、Spark深度学习等高级主题,此外还介绍了Alluxio系统。第二部分实现了一个企业背景调查系统,比较新颖的是,该系统借鉴了数据湖与Lambda架构的思想,涵盖了批处理、流处理应用开发,并加入了一些开源组件来满足需求,既是对本书第一部分很好的巩固,又完整呈现了一个实时大数据应用的开发过程。第三部分是对全书的总结和展望。
本书适合准备学习Spark的开发人员和数据分析师,以及准备将Spark应用到实际项目中的开发人员和管理人员阅读,也适合计算机相关专业的高年级本科生和研究生学习和参考,对于具有一定的Spark使用经验并想进一步提升的数据科学从业者也是很好的参考资料。
作者简介
范东来,北京航空航天大学硕士,泛山科技联合创始人,Spark Contributor、SupersetContributor,架构师,技术图书作者和译者,著有《Hadoop海量数据处理》,译有《解读NoSQL》《NoSQL**指南》《神经网络算法和实现》《Hadoop深度学习》《精通数据科学算法》等,另译有畅销小说《巧克力时代:因为这是我的血脉》。
编辑推荐
在数字经济时代,数据是*重要的资源要素;同时,新的数据又在源源不断地产生,企业面临的一个基本问题就是如何管理和利用这些数据,这对传统的数据处理方法与分析框架提出了新的诉求和挑战,也是全球业界与学界*为关心的问题。为了满足大数据时代对信息的快速处理的需求,一个分布式的开源计算框架Apache Spark应运而生。经过十年的发展,Spark已经成为目前大数据处理的标杆,在整个业界得到了广泛的使用。对大数据工程师来说,用Spark构建数据管道无疑是很好的选择,而对数据科学家来说,Spark也是高效的数据探索工具。
本书基于Spark发行版2.4.4写作而成,包含大量的实例与一个完整项目,技术理论与实战相结合,层次分明,循序渐进。本书不仅介绍了如何开发Spark应用的基础内容,包括Spark架构、Spark编程、SparkSQL、Spark调优等,还探讨了Structured Streaming、Spark机器学习、Spark图挖掘、Spark深度学习、Alluxio系统等高级主题,同时完整实现了一个企业背景调查系统,借鉴了数据湖与Lambda架构的思想,涵盖了批处理、流处理应用开发,并加入了一些开源组件来满足业务需求。学习该系统可以使读者从实战中巩固所学,并将技术理论与应用实战融会贯通。
本书适合准备学习Spark的开发人员和数据分析师,以及准备将Spark应用到实际项目中的开发人员和管理人员阅读,也适合计算机相关专业的高年级本科生和研究生学习和参考,对于具有一定的Spark使用经验并想进一步提升的数据科学从业者也是很好的参考资料。
目录
第 一部分 基础篇

第 1章 序篇 2
1.1 Spark与BDAS 3
1.2 Databricks 4
1.3 如何通过GitHub向Spark贡献代码 5
1.4 如何选择Spark编程语言 8
1.5 函数式编程思想 9
1.6 小结 12
第 2章 Spark编程 13
2.1 Spark架构 13
2.2 Spark 2.x与Spark 3.x 15
2.2.1 Tungsten项目 16
2.2.2 统一Dataset和DataFrame 接口 20
2.2.3 新一代流处理技术:Structured Streaming与持续型应用 21
2.2.4 Hydrogen项目和Spark 3.x 22
2.3 部署Spark 26
2.3.1 Spark on YARN 27
2.3.2 Spark on Mesos 28
2.3.3 Spark Standalone 29
2.3.4 Spark on Kubernetes 30
2.3.5 安装Spark 31
2.3.6 提交作业 31
2.3.7 Spark Shell 33
2.3.8 初始化SparkSession 34
2.4 RDD与算子 34
2.4.1 RDD 34
2.4.2 创建RDD 36
2.4.3 转换算子 38
2.4.4 行动算子 43
2.4.5 RDD血统与Spark容错 45
2.5 Spark Shuffle 47
2.5.1 Hash Shuffle 47
2.5.2 Sort-based Shuffle 49
2.6 共享变量 50
2.6.1 广播变量 50
2.6.2 累加器 53
2.7 Spark的多语言支持 55
2.7.1 PySpark 55
2.7.2 SparkR 56
2.8 Spark性能调优 56
2.8.1 硬件配置与资源管理平台 57
2.8.2 参数调优与应用调优 57
2.9 使用Jupyter Notebook基于Spark探索数据:蒙特卡罗方法预测股票价格 64
2.9.1 Jupyter Notebook 64
2.9.2 用蒙特卡罗方法预测股票价格 67
2.10 小结 70
第3章 Spark统一编程接口:DataFrame、Dataset和Spark SQL 71
3.1 Catalyst优化器 72
3.1.1 SQL抽象语法树 72
3.1.2 从ULEP到RLEP的过程 73
3.1.3 调优RLEP 73
3.1.4 全阶段代码生成 74
3.2 DataFrame API 75
3.2.1 创建DataFrame 75
3.2.2 查询 77
3.2.3 窗口函数 80
3.2.4 用户自定义函数 83
3.2.5 写入 85
3.3 Dataset API 86
3.3.1 RDD、DataFrame和Dataset 87
3.3.2 安全类型的UDAF 88
3.4 Spark SQL 89
3.4.1 创建临时视图 90
3.4.2 使用Hive元数据 90
3.4.3 查询语句 91
3.4.4 函数 94
3.4.5 用户自定义函数 97
3.5 Google Dremel与列式存储 97
3.5.1 Apache Parquet 99
3.5.2 Apache ORC 100
3.5.3 Apache CarbonData 100
3.5.4 对比测试 101
3.6 使用Spark SQL进行数据探索 102
3.7 小结 107
第4章 Spark流处理:Spark Streaming
与Structured Streaming 108
4.1 一个Spark Streaming流处理的例子 109
4.2 消息送达保证 110
4.3 Google MillWheel系统和Google Dataflow模型 114
4.3.1 Google MillWheel设计思想 114
4.3.2 Google MillWheel如何实现“恰好一次”消息送达语义 114
4.3.3 Google MillWheel对乱序数据与晚到数据的处理 115
4.3.4 Google Dataflow:流处理和批处理的统一与取舍 117
4.4 Spark Streaming 122
4.4.1 关键抽象与架构 123
4.4.2 无状态的转换算子 125
4.4.3 有状态的转换算子 129
4.4.4 输入与输出 134
4.4.5 Spark Streaming与Spark SQL 138
4.4.6 容错与结果正确性 139
4.4.7 性能调优 141
4.5 Structured Streaming 144
4.5.1 关键抽象与架构 144
4.5.2 操作 147
4.5.3 输入和输出 154
4.5.4 股票交易价格实时分析 157
4.6 流处理技术对比 162
4.7 小结 163
第5章 Spark图计算:GraphX 164
5.1 图模式 164
5.1.1 图结构 164
5.1.2 图存储 165
5.1.3 图数据库 168
5.1.4 图挖掘技术 169
5.1.5 属性图与RDF 170
5.2 生成图 171
5.2.1 从已有数据中生成 172
5.2.2 通过GraphGenerators生成 174
5.3 图算子 175
5.3.1 属性算子 175
5.3.2 结构算子 175
5.3.3 连接算子 175
5.3.4 aggregateMessages 176
5.4 Pregel API 177
5.4.1 图分区 177
5.4.2 像顶点一样思考 180
5.4.3 用户自定义函数 182
5.4.4 PageRank的GraphX实现 183
5.4.5 标签传播算法 186
5.5 SQL on Graph 187
5.5.1 生成图 188
5.5.2 SQL查询 189
5.5.3 模式发现 190
5.5.4 一些GraphX已经有的算法 191
5.5.5 一些GraphX没有的算法 191
5.5.6 AggregateMessages 192
5.6 n度邻居顶点算法 193
5.7 小结 196
第6章 Spark机器学习:MLlib 197
6.1 机器学习 197
6.1.1 典型的机器学习工作流 198
6.1.2 机器学习任务的学习类型 199
6.2 Spark MLlib与Spark ML 201
6.3 数据预处理 205
6.3.1 数据标准化 205
6.3.2 缺失值处理 207
6.3.3 特征抽取 208
6.3.4 特征选择 212
6.4 分类算法应用 214
6.4.1 决策树 214
6.4.2 随机森林 217
6.4.3 人体状态监测器 218
6.4.4 集成学习 223
6.4.5 梯度提升决策树 224
6.5 聚类算法应用 225
6.5.1 物以类聚 225
6.5.2 k均值聚类算法 226
6.5.3 实现 227
6.6 推荐系统应用 230
6.6.1 基于用户的协同过滤 231
6.6.2 基于商品的协同过滤 233
6.6.3 两种协同过滤的对比 235
6.6.4 基于模型的协同过滤 236
6.6.5 Movielens电影推荐系统 237
6.7 训练之后 238
6.7.1 模型评估 239
6.7.2 交叉验证与超参调优 241
6.8 流式机器学习 242
6.8.1 流回归 242
6.8.2 流聚类 244
6.8.3 用流处理应用来监控模型 245
6.9 小结 249
第7章 Spark深度学习:Deeplearning4j 250
7.1 常见的深度学习框架 251
7.2 Deeplearning4j 252
7.3 卷积神经网络 252
7.3.1 理解卷积神经网络 252
7.3.2 用Deeplearning4j训练卷积神经网络 254
7.4 循环神经网络 257
7.4.1 理解循环神经网络 258
7.4.2 用Deeplearning4j训练循环神经网络 262
7.5 自动编码器 264
7.5.1 理解自动编码器 264
7.5.2 用Deeplearning4j训练自动编码器 267
7.6 使用GPU 269
7.7 小结 270
第8章 分布式存储:Alluxio 271
8.1 Alluxio架构 271
8.1.1 Alluxio的组成部分 273
8.1.2 虚拟的Alluxio 273
8.1.3 统一而透明的命名空间 274
8.2 快速上手Alluxio 275
8.2.1 安装Alluxio 275
8.2.2 Alluxio配置 276
8.2.3 Alluxio血统机制 277
8.3 与上层框架集成 277
8.3.1 与Spark集成 278
8.3.2 与Presto集成 279
8.3.3 与HBase集成 280
8.4 与底层存储系统集成 281
8.4.1 与Ceph集成 281
8.4.2 挂载其他文件系统 281
8.5 如何访问Alluxio 282
8.6 Alluxio应用案例 283
8.6.1 携程网 283
8.6.2 滴滴出行 284
8.6.3 陌陌 286
8.7 小结 288

第二部分 应用篇

第9章 企业数据湖与Lambda架构 290
9.1 数据湖 290
9.1.1 数据的湖泊 290
9.1.2 数据湖要解决的问题 291
9.1.3 数据湖与数据仓库对比 292
9.1.4 数据湖如何工作 293
9.2 Lambda架构 293
9.2.1 批处理层 294
9.2.2 服务层 295
9.2.3 速度层 295
9.2.4 Lambda架构 296
9.2.5 Lambda架构的原则 297
9.3 基于Lambda架构的数据湖分层设计 297
9.3.1 数据获取层 298
9.3.2 消息层 299
9.3.3 数据摄取层 300
9.3.4 数据存储层 300
9.3.5 Lambda层 301
9.4 Lambda架构的应用 301
9.4.1 搜索引擎 301
9.4.2 Druid 302
9.5 构建Lambda架构的技术 303
9.6 小结 304
第 10章 大数据企业动态背景调查平台 305
10.1 企业背景调查 305
10.2 基于大数据的企业动态背景调查 308
10.2.1 企业行为信息 308
10.2.2 企业关联方分析 311
10.3 数据采集与数据字典 313
10.4 企业背景调查平台需求 317
10.4.1 企业关联图谱展示 317
10.4.2 企业风险指标计算 318
10.5 企业关联图谱的模式 318
10.6 传统数据仓库架构 320
10.7 小结 321
第 11章 平台设计 322
11.1 平台架构 322
11.1.1 数据源 323
11.1.2 数据管道 323
11.1.3 速度层 325
11.1.4 批处理层 325
11.1.5 服务层 325
11.1.6 查询层 325
11.1.7 可视化组件 325
11.2 物理拓扑 326
11.3 服务层图数据库设计 326
11.4 项目规划 327
11.5 小结 327
第 12章 数据管道层 328
12.1 安装并配置canal 328
12.2 实现Kafka生产者 330
12.3 安装并配置Flume 335
12.4 小结 336
第 13章 速度层 337
13.1 速度层输入 337
13.1.1 类型1 338
13.1.2 类型2 338
13.1.3 类型3 339
13.1.4 类型4 340
13.2 Cypher基础 341
13.2.1 写入 342
13.2.2 读取 343
13.2.3 删除 344
13.3 生成Cypher语句 345
13.3.1 类型1 345
13.3.2 类型2 346
13.3.3 类型3 346
13.3.4 类型4 346
13.3.5 实现 347
13.4 整合Structured Streaming 352
13.4.1 Neo4jWriter 353
13.4.2 启动流 354
13.5 小结 355
第 14章 批处理层 356
14.1 自融风险监测 356
14.2 生成主数据集 357
14.2.1 全量与增量 358
14.2.2 合并 359
14.2.3 数据治理 361
14.3 用GraphX计算企业自融风险值 363
14.4 导入HBase 364
14.5 调度中心 366
14.5.1 Airflow 366
14.5.2 配置 368
14.6 小结 370
第 15章 服务层与查询层 371
15.1 不仅仅是合并 371
15.1.1 NetworkX 372
15.1.2 计算流程 372
15.2 接口开发 372
15.3 小结 376

第三部分 总结篇

第 16章 总结和展望 378
16.1 统一的大数据处理接口 378
16.1.1 Unified Spark 378
16.1.2 Apache Beam 379
16.2 Kappa架构 380
16.3 大数据处理技术 382
16.3.1 Apache Flink 382
16.3.2 Apache Apex 383
16.3.3 Ray 384
16.4 Spark未来发展方向 386