第1章 分布式实时计算系统 1
1.1 分布式的概念 1
1.1.1 分布式系统 1
1.1.2 分布式计算 1
1.2 分布式通信 1
1.2.1 分布式通信基础 1
1.2.2 消息队列 2
1.2.3 Storm计算模型 3
1.3 分布式实时计算系统架构 4
1.3.1 数据获取——Kafka 4
1.3.2 数据处理——Storm 4
1.3.3 数据存储——HBase 5
1.4 系统架构 5
本章小结 6
习题 6
第2章 初识Kafka 7
2.1 什么是Kafka 7
2.1.1 Kafka概述 7
2.1.2 使用场景 7
2.1.3 Kafka基本特性 8
2.1.4 性能 8
2.1.5 总结 9
2.1.6 Kafka在LinkedIn中的应用 9
2.2 Topics和logs 10
2.3 分布式——consumers和producers 11
本章小结 12
习题 12
第3章 Kafka环境搭建 13
3.1 服务器搭建 13
3.2 开发环境搭建 15
本章小结 19
习题 19
第4章 Kafka消息传送 20
4.1 消息传输的事务定义 20
4.2 性能优化 21
4.2.1 消息集 21
4.2.2 数据压缩 22
4.3 生产者和消费者 22
4.3.1 Kafka生产者的消息发送 22
4.3.2 Kafka consumer 22
4.4 主从同步 24
4.5 客户端API 25
4.5.1 Kafka producer API 25
4.5.2 Kafka consumer API 26
4.6 消息和日志 27
本章小结 30
习题 30
第5章 Zookeeper开发 31
5.1 Zookeeper的来源 31
5.2 Zookeeper基础 33
5.2.1 基本概念 33
5.2.2 Zookeeper架构 34
5.3 Zookeeper的API 35
5.3.1 建立会话 35
5.3.2 管理权 36
5.3.3 节点注册 39
5.3.4 任务队列化 40
5.4 状态变化处理 43
5.5 故障处理 44
5.6 Zookeeper集群管理 46
5.6.1 集群配置 46
5.6.2 集群管理 47
本章小结 48
习题 48
第6章 初识HBase 50
6.1 什么是HBase 50
6.1.1 大数据的背景 50
6.1.2 HBase架构 50
6.1.3 HBase存储API 52
6.2 HBase部署 53
6.2.1 HBase配置及安装 53
6.2.2 运行模式 56
6.2.3 集群操作 56
本章小结 58
习题 58
第7章 HBase基础操作 59
7.1 CRUD操作 59
7.1.1 Put操作 59
7.1.2 Get操作 62
7.1.3 Delete操作 64
7.2 批处理操作 67
7.3 行锁 69
7.4 扫描 70
7.5 其他操作 73
7.5.1 HTable方法 73
7.5.2 Bytes方法 73
本章小结 74
习题 74
第8章 HBase高阶特性 75
8.1 过滤器 75
8.1.1 什么是过滤器 75
8.1.2 比较过滤器 76
8.1.3 专用过滤器 78
8.1.4 附加过滤器 81
8.2 计数器 85
8.2.1 什么是计数器 85
8.2.2 单计数器及多计数器 86
8.3 协处理器 88
8.3.1 什么是协处理器 88
8.3.2 协处理器API应用 88
本章小结 90
习题 90
第9章 管理HBase 92
9.1 HBase数据描述 92
9.1.1 表 92
9.1.2 列簇 92
9.1.3 属性 93
9.2 表管理API 94
9.2.1 基础操作 94
9.2.2 集群管理 97
本章小结 102
习题 102
第10章 初识Storm 103
10.1 什么是Storm 103
10.1.1 Storm能做什么 103
10.1.2 Storm的特性 103
10.1.3 Storm分布式计算结构 105
10.2 构建topology 105
10.2.1 Storm的基本概念 105
10.2.2 构建topology 106
10.2.3 示例:单词计数 106
10.3 Storm并发机制 111
10.3.1 topology并发机制 112
10.3.2 给topology增加Worker 112
10.3.3 配置Executor和task 112
10.4 数据流分组的理解 115
10.5 消息的可靠处理 117
10.5.1 消息被处理后会发生什么 118
10.5.2 Storm可靠性的实现方法 123
10.5.3 调整可靠性 125
本章小结 125
习题 126
第11章 配置 Storm集群 127
11.1 Storm集群框架介绍 127
11.1.1 理解nimbus守护进程 127
11.1.2 supervisor守护进程的工作方式 128
11.1.3 DRPC服务工作机制 128
11.1.4 Storm的UI简介 129
11.2 在Linux上安装Storm 129
11.2.1 搭建Zookeeper集群 130
11.2.2 安装Storm依赖库 130
11.2.3 下载并解压Storm发布版本 131
11.2.4 修改storm.yaml配置文件 131
11.2.5 启动Storm后台进程 132
11.3 将topology提交到集群上 132
本章小结 133
习题 133
第12章 Trident和Trident-ML 134
12.1 Trident topology 134
12.1.1 Trident综述 134
12.1.2 Reach 137
12.1.3 字段和元组 139
12.1.4 状态 140
12.1.5 Trident topology的执行 140
12.2 Trident接口 141
12.2.1 综述 141
12.2.2 本地分区操作 142
12.2.3 重新分区操作 146
12.2.4 群聚操作 146
12.2.5 流分组操作 146
12.2.6 合并和连接 147
12.3 Trident状态 148
12.3.1 事务spouts 149
12.3.2 透明事务spouts 150
12.3.3 非事务spouts 151
12.3.4 Spout和State总结 151
12.3.5 State应用接口 151
12.3.6 MapState的更新 154
12.3.7 执行MapState 155
12.4 Trident-ML:基于storm的实时在线机器学习库 155
本章小结 160
习题 160
第13章 DRPC模式 161
13.1 DRPC概述 161
13.2 DRPC自动化组件 162
13.3 本地模式DRPC 163
13.4 远程模式DRPC 163
13.5 一个更复杂的例子 164
本章小结 165
习题 165
第14章 Storm实战 166
14.1 网站页面浏览量计算 166
14.1.1 背景介绍 166
14.1.2 体系结构 166
14.1.3 项目相关介绍 166
14.1.4 Storm编码实现 167
14.1.5 运行topology 174
14.2 网站用户访问量计算 175
14.2.1 背景介绍 175
14.2.2 Storm代码实现 175
14.2.3 运行topology 179
本章小结 179
习题 179
参考文献 180