具体描述
本书分为三篇。第壹篇:从整体上给出数据大图和数据平台大图,主要介绍数据的主要流程、各个流程的关键技术、数据的主要从业者及他们的职责等;数据平台大图分离线和实时分别给出数据平台架构、关键数据概念和技术等;第二篇:介绍离线数据开发的主要技术,包含Hadoop、Hive、维度建模等,另外此部分还将综合上述各种离线技术给出离线数据处理实战;第三篇:集中介绍实时数据处理的各项技术,包含Storm、SparkSteaming、Flink、Beam等。
作者简介
阿里巴巴大数据开发专家撰写,源于十余年工作实践,只讲实用有效的“招式”
庖丁解牛式讲解离线和实时开发平台架构、原理实现、开发示例,涵盖查询与优化、建模、数仓开发、流计算开发等核心技术
目录信息
第一篇 数据大图和数据平台大图
第1章 数据大图 2
1.1 数据流程 2
1.1.1 数据产生 3
1.1.2 数据采集和传输 5
1.1.3 数据存储处理 6
1.1.4 数据应用 7
1.2 数据技术 8
1.2.1 数据采集传输主要技术 9
1.2.2 数据处理主要技术 10
1.2.3 数据存储主要技术 12
1.2.4 数据应用主要技术 13
1.3 数据相关从业者和角色 14
1.3.1 数据平台开发、运维工程师 14
1.3.2 数据开发、运维工程师 15
1.3.3 数据分析工程师 15
1.3.4 算法工程师 16
1.3.5 业务人员 16
1.4 本章小结 17
第2章 数据平台大图 18
2.1 离线数据平台的架构、技术和设计 19
2.1.1 离线数据平台的整体架构 19
2.1.2 数据仓库技术 20
2.1.3 数据仓库建模技术 23
2.1.4 数据仓库逻辑架构设计 26
2.2 实时数据平台的架构、技术和设计 27
2.2.1 实时数据平台的整体架构 28
2.2.2 流计算技术 29
2.2.3 主要流计算开源框架 29
2.3 数据管理 32
2.3.1 数据探查 32
2.3.2 数据集成 33
2.3.3 数据质量 33
2.3.4 数据屏蔽 34
2.4 本章小结 35
第二篇 离线数据开发:大数据开发的主战场
第3章 Hadoop原理实践 38
3.1 开启大数据时代的Hadoop 38
3.2 HDFS和MapReduce优缺点分析 40
3.2.1 HDFS 41
3.2.2 MapReduce 42
3.3 HDFS和MapReduce基本架构 43
3.4 MapReduce内部原理实践 46
3.4.1 MapReduce逻辑开发 46
3.4.2 MapReduce任务提交详解 47
3.4.3 MapReduce内部执行原理详解 48
3.5 本章小结 52
第4章 Hive原理实践 53
4.1 离线大数据处理的主要技术:Hive 53
4.1.1 Hive出现背景 53
4.1.2 Hive基本架构 55
4.2 Hive SQL 56
4.2.1 Hive 关键概念 57
4.2.2 Hive 数据库 59
4.2.3 Hive 表DDL 60
4.2.4 Hive表DML 63
4.3 Hive SQL执行原理图解 65
4.3.1 select 语句执行图解 66
4.3.2 group by语句执行图解 67
4.3.3 join语句执行图解 69
4.4 Hive函数 73
4.5 其他SQL on Hadoop技术 74
4.6 本章小结 76
第5章 Hive优化实践 77
5.1 离线数据处理的主要挑战:数据倾斜 77
5.2 Hive优化 79
5.3 join无关的优化 79
5.3.1 group by引起的倾斜优化 79
5.3.2 count distinct优化 80
5.4 大表join小表优化 80
5.5 大表join大表优化 82
5.5.1 问题场景 82
5.5.2 方案1:转化为mapjoin 83
5.5.3 方案2:join时用case when语句 84
5.5.4 方案3:倍数B表,再取模join 84
5.5.5 方案4:动态一分为二 87
5.6 本章小结 89
第6章 维度建模技术实践 90
6.1 大数据建模的主要技术:维度建模 90
6.1.1 维度建模关键概念 91
6.1.2 维度建模一般过程 95
6.2 维度表设计 96
6.2.1 维度变化 96
6.2.2 维度层次 99
6.2.3 维度一致性 100
6.2.4 维度整合和拆分 101
6.2.5 维度其他 102
6.3 深入事实表 104
6.3.1 事务事实表 104
6.3.2 快照事实表 106
6.3.3 累计快照事实表 107
6.3.4 无事实的事实表 108
6.3.5 汇总的事实表 108
6.4 大数据的维度建模实践 109
6.4.1 事实表 109
6.4.2 维度表 110
6.5 本章小结 110
第7章 Hadoop数据仓库开发实战 111
7.1 业务需求 112
7.2 Hadoop数据仓库架构设计 113
7.3 Hadoop数据仓库规范设计 114
7.3.1 命名规范 115
7.3.2 开发规范 115
7.3.3 流程规范 116
7.4 FutureRetailer数据仓库构建实践 118
7.4.1 商品维度表 118
7.4.2 销售事实表 120
7.5 数据平台新架构——数据湖 121
7.6 本章小结 123
第三篇 实时数据开发:大数据开发的未来
第8章 Storm流计算开发 127
8.1 流计算技术的鼻祖:Storm技术 128
8.1.1 Storm基本架构 129
8.1.2 Storm关键概念 130
8.1.3 Storm并发 132
8.1.4 Storm核心类和接口 133
8.2 Storm实时开发示例 133
8.2.1 语句生成spout 134
8.2.2 语句分割bolt 135
8.2.3 单词计数bolt 136
8.2.4 上报bolt 136
8.2.5 单词计数topology 137
8.2.6 单词计数并发配置 139
8.3 Storm高级原语Trident 142
8.3.1 Trident引入背景 142
8.3.2 Trident基本思路 142
8.3.3 Trident流操作 143
8.3.4 Trident的实时开发实例 145
8.4 Storm关键技术 147
8.4.1 spout的可靠性 147
8.4.2 bolt的可靠性 148
8.4.3 Storm反压机制 149
8.5 本章小结 150
第9章 Spark Streaming流计算开发 151
9.1 Spark生态和核心概念 151
9.1.1 Spark概览 151
9.1.2 Spark核心概念 153
9.1.3 Spark生态圈 157
9.2 Spark生态的流计算技术:Spark Streaming 158
9.2.1 Spark Streaming基本原理 159
9.2.2 Spark Streaming核心API 159
9.3 Spark Streaming的实时开发示例 161
9.4 Spark Streaming调优实践 162
9.5 Spark Streaming关键技术 164
9.5.1 Spark Streaming可靠性语义 164
9.5.2 Spark Streaming反压机制 165
9.6 本章小结 166
第10章 Flink流计算开发 167
10.1 流计算技术新贵:Flink 167
10.1.1 Flink技术栈 168
10.1.2 Flink关键概念和基本原理 169
10.2 Flink API 172
10.2.1 API概览 172
10.2.2 DataStream API 173
10.3 Flink实时开发示例 180
10.4 Flink关键技术详解 182
10.4.1 容错机制 182
10.4.2 水位线 184
10.4.3 窗口机制 185
10.4.4 撤回 187
10.4.5 反压机制 187
10.5 本章小结 188
第11章 Beam技术 189
11.1 意图一统流计算的Beam 190
11.1.1 Beam的产生背景 190
11.1.2 Beam技术 191
11.2 Beam技术核心:Beam Model 193
11.3 Beam SDK 196
11.3.1 关键概念 196
11.3.2 Beam SDK 197
11.4 Beam窗口详解 202
11.4.1 窗口基础 202
11.4.2 水位线与延迟数据 203
11.4.3 触发器 204
11.5 本章小结 205
第12章 Stream SQL实时开发实战 206
12.1 流计算SQL原理和架构 207
12.2 流计算SQL:未来主要的实时开发技术 208
12.3 Stream SQL 209
12.3.1 Stream SQL源表 209
12.3.2 Stream SQL结果表 209
12.3.3 Stream SQL维度表 210
12.3.4 Stream SQL临时表 211
12.3.5 Stream SQL DML 211
12.4 Stream SQL的实时开发实战 212
12.4.1 select操作 212
12.4.2 join操作 214
12.4.3 聚合操作 218
12.5 撤回机制 221
12.6 本章小结 222
参考文献 224
· · · · · · (收起)
读后感
用户评价
这本书,我真的是爱不释手,简直是大数据开发领域的一盏明灯啊!它不像市面上那些泛泛而谈的理论书籍,而是真正深入到了实战的肌理之中。我印象最深的是它对数据管道构建的讲解,那种细致入微的程度,让我这个在实际工作中摸爬滚打了好几年的工程师都受益匪浅。作者似乎非常理解我们这些一线开发者的痛点,讲解的每一个技术点,都是建立在真实的项目场景之上的。比如,它对流式处理框架的选择和调优,不是简单地罗列优缺点,而是结合具体的业务场景,一步步推导出为什么选用这个框架,以及如何根据数据特性进行二次开发和优化。读完之后,感觉自己对整个大数据系统的架构设计有了一个全新的认识,不再是零散的知识点堆砌,而是一个完整的、可落地的技术体系。特别是关于数据治理和质量监控那几章,简直是宝典级别的存在,很多我们团队之前头疼的问题,在这本书里都找到了清晰的解决思路。
我之前尝试过几本号称是“实战”的大数据书籍,结果发现很多都停留在框架的API调用层面,缺乏对底层原理的深入挖掘。但这一本完全不同,它真正做到了“知其然,更知其所以然”。我特别赞赏作者在讲解分布式存储和计算引擎时,那种对权衡的清晰阐述。在现实世界中,没有银弹,任何技术选型都意味着某种妥协。这本书很诚实地把这些妥协和背后的设计哲学摆在了我们面前,让读者能够自己做出更明智的决策。比如,它对比了几种主流的批处理和流处理调度器的差异,并结合了资源隔离和故障恢复的场景进行了深入探讨。这对我优化我们现有集群的作业调度策略提供了直接的指导。这本书的阅读体验是“主动学习”的过程,它不断地激发你去思考“如果我的数据量再大十倍怎么办?”或者“如果网络延迟突然增加怎么办?”,引导我们建立起面向未来的系统设计思维。
对我这个偏向于应用层开发的工程师来说,这本书在弥补我底层知识短板方面起到了关键作用。特别是那些关于操作系统内核如何影响大数据程序运行效率的章节,描述得非常生动形象,让我意识到了很多性能瓶颈原来藏在“看不见”的地方。作者对于如何构建高可用、可扩展的数据平台架构的阐述,逻辑严密,步步为营。我发现,书中提供的很多最佳实践,都是基于多年生产环境的“血泪教训”总结出来的,避免了我们在踩坑路上浪费太多时间。例如,在处理大规模数据倾斜问题时,书中提供的几种去偏策略,配合清晰的性能对比图,让我能够立刻在我的项目中使用起来,并看到了立竿见影的效果。这本书的价值在于,它不仅教会了我们“如何做”,更重要的是教会了我们“为什么这样做”,这种方法论的传授,远比单纯的技术点介绍更有价值,它真正培养了读者的系统思维和解决问题的能力。
这本书的广度和深度都令人印象深刻,它不仅仅关注于某一个特定的技术栈,而是提供了一个全面的、跨越不同技术层面的解决方案蓝图。我尤其欣赏其中关于数据安全和合规性部分的讲解,这在很多技术书籍中常常被忽略,但却是企业级应用中至关重要的一环。作者并没有简单地提及加密和授权,而是结合实际的审计要求,给出了一套完整的、可操作的安全策略实施指南。此外,书中对新兴技术趋势的把握也非常敏锐,比如对Serverless在数据处理场景的应用探讨,展现了作者与时俱进的研究视野。阅读这本书的过程,就像是跟一位身经百战的架构师进行了一场高强度的闭门会议,每一页都充满了干货,没有一句废话。它极大地拓宽了我对整个数据生态系统的理解边界,让我不再局限于自己手头的代码实现,而是能从全局视角去规划和部署复杂的数据解决方案。
老实说,刚拿到这本书的时候,我还有点担心它会不会过于晦涩难懂,毕竟涉及的领域太广了。但出乎意料的是,作者的叙事风格非常接地气,像是请了一位经验丰富的同事在旁边手把手教你。他善于用类比和图示来解释那些复杂的分布式系统概念,比如分布式事务的处理,我以前总觉得是玄学,但通过书中的案例分析,我终于明白了背后的机制和权衡。这本书的逻辑结构安排得极佳,从基础概念的夯实到高级特性的剖析,层层递进,让人读起来非常顺畅。而且,这本书的案例代码质量非常高,注释详尽,可以直接在生产环境中借鉴或作为学习的起点。我个人最欣赏的是它对性能优化的剖析,它没有停留在表面,而是深入到了操作系统层面和网络通信的细节,让我明白了“慢”的根源在哪里,从而能更有效地定位和解决性能瓶颈。这本书对于希望从“会用”迈向“精通”的开发者来说,绝对是不可多得的佳作。
2018年才出的一本书,翻了一下目录就知道是面向当前工业级应用的实战和经验总结,值得阅读。
2018年才出的一本书,翻了一下目录就知道是面向当前工业级应用的实战和经验总结,值得阅读。
本书可能是第一本从实际项目实践出发,专注、完整、系统化地讲述数据开发技术的书籍,此处的数据开发技术包含:离线数据处理技术、实时数据处理技术、数据开发优化、大数据建模、数据分层体系建设等。
终于看完了。实时计算后面要关注下FLINK,毕竟有阿里在后面推。
终于看完了。实时计算后面要关注下FLINK,毕竟有阿里在后面推。