目 录?Contents
前言
第一篇 数据大图和数据平台大图
第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