第一篇 数据大图和数据平台大图 2
第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
第二篇 离线数据开发:大数据开发的主战场 38
第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
第三篇 实时数据开发:大数据开发的未来 127
第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