分享

Storm源码分析书籍【适合入门推荐】

 
desehawk 2016-10-24 19:30:56 发表于 书籍 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 182 74404


描述:



李明王晓鹏◎ 编著


pdf

486页

内容:


第1 章总体架构与代码结构1
1.1 Storm 的总体结构1
1.2 Storm 的元数据3
1.2.1 元数据介绍3
1.2.2 Storm 怎么使用这些元数据4
1.3 Storm 的代码结构7
1.3.1 Clojure 代码7
1.3.2 Java 代码8
1.3.3 Trident 代码9
1.3.4 其他代码10
第2 章搭建Storm 集群n
2.1 搭建单机Storm 集群11
2.2 搭建多机Storm 集群14
2.2. 1 设置环境14
2.2.2 启动Storm 集群15
2.2.3 提交Topology 15
2.3 WordCountTopology 介绍15
2.3. 1 RandomSentenceSpout 15
2.3.2 SplitSentence 16
2.3.3 WordCount 17
2.3.4 WordCountTopology 构建17
第3 章Storm 编程基础19
3.1 Fields 定义19
3.2 Tuple 接口20
3.3 常用声明接口21
3.3. 1 配置声明接口22
3.3.2 输入声明接口23
3.3.3 输出字段声明接口24
3.3.4 组件声明接口25

3.4 Spout 输出收集器25
3.4. 1 ISpoutOutputCollector 和
SpoutOutputCollector 25
3.4. 2 Executor 中
ISpoutOutputCollector 的实现... 27
3.5 Bolt 输出收集器28
3.5. 1 IOutputCollector 和
OutputCollector 28
3.5.2 IBasicOutputCollector 和
BasicOutputCollector 31
3.5.3 BatchOutputCollector 和
BatchOutputCollectorlmpl 32
3.5 .4 Executor 中的
IOutputCollector 实现34
3.6 组件接口35
3.7 Spout 接口35
3.7. 1 ISpout 36
3.7.2 IRichSpout 38
3.8 Bolt 接口38
3.8. 1 IBolt 38
3.8.2 IRichBolt 40
3.8.3 IBasicBolt 40
3.8.4 IBatchBolt 42
3.8.5 小结45
3.9 Storm 数据结构46
3.9. 1 GlobalStreamld 46
3.9.2 消息分组方式46
3.9.3 Streamlnfo 47
3.9.4 ShellComponent 47
3.9.5 ComponentObject 47
3.9 .6 ComponentCommon 47
a 录vii
3.9.7 SpoutSpec 48
3.9.8 Bolt 48
3.9.9 StormTopology 49
3.9.10 TopologySummary 49
3.9.11 SupervisorSummary 49
3.9.12 ClusterSummary 50
3.9.13 BoltStats 50
3.9. 14 SpoutStats 50
3.9. 15 统计信息50
3.9. 16 DRPC 51
3.10 基本Topology 构建器52
3.10. 1 TopologyBuilder 52
3.10.2 ConfigGetter 55
3.10.3 SpoutGetter 和BoltGetter 55
3.10.4 一个简单例子56
3.11 异常处理57
第4 章基础函数和工具类58
4.1 计时器58
4.1.1 mk - timer 58
4.1.2 check -active ! 60
4.1.3 schedule 60
4.1.4 schedule-recurring 60
4.1.5 cancel-timer 61
4.2 async -loop 61
4.3 event - manager 62
4.4 even - sampler 63
4.5 ZooKeeper 工具类64
4.5. 1 mk - client 64
4.5.2 create- node 65
4.5.3 get - data 65
4.5.4 进程内启动ZooKeeper 66
4.6 LocalState 66
4.7 ClusterState 68
4.8 StormClusterState 69
第5 章通信机制71
5.1 进程间通信71
5.1. 1 进程间通信协议71
5.1 .2 LocalCluster 模式实现72
5.1.3 分布式模式实现73
5.1.4 协议使用75
5.2 进程内通信77
5.2. 1 Disruptor Queue 的使用77
5.2.2 DisruptorQueue 的Clojure
处理器80
第6 章Nimbus 81
6.1 Nimbus 服务接口定义81
6.2 Nimbus 相关的数据结构83
6.2. 1 Java 数据结构83
6.2.2 Clojure 教据结构84
6.3 Nimbus 中的线程介绍86
6.3. 1 mk - assignments 87
6.3.2 do - cleanup 89
6.3.3 clean -inbox 90
6.4 Topology 状态转移90
6.4. 1 transition- name! 90
6.4.2 transition! 91
6.4.3 state-transitions 92
6.5 启动Nimbus 服务96
6.5 . 1 launch - server ! 96
6.5 .2 service - handler 97
6.6 关闭Nimbus 服务99
6.7 主要服务方法99
6.7. 1 submitTopology 99
6.7.2 kill、rebalance、activate,
deactivate 方法101
6.7.3 文件上传与下载102
6.7.4 获取UI 所需的信息丨04
6.7.5 获取Topology 106
6.7.6 获取Storm 配置项107
6.8 主要辅助方法107
6.8. 1 system- topology ! 107
6.8.2 normalize- topology 112
6.8.3 compute -new - topology- >
executor - >node+port 114
6.8.4 compute -executors 117
第7 章Scheduler 119
7.1 IScheduler 接口119
7.2 EvenScheduler 120
viii a 录
7.2. 1 schedule-topolpgies-evenly •.…120
7.2.2 schedule-topology 121
7.2.3 get -alive-assigned-node+
port->executors 122
7.2.4 sort - slots 123
7.3 DefaultScheduler 124
7.3.1 default -schedule 124
7.3.2 slots-can-reassign 126
7.3.3 bad-slots 126
7.4 IsolationScheduler 127
7.5 调度示例131
7.5.1 EvenScheduler 和
DefaultScheduler 131
7.5.2 IsolationScheduler 134
第8 章Scheduler 137
8.1 与Supervisoi•相关的数据结构137
8.1. 1 standalone-supervisor 137
8.1.2 Supervisor 的数据138
8.1.3 本地存储数据139
8.2 Supervisor 中的线程140
8.2.1 计时器线程140
8.2.2 同步Nimbus 任务的线程140
8.2.3 管理Worker 进程的线程143
8.3 启动Supervisor 145
8.4 关闭Supervisor 147
8.5 重要方法介绍147
8.5.1 launch-worker 147
8.5.2 read-allocated-workers 150
8.5.3 wait -for -worker-launch 151
8.5.4 shutdown-worker 152
8.5.5 download-storm-code 152
第9 章Worker 155
9.1 Worker 中的数据155
9.2 Worker 中的计时器157
9.2.1 Worker 的心跳157
9.2.2 Executor 的心跳158
9.2.3 Worker 中对ZMQ 连接的
维护159
9.2.4 从ZooKeeper 获取Topology
的活跃情况161
9.2.5 小结162
9.3 创建Worker 163
9.4 关闭Worker 164
9.5 重要辅助方法介绍165
9.5.1 Worker 中的接收函数166
9.5.2 Worker 中的发送函数167
9.5.3 获取属于Worker 的Executor ". 169
9.5.4 创建Executor 的接收消息
队列和查找表169
9.5.5 下载Topology 的配置项以及
代码170
9.6 小结17】
第10 章Executor 172
10.1 Executor 的数据172
10.2 Executor 的输人和输出174
10.2.1 Executor 的输入及处理174
10.2.2 Executor 的输出及发送175
10.3 Spout 类型的Executor 176
10.3.1 准备消息循环的数据176
10.3.2 Spout 输入处理函数178
10.3.3 Spout 消息发送函数180
10.3.4 Spout 对象的初始化181
10.3.5 消息循环182
10.4 Bolt 类型的Executor 184
10.4.1 准备消息循环的数据184
10.4.2 Bolt 输入处理函数184
10.4.3 Bolt 的消息发送函数185
10.4.4 Bolt 对象的初始化185
10.4.5 消息循环186
10.5 创建Executor 187
10.6 辅助函数介绍188
10.6.1 组件的Grouper 函数188
10.6.2 带流量控制的错误报告
方法193
10.6.3 触发系统Ticks 194
10.7 小结196
0 录ix
第1 1 章Task
11.1 Task 的上下文对象
11.1 . 1 TopologyContext
11.1 .2 CeneralTopologyContext • -
11.1 .3 WorkerTopologyContext ••…
11.1 .4 TopologyContext
11.2 创建Task 数据
11.3 mk - tasks-fn 函数
11.4 send - unanchored
11.5 创建Task
11.6 Storm 中传输的消息以及序列化…
第1 2 章Storm 的Ack 框架
12.1 Acker Bolt 的实现分析
1 2.2 启动消息跟踪
12.3 消息跟踪
12.4 Ack 机制的例子
第1 3 章系统运行统计
13.1 基础数据结构以及更新算法
13.1.1 滑动窗口的数据结构.… …
13.1.2 滑动窗口的回调函数•… …
13.1.3 滑动窗口集合的类型… •…
13.2 Storm 中的统计信息
13.2. 1 Stats 中定义的统计类别…
13.2.2 运行统计的更新
13.2.3 运行统计的更新时间点…
1 3 .2.4 获取统计数据
1 3.3 运行统计的Thrift 结构
第1 4 章系统运行统计的另一种实现
14.1 内置统计信息的计算
14.1.1 MultiCountMetric
14.1.2 MultiReducedMetric
14.2 内置统计类型
14.2.1 Spout 类型的内置统计… …
14.2.2 Bolt 类型的内罝统计
14.3 统计触发消息
14.3.1 注册统计信息
14.3.2 触发消息的产生与发送…■
14.3.3 处理统计触发消息238
14.4 运行统U■收集节点239
14.5 SystemBolt 241
第15 章事务Topology 的实现243
15.1 事务Topology 的实现概述243
15.1. 1 事务Topology 的类型244
15.1.2 事务Topology 的类关系245
15.2 ITransactionalSpout 接口246
15.3 协调Spout 节点的执行器248
15.3.1 ZooKeeper 客户端工具248
15.3.2 协调Spout 的执行器255
15.3.3 消息发送Bolt 的执行器261
1 5 . 4 CoordinatedBolt 的实现分析26 4
15.4.1 Trackinglnfo 264
15.4.2 CoordinatedOutput -
Collector 265
15.4.3 CoordinatedBolt 中的消息
类型267
15.4.4 成员变量以及主要方法分
4斤267
15.5 分区的事务类型271
15.5. 1 分区的事务Spout 接口271
15.5.2 分区的事务Spout 的执行
器273
15.6 分区的模糊事务Spout 277
15.6.1 分区的模糊事务Spout 的
接口277
15.6.2 糢糊的事务Spout 执行器… … 278
15.7 事务Tcjpology 的构建器281
15.7.1 构建器的构造函数及成员
变量281
15.7.2 ii 置Bolt 对象283
15.7.3 构建Topology 284
15.7.4 输入流声明器286
第1 6 章事务Topology 示例288
16.1 例子代码288
16.1 . 1 分区的事务Spout 288
16.1 .2 局部计数Bolt 的实现291
•
a 录
16.1.3 全局计数Bolt 的实现292
16.2 构建Topology 293
16.3 事务处理示例295
第17 章Trident 的Spout 节点298
17.1 ITridentSpout 接口298
17.1.1 BatchCoordinator 接口299
17.1.2 TridentSpoutCoordinator 300
17.1.3 Ma sterBatchCoordinator 301
17.1.4 消息发送节点接口306
17.1.5 消息发送接口的执行器306
17.2 适配IRichSpout 接口307
17.3 适配IBatchSpout 接口311
17.4 Trident 中分区的Spout 类型311
17.4. 1 分区Spout 接口311
17.4.2 分区Spout 的执行器313
17.5 模糊事务类型的Spout 节点316
17.5.1 模糊事务类型的Spout
接口317
17.5.2 模糊事务类型Spout 的
执行器317
17.6 构建Spout 节点320
17.6. 1 TridentTopology 的
newStream 调用320
17.6.2 TridentTopology 中
newDRPCStream 调用321
第18 章Trident 的存储322
18.1 存储的基本接口322
18.2 MapState 接口的实现323
18.2.1 非事务类型的存储324
18.2.2 事务类型的存储325
18.2.3 模糊事务类型存储327
18.3 值的序列化方法329
18.4 数据更新接口330
18.4.1 CombinerValueUpdater 330
18.4.2 ReducerValueUpdater 331
18.5 存储更新接口331
18.5.1 ReducerAggStateUpdater 332
18.5.2 MapReducerAggStateUpdater •… 332
18.5.3 BaseStatellpdater 334
18.6 创建存储对象334
第19 章Trident 消息336
19.1 ValuePointer 336
19.2 Factory 接口及其实现337
19.2.1 ProjectionFactory 338
19.2.2 FreshOutputFactory 339
19.2.3 OperationOutputFactory 339
19.2.4 RootFactory 341
19.3 消息工厂的例子342
19.4 TridentTupleView 342
19.5 ComboList 343
第20 章Trident 操作与处理节点346
20.1 操作的基本接口346
20.2 Aggregator 实现347
20.2. 1 GroupedAggregator 348
20.2.2 ChainedAggregatorlmpl 350
20.2.3 SingleEmitAggregator 353
20.3 用户接口及其实现355
20.3.1 ReducerAggregator 接口
及其实现355
20.3.2 CombinerAggregator 接口
及其实现356
20.4 所有处理节点的上下文357
20.4.1 单个处理节点的上下文358
20.4.2 操作执行的上下文359
20.5 Trident 的输出收集器359
20.5. 1 FreshCollector 359
20.5.2 CaptureCollector 360
20.5.3 GroupCollector 360
20.5.4 AppendCollector 361
20.5.5 AddldCollector 361
20.6 Trident 的处理节点362
20.6.1 TridentProcessor 接口363
20.6.2 PartitionPersistProcessor •.… 363
20.6.3 StateOueryProcessor 365
20.7 聚集器的执行367
a 录xi
第2 1 章Trident 流的基本操作
21.1 流的成员变量和基础方法
2 1 . 1 .1 流的成员变量
2 1 . 1 .2 流节点名字
21.1.3 流的映射检查
21.1.4 添加节点
21.2 流映射操作
21.3 流的分组操作
21.4 流的逐行操作
21.5 流的分区操作
21.6 流的单聚集器聚集操作
21.7 流的多聚集器聚集操作
21.7. 1 ChainedAggregatorDeclarer
21.7.2 分区上的局部聚集操作… ‘
21.7.3 全局聚集操作
21.7.4 含有多个聚集器的
partitionAggregate 操作…
21.8 流的聚集操作
21.9 流的分区写入操作
21.10 査询操作
21.11 流的全局写入操作
21.12 流的操作与有向图构建
21.13 分组流
21.13. 1 成员变量
21.13.2 逐行操作
21.13.3 分组流的分区聚集操作_
21.13.4 查询操作
21.13.5 聚集操作
21.13.6 写入操作
21.14 利用流操作来构建Topology 的
f肝
第2 2 章Trident 中流的交互操作… …
22.1 基本接口
22.2 DoinerMultiReducer
22 . 2.1 成员变量及构造函数
22.2.2 execute 方法
22.2.3 complete 方法
22.3 GroupedMultiReducerExecutor
22.4 MultiReducerProcessor
22.5 连接操作401
22.6 流合并操作403
第23 章Trident 中的Bolt 节点4 0 4
23.1 SubTopologyBolt 404
23.1. 1 输入准备404
23.1.2 成员变量405
23.1.3 主要方法406
23.2 Trident 中的Bolt 执行器409
23.2. 1 ITridentBatchBolt 接口410
23.2.2 TrackedBatch 410
23.2.3 定制的输出收集器412
23.2.4 消息类型414
23.2.5 数据成员分析414
23.2.6 主要成员方法分析416
第2 4 章Trident 的执行优化4 2 0
24.1 节点类型420
24.1 . 1 基本节点类型420
24.1.2 Spout 节点422
24.1.3 处理节点422
24.1.4 分区节点423
2 4. 2 执行优化算法426
24.2. 1 节点组426
24.2.2 节点组的合并算法427
2 4 .2.3 处理节点组中的分区节点••…4 3 1
24.2.4 节点组以不同的方式收听
相同流431
24.2.5 执行优化后的节点组434
24.2.6 计算节点组的并行度434
第25 章Trident 与DRPC 437
25.1 DRPC 服务器438
25.1.1 DRPC 服务器的成员变量… … 438
52.1.2 DRPC 用户接口及其实现… … 439
25.1.3 DRPC Topology 端接口及
其实现440
25.1.4 启动DRPC 服务器441
25.2 DRPC 的客户端442
25.3 DRPC 中Spout 节点443
25.4 DRPC Spout 的执行器446

xii 0 录
25.5 completeDRPC 操作449
25.6 返回DRPC 结果451
第26 章Trident 的Topology 构建器• •… 453
26.1 基本工具函数453
26.1.1 committerBatches 453
26.1.2 fleshOutStreamBatchlds 453
26.1.3 getOutputStreamBatchGroups.…454
26.2 TridentTopologyBuilder 455
26.2.1 成员变量455
26.2.2 设置Spout 节点456
26.2.3 设置Bolt 节点458
26.3 ―■个例子460
第27 章多语言462
27.1 ShellProcess 462
27.2 ShellBolt 464
27.2.1 成员变量464
27.2.2 读写线程465
27.3 ShellSpout 467
第28 章Storm 中的配置项469


百度网盘:

链接:http://pan.baidu.com/s/1jHD1t1k 密码:
游客,如果您要查看本帖隐藏内容请回复



腾讯网盘:

游客,如果您要查看本帖隐藏内容请回复




已有(182)人评论

跳转到指定楼层
lgwhwyhd 发表于 2016-10-25 07:36:05
正需要,谢分享!
回复

使用道具 举报

Minimumy 发表于 2016-10-25 08:15:18
多谢楼主分享!
回复

使用道具 举报

dalan_123 发表于 2016-10-25 08:25:45
不错的分享内容 大力支持
回复

使用道具 举报

lingyufeng 发表于 2016-10-25 08:27:30
谢谢分享,学习
回复

使用道具 举报

地球仪 发表于 2016-10-25 08:30:49

正需要,谢分享!
回复

使用道具 举报

wzz 发表于 2016-10-25 08:44:55
谢谢分享哈
回复

使用道具 举报

听月小筑 发表于 2016-10-25 08:52:21
正在学些,谢谢楼主分享

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条