《Storm应用实践 实时事务处理之策略》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:肖恩·T.艾伦(Sean T.Allen)著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2018
  • ISBN:9787111586210
  • 页数:228 页
图书介绍:本书是一本指导Storm用户实践应用的权威指南,从Storm组件的应用细节、Storm的代码逻辑,到如何优化拓扑性能,以及如何在生产环境中部署Storm集群,作者将TheLadders的项目实践经验都整理归纳并在本书中完整呈现,配上大量图例说明,还附带了应用代码演示,使读者可以在短时间内学到作者花费多年才总结出来的Storm知识精华。

第1章 Storm简介 1

1.1什么是大数据 1

1.1.1大数据的四大特性 2

1.1.2大数据工具 3

1.2 Storm如何应用于大数据应用场景 5

1.3为什么你希望使用Storm 9

1.4小结 10

第2章 Storm核心概念 11

2.1问题定义:GitHub提交数监控看板 11

2.1.1数据:起点和终点 12

2.1.2分解问题 12

2.2 Storm基础概念 13

2.2.1拓扑 13

2.2.2元组 15

2.2.3流 16

2.2.4 spout 17

2.2.5 bolt 18

2.2.6流分组 20

2.3在Storm中实现GitHub提交数监控看板 22

2.3.1建立一个Storm工程 22

2.3.2实现spout 23

2.3.3实现bolt 26

2.3.4集成各个部分组成拓扑 29

2.4小结 30

第3章 拓扑设计 31

3.1拓扑设计方法 32

3.2问题定义:一个社交热力图 32

3.3将解决方案映射至Storm的逻辑 33

3.3.1考虑数据流本身施加的要求 33

3.3.2将数据点表示为元组 34

3.3.3确定拓扑组成的步骤 35

3.4设计的初步实现 38

3.4.1 spout:从数据源读取数据 38

3.4.2 bolt:连接至外部服务 39

3.4.3 bolt:将数据寄放在内存里 41

3.4.4 bolt:持久化存储到数据库 45

3.4.5 定义组件间的流分组策略 47

3.4.6在本地集群模式中构建一个拓扑 48

3.5扩展拓扑 49

3.5.1理解Storm中的并行机制 50

3.5.2调整拓扑配置来解决设计中遗留的瓶颈 54

3.5.3调整拓扑以解决数据流中固有的瓶颈 60

3.6拓扑的设计范式 63

3.6.1分解为功能组件的设计方法 65

3.6.2基于重分配来分解组件的设计方法 65

3.6.3最简单的功能组件与最少的重分配次数 69

3.7小结 70

第4章 设计健壮的拓扑 71

4.1对可靠性的要求 71

4.2问题定义:一个信用卡授权系统 72

4.2.1有重试特性的概念性解决方案 72

4.2.2定义数据点 74

4.2.3在Storm上实现带有重试特性的方案 74

4.3 bolt基础实现 76

4.3.1 AuthorizeCreditCard的实现 76

4.3.2 ProcessedOrderNotification的实现 77

4.4消息处理保障 78

4.4.1元组状态:处理完成或失败 78

4.4.2 bolt中的锚定、应答和容错 80

4.4.3 spout在消息处理保障中的角色 84

4.5回放语义 87

4.5.1 Storm中可靠性的级别 87

4.5.2在Storm拓扑中检查仅一次处理 88

4.5.3检查拓扑中的可靠性保障 89

4.6小结 94

第5章 拓扑由本地到远程的实施 95

5.1 Storm集群 96

5.1.1解析工作结点 98

5.1.2基于信用卡授权拓扑的上下文来理解工作结点 99

5.2 Storm集群容错中的快速失败机制 100

5.3安装Storm集群 101

5.3.1配置Zookeeper集群 101

5.3.2在Storm的主结点和工作结点上安装依赖组件 102

5.3.3安装Storm到主结点和工作结点 102

5.3.4通过storm.yaml配置主结点和工作结点 102

5.3.5在监督机制下启动Nimbus和Supervisor 103

5.4在Storm集群上运行拓扑 104

5.4.1重新考虑如何将拓扑组件组合在一起 104

5.4.2在本地模式下运行拓扑 105

5.4.3在一个远程Storm集群上运行拓扑 105

5.4.4在一个远程Storm集群上部署拓扑 106

5.5 Storm UI及其在集群中的角色 107

5.5.1 Storm UI:Storm集群概要 107

5.5.2 Storm UI:独立拓扑概要 111

5.5.3 Storm UI:独立spout/bolt概要 115

5.6小结 118

第6章 对Storm进行调优 120

6.1问题定义:Daily Deals!重生版 121

6.1.1创建概念性解决方案 121

6.1.2将方案转换为Storm设计 122

6.2初始化实施 122

6.2.1 spout:读取自一个数据源 124

6.2.2 bolt:查找推荐商品 125

6.2.3 bolt:为每个商品查询详细信息 126

6.2.4 bolt:保存推荐的商品详情 127

6.3调优:我想为它提速 128

6.3.1 Storm UI:调优的定位工具 128

6.3.2为性能值建立一个基线集 130

6.3.3判断瓶颈 131

6.3.4 spout:控制数据流入拓扑的速率 135

6.4延迟率:当外部系统依然能正常工作时 137

6.4.1在拓扑中模拟延迟 137

6.4.2延迟的外因和内因 139

6.5 Storm的指标统计API 143

6.5.1使用Storm的内建CountMetric 143

6.5.2设置一个指标接收器 144

6.5.3创建一个自定义的SuccessRateMetric 145

6.5.4创建一个自定义的MultiSuccessRateMetric 147

6.6小结 149

第7章 资源冲突 150

7.1调整一个工作结点上运行的工作进程数量 152

7.1.1问题 152

7.1.2解决方案 152

7.1.3讨论 153

7.2修改工作进程(JVM)上的内存分配 153

7.2.1问题 153

7.2.2解决方案 154

7.2.3讨论 154

7.3定位拓扑上运行的工作结点/进程 154

7.3.1问题 154

7.3.2解决方案 155

7.3.3讨论 155

7.4在一个Storm集群中的工作进程冲突 156

7.4.1问题 157

7.4.2解决方案 157

7.4.3讨论 158

7.5在一个工作进程(JVM)中的内存冲突 159

7.5.1问题 162

7.5.2解决方案 162

7.5.3讨论 162

7.6在一个工作结点上的内存冲突 163

7.6.1问题 165

7.6.2解决方案 165

7.6.3讨论 165

7.7工作结点的CPU资源冲突 165

7.7.1问题 166

7.7.2解决方案 166

7.7.3讨论 168

7.8工作结点的I/O冲突 168

7.8.1网络/Socket层面的I/O冲突 169

7.8.2磁盘I/O冲突 171

7.9小结 172

第8章 Storm内核 174

8.1重新考虑提交数的拓扑设计 175

8.1.1回顾拓扑的设计 175

8.1.2假设该拓扑运行在远程Storm集群上 176

8.1.3数据是如何在集群的spout和bolt之间传输的 176

8.2探究执行器的细节 177

8.2.1监听提交数数据源spout的执行器细节 177

8.2.2在同一个JVM中两个执行器之间传输元组 178

8.2.3提取email bolt的执行器细节 179

8.2.4在不同JVM上的两个执行器之间传输元组 180

8.2.5 email计数bolt的执行器细节 182

8.3路由和任务 183

8.4当Storm的内部队列出现溢出时 185

8.4.1内部队列的类型和可能出现溢出的情况 185

8.4.2使用Storm的debug日志来诊断缓冲区溢出 186

8.5处理Storm内部缓冲区溢出问题 187

8.5.1调整生产与消耗的比例 187

8.5.2提升所有拓扑的缓冲区大小 187

8.5.3提升指定拓扑的缓冲区大小 188

8.5.4 spout的最大待定数 188

8.6调整缓冲区大小来提升性能 189

8.7小结 190

第9章 Trident 191

9.1什么是Trident 192

9.1.1 Trident中不同的操作方法 193

9.1.2将Trident数据流看作批数据 195

9.2 Kafka及其在Trident中的角色 195

9.2.1解构Kafka的设计 195

9.2.2 Kafka与Trident的匹配度 198

9.3问题定义:网络电台应用 199

9.3.1定义数据点 200

9.3.2将问题进行步骤划分 200

9.4基于一个Trident拓扑来实现网络电台的设计 200

9.4.1实现一个Trident的Kafka spout 202

9.4.2对播放日志做反序列化操作,并分别创建每个字段的独立数据流 203

9.4.3将艺术家、歌曲名和标签进行统计计数和持久化操作 207

9.5借助DRPC访问持久化的统计结果 212

9.5.1创建一个DRPC流 212

9.5.2向流中应用一个DRPC状态查询 213

9.5.3借助DRPC客户端发起一个DRPC调用 214

9.6将Trident的操作符映射至Storm的原语 215

9.7扩展一个Trident拓扑 220

9.7.1实现并行性的分区 221

9.7.2 Trident数据流中的分区 221

9.8小结 224

编后记 226