第 一部分 导言―熟悉实时分析
第 1章 实时分析简介 2
1.1 大数据的定义 2
1.2 大数据的基础设施 3
1.3 实时分析―神话与现实 6
1.4 近实时解决方案―可用的架构 9
1.4.1 NRT的Storm解决方案 9
1.4.2 NRT的Spark解决方案 10
1.5 Lambda架构―分析可能性 11
1.6 物联网―想法与可能性 13
1.7 云―考虑NRT和物联网 17
1.8 小结 18
第 2章 实时应用的基本组件 19
2.1 NRT系统及其构建模块 19
2.1.1 数据采集 21
2.1.2 流处理 22
2.1.3 分析层―服务终端用户 23
2.2 NRT的高级系统视图 25
2.3 NRT的技术视图 26
2.3.1 事件生产者 27
2.3.2 数据收集 27
2.3.3 代理 29
2.3.4 转换和处理 31
2.3.5 存储 32
2.4 小结 32
第二部分 搭建基础设施
第3章 了解和跟踪数据流 34
3.1 了解数据流 34
3.2 为数据提取安装基础设施 35
3.2.1 Apache Kafka 35
3.2.2 Apache NiFi 36
3.2.3 Logstash 41
3.2.4 Fluentd 43
3.2.5 Flume 46
3.3 将数据从源填到处理器―期望和注意事项 48
3.4 比较与选择适合用例的最佳实践 49
3.5 小试牛刀 49
3.6 小结 51
第4章 安装和配置Storm 52
4.1 Storm概述 52
4.2 Storm架构和组件 53
4.2.1 特征 54
4.2.2 组件 54
4.2.3 流分组 56
4.3 安装和配置Storm 57
4.3.1 安装Zookeeper 57
4.3.2 配置Apache Storm 59
4.4 在Storm上实时处理任务 61
4.5 小结 67
第5章 配置Apache Spark和Flink 68
5.1 安装并快速运行Spark 68
5.1.1 源码构建 69
5.1.2 下载Spark安装包 69
5.1.3 运行示例 70
5.2 安装并快速运行Flink 73
5.2.1 使用源码构建Flink 73
5.2.2 下载Flink 74
5.2.3 运行示例 75
5.3 安装并快速运行Apache Beam 79
5.3.1 Beam模型 79
5.3.2 运行示例 80
5.3.3 MinimalWordCount示例 82
5.4 Apache Beam中的平衡 85
5.5 小结 88
第三部分 Storm实时计算
第6章 集成Storm与数据源 90
6.1 RabbitMQ有效的消息传递 90
6.2 RabbitMQ交换器 91
6.2.1 直接交换器 91
6.2.2 RabbitMQ安装配置 93
6.2.3 RabbitMQ的发布和订阅 95
6.3 RabbitMQ与Storm集成 99
6.4 PubNub数据流发布者 107
6.5 将Storm和RMQ_PubNub传感器数据拓扑串在一起 111
6.6 小结 114
第7章 从Storm到Sink 115
7.1 安装并配置Cassandra 115
7.1.1 安装Cassandra 116
7.1.2 配置Cassandra 117
7.2 Storm和Cassandra拓扑 118
7.3 Storm和IMDB集成处理维度数据 120
7.4 集成表示层与Storm 122
7.5 小试牛刀 134
7.6 小结 143
第8章 Storm Trident 144
8.1 状态保持和Trident 144
8.1.1 事务性spout 145
8.1.2 不透明事务性spout 145
8.2 基本Storm Trident拓扑 146
8.3 Trident内部实现 148
8.4 Trident操作 149
8.4.1 函数 149
8.4.2 Map函数and FlatMap函数 150
8.4.3 peek函数 151
8.4.4 过滤器 151
8.4.5 窗口操作 152
8.4.6 聚合操作 155
8.4.7 分组操作 158
8.4.8 合并和组合操作 159
8.5 DRPC 160
8.6 小试牛刀 161
8.7 小结 164
第四部分 使用Spark实现实时计算
第9章 运用Spark引擎 166
9.1 Spark概述 166
9.2 Spark的独特优势 169
9.3 Spark用例 172
9.4 Spark架构―引擎内部的运行模式 174
9.5 Spark的语用概念 176
9.6 Spark 2.x―数据框和数据集的出现 178
9.7 小结 179
第 10章 运用Spark操作 180
10.1 Spark―封装和API 180
10.2 RDD语用探索 182
10.2.1 转换 185
10.2.2 动作 190
10.3 共享变量―广播变量和累加器 192
10.3.1 广播变量 192
10.3.2 累加器 195
10.4 小结 196
第 11章 Spark Streaming 197
11.1 Spark Streaming的概念 197
11.2 Spark Streaming的简介和体系结构 198
11.3 Spark Streaming的封装结构 203
11.3.1 Spark Streaming API 203
11.3.2 Spark Streaming操作 204
11.4 连接Kafka和Spark Streaming 206
11.5 小结 208
第五部分 使用Flink实现实时分析
第 12章 运用Apache Flink 210
12.1 Flink体系结构和执行引擎 210
12.2 Flink的基本组件和进程 213
12.3 将源流集成到Flink 215
12.3.1 和Apache Kafka集成 215
12.3.2 和RabbitMQ集成 218
12.4 Flink处理和计算 221
12.4.1 Datastream API 221
12.4.2 DataSet API 223
12.5 Flink持久化 224
12.6 FlinkCEP 226
12.7 Pattern API 227
12.7.1 检测模式 227
12.7.2 模式选择 228
12.7.3 示例 228
12.8 Gelly 229
12.9 小试牛刀 231
12.10 小结 242
第六部分 综合应用
第 13章 用例研究 244
13.1 概述 244
13.2 数据建模 245
13.3 工具和框架 246
13.4 建立基础设施 247
13.5 实现用例 252
13.5.1 构建数据模拟器 252
13.5.2 Hazelcast加载器 259
13.5.3 构建Storm拓扑 261
13.6 运行用例 272
13.7 小结 279