图书介绍
从零开始学StormPDF|Epub|txt|kindle电子书版本网盘下载
![从零开始学Storm](https://www.shukui.net/cover/72/33489223.jpg)
- 赵必厦,程丽明编著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302438076
- 出版时间:2016
- 标注页数:368页
- 文件大小:72MB
- 文件页数:385页
- 主题词:数据处理软件
PDF下载
下载说明
从零开始学StormPDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 Storm简介1
1.1 什么是Storm1
1.2 Storm的诞生3
1.2.1 从Twitter说起3
1.2.2 Twitter需要处理大批实时性要求高的大数据业务3
1.2.3 Storm帮助Twitter解决实时海量大数据处理问题4
1.3 Storm的成长5
1.3.1 Storm正式开源5
1.3.2 Apache接管并孵化Storm5
1.3.3 Storm的核心技术和基本组成6
1.3.4 Storm的项目小组7
1.3.5 Storm的技术支持网站10
1.4 Storm的优势13
1.4.1 集成多种技术13
1.4.2 简单的API13
1.4.3 可扩展的14
1.4.4 容错的14
1.4.5 保证数据处理14
1.4.6 可以使用任何语言14
1.4.7 部署和操作简单15
1.4.8 自由开源15
1.5 Storm的应用现状和发展趋势15
1.5.1 应用现状16
1.5.2 发展趋势18
1.6 如何学习Storm20
1.7 本书的章节安排及学习建议21
1.7.1 本书的章节安排21
1.7.2 关于如何阅读本书的建议22
1.8 本章小结23
第2章 Storm的基本知识24
2.1 概念24
2.1.1 元组(Tuple)24
2.1.2 流(Stream)25
2.1.3 龙卷(Spout)26
2.1.4 闪电(Bolt)27
2.1.5 拓扑(Topology)27
2.1.6 主控节点与工作节点28
2.1.7 Nimbus进程与Supervisor进程28
2.1.8 流分组(Stream grouping)28
2.1.9 工作进程(Worker)28
2.1.10 任务(Task)28
2.1.11 执行器(Executor)28
2.1.12 可靠性(Reliability)29
2.2 Storm的配置29
2.2.1 Storm的配置类型29
2.2.2 defaults.yaml文件30
2.2.3 storm.yaml文件33
2.2.4 Config类34
2.3 序列化(Serialization)35
2.3.1 动态类型36
2.3.2 自定义序列化36
2.3.3 Java序列化37
2.3.4 特定组件序列化注册37
2.4 容错机制37
2.4.1 Worker进程死亡37
2.4.2 节点死亡38
2.4.3 Nimbus或者Supervisor守护进程死亡38
2.4.4 Nimbus是否是“单点故障”38
2.5 可靠性机制——保证消息处理38
2.5.1 消息被“完全处理”的含义38
2.5.2 如果一个消息被完全处理或完全处理失败会发生什么39
2.5.3 Storm如何保证可靠性40
2.5.4 Storm如何实现可靠性43
2.5.5 调节可靠性44
2.6 消息传输机制45
2.6.1 ZeroMQ45
2.6.2 Netty45
2.6.3 自定义消息通信机制45
2.7 Storm的开发环境与生产环境46
2.7.1 开发环境与本地模式46
2.7.2 生产环境与远程模式46
2.7.3 开发环境与生产环境的对比47
2.8 Storm拓扑的并行度(parallelism)48
2.8.1 工作进程、执行器和任务48
2.8.2 配置拓扑的并行度49
2.8.3 拓扑示例50
2.8.4 如何改变运行中拓扑的并行度51
2.9 Storm命令行客户端52
2.10 Javadoc文档56
2.11 本章小结56
第3章 拓扑详解57
3.1 什么是拓扑57
3.2 TopologyBuilder57
3.3 流分组59
3.3.1 什么是流分组59
3.3.2 不同的流分组方式60
3.4 一个简单的拓扑64
3.5 在本地模式下运行拓扑67
3.6 在生产集群上运行拓扑68
3.6.1 常见的配置70
3.6.2 杀死拓扑70
3.6.3 更新运行中的拓扑71
3.6.4 监控拓扑71
3.7 拓扑的常见模式71
3.7.1 流连接(Stream Join)71
3.7.2 批处理(Batching)72
3.7.3 BasicBolt72
3.7.4 内存中缓存与字段的组合72
3.7.5 流的top N72
3.7.6 高效保存最近更新缓存对象的TimeCacheMap(已弃用)74
3.7.7 分布式RPC的CoordinatedBolt与KeyedFairBolt75
3.8 本地模式与StormSubmitter的对比75
3.9 多语言协议(Multi-Language Protocol)77
3.10 使用非JVM语言操作Storm81
3.10.1 支持的非Java语言81
3.10.2 对Storm使用非Java语言81
3.10.3 实现非Java DSL的笔记82
3.11 Hook82
3.12 本章小结83
第4章 组件详解84
4.1 基本接口84
4.1.1 IComponent接口84
4.1.2 ISpout接口85
4.1.3 IBolt接口86
4.1.4 IRichSpout与IRichBolt接口88
4.1.5 IBasicBolt接口88
4.1.6 IStateSpout与IRichStateSpout接口89
4.2 基本抽象类90
4.2.1 BaseComponent抽象类90
4.2.2 BaseRichSpout抽象类90
4.2.3 BaseRichBolt抽象类91
4.2.4 BaseBasicBolt抽象类92
4.3 事务接口92
4.3.1 IPartitionedTransactionalSpout92
4.3.2 IOpaquePartitionedTransactionalSpout94
4.3.3 ITransactionalSpout95
4.3.4 ICommitterTransactionalSpout96
4.3.5 IBatchBolt97
4.4 组件之间的相互关系97
4.5 本章小结98
第5章 Spout详解99
5.1 可靠的与不可靠的消息99
5.2 Spout获取数据的方式102
5.2.1 直接连接(Direct Connection)102
5.2.2 消息队列(Enqueued Messages)103
5.2.3 DRPC(分布式RPC)104
5.3 常用的Spout104
5.3.1 Kestrel作为Spout的数据源104
5.3.2 AMQP作为Spout的数据源104
5.3.3 JMS作为Spout的数据源105
5.3.4 Redis作为Spout的数据源105
5.3.5 beanstalkd作为Spout的数据源105
5.4 学习编写Spout类105
5.5 本章小结106
第6章 Bolt详解107
6.1 Bolt概述107
6.2 可靠的与不可靠的Bolt108
6.2.1 使用Anchoring机制实现可靠的Bolt108
6.2.2 使用IBasicBolt接口实现自动确认109
6.3 复合流与复合Anchoring110
6.3.1 复合流110
6.3.2 复合Anchoring110
6.4 使用其他语言定义Bolt111
6.5 学习编写Bolt类111
6.5.1 可靠的Bolt111
6.5.2 不可靠的Bolt112
6.6 本章小结113
第7章 ZooKeeper详解114
7.1 ZooKeeper简介114
7.2 ZooKeeper的下载和部署114
7.2.1 ZooKeeper的下载114
7.2.2 ZooKeeper的部署115
7.3 ZooKeeper的配置117
7.4 ZooKeeper的运行119
7.5 ZooKeeper的本地模式实例120
7.6 ZooKeeper的数据模型121
7.6.1 ZNode122
7.6.2 ZooKeeper中的时间123
7.6.3 ZooKeeper的Stat结构123
7.7 ZooKeeper的命令行操作范例124
7.8 Storm在ZooKeeper中的目录结构127
7.9 本章小结128
第8章 基础软件的安装与使用129
8.1 Linux的基本操作129
8.1.1 环境变量129
8.1.2 常用命令130
8.2 JDK的下载与配置134
8.2.1 Sun JDK的下载134
8.2.2 在Linux下安装JDK135
8.2.3 在Windows下安装JDK136
8.3 GitHub托管项目的下载141
8.4 Maven的下载与配置143
8.4.1 Maven的下载143
8.4.2 在Linux下部署Maven144
8.4.3 在Windows下部署Maven145
8.5 其他软件——Notepad++146
8.6 本章小结147
第9章 Storm的安装与配置148
9.1 Storm集群的安装步骤与准备工作148
9.1.1 搭建ZooKeeper集群148
9.1.2 安装Storm的本地依赖148
9.1.3 下载并解压Storm发行版本151
9.1.4 配置storm.yaml文件153
9.1.5 启动Storm的守护进程154
9.2 本地模式的Storm完整的配置命令157
9.3 本章小结159
第10章 Storm集群搭建实践160
10.1 准备工作160
10.1.1 概述160
10.1.2 配置hosts文件161
10.1.3 配置静态IP161
10.1.4 集群SSH无密码163
10.1.5 修改主机名164
10.1.6 关闭防火墙164
10.1.7 同步时间164
10.1.8 安装JDK165
10.2 ZooKeeper集群的搭建166
10.2.1 部署第一个节点166
10.2.2 部署第i个节点167
10.2.3 启动ZooKeeper集群167
10.2.4 查看ZooKeeper状态168
10.2.5 关闭ZooKeeper集群168
10.2.6 清理ZooKeeper集群168
10.3 Storm集群的搭建168
10.3.1 安装Storm依赖(每个Storm节点)168
10.3.2 部署第一个节点169
10.3.3 部署第i个节点171
10.3.4 启动Storm守护进程171
10.4 本章小结172
第11章 准备Storm的开发环境173
11.1 Storm的开发环境173
11.1.1 什么是Storm的开发环境173
11.1.2 如何管理Storm173
11.1.3 如何提交拓扑到集群176
11.2 Eclipse的下载与配置176
11.2.1 Eclipse的下载176
11.2.2 Eclipse的配置与运行177
11.2.3 Eclipse插件的安装178
11.3 使用Maven管理项目180
11.3.1 Maven的下载与配置180
11.3.2 配置pom.xml文件180
11.3.3 运行Maven命令182
11.4 使用Nexus搭建本地Maven私服183
11.4.1 下载Nexus183
11.4.2 运行Nexus184
11.4.3 登录Nexus后台184
11.4.4 配置Repositories185
11.4.5 配置setting.xml文件187
11.4.6 修改Eclipse的Maven插件的配置189
11.5 使用SVN管理代码版本189
11.5.1 在Windows下搭建SVN服务器189
11.5.2 在Linux下搭建SVN服务器191
11.5.3 安装SVN客户端191
11.6 部署单节点的Storm集群192
11.6.1 部署伪分布的ZooKeeper192
11.6.2 部署伪分布的Storm集群192
11.7 本章小结194
第12章 开发自己的Storm应用195
12.1 新建Maven项目195
12.2 修改为适合Storm开发的项目198
12.2.1 对包名进行分类管理198
12.2.2 修改pom.xml文件199
12.3 编写代码201
12.3.1 编写Spout类201
12.3.2 编写Bolt类202
12.3.3 编写Topology类203
12.4 本地测试运行204
12.5 提交到Storm集群运行205
12.5.1 使用Maven打包205
12.5.2 提交jar包到集群205
12.6 本章小结206
第13章 storm-starter详解207
13.1 storm-starter项目概述207
13.2 storm-starter的下载209
13.3 使用Maven进行管理211
13.3.1 使用Maven打包storm-starter211
13.3.2 使用Maven直接运行ExclamationTopology211
13.3.3 使用Maven运行单元测试211
13.4 在Eclipse中运行212
13.4.1 新建Maven项目的方式212
13.4.2 导入已存在的项目的方式214
13.5 storm-starter的入门例子214
13.5.1 ExclamationTopology214
13.5.2 WordCountTopology216
13.5.3 ReachTopology219
13.6 storm-starter的其他例子225
13.6.1 BasicDRPCTopology225
13.6.2 ManualDRPC226
13.6.3 PrintSampleStream226
13.6.4 RollingTopWords227
13.6.5 SkewedRollingTopWords228
13.6.6 SingleJoinExample229
13.6.7 TransactionalGlobalCount230
13.6.8 TransactionalWords230
13.6.9 WordCountTopologyNode231
13.7 本章小结232
第14章 研发与集群管理技巧233
14.1 使用daemontools监控Storm进程233
14.1.1 daemontools简介233
14.1.2 安装daemontools234
14.1.3 编写监控脚本234
14.2 使用Monit监控Storm236
14.2.1 Monit简介236
14.2.2 安装Monit237
14.2.3 配置Monit238
14.2.4 启动Monit240
14.2.5 获取Monit帮助信息241
14.3 常用的集群操作命令242
14.4 使用Storm的经验与建议243
14.5 本章小结244
第15章 DRPC详解245
15.1 概述245
15.2 DRPCTopologyBuilder246
15.2.1 LinearDRPCTopologyBuilder246
15.2.2 LinearDRPCTopologyBuilder提供的方法246
15.2.3 LinearDRPCTopologyBuilder使用范例248
15.2.4 LinearDRPCTopologyBuilder的工作原理249
15.2.5 LinearDRPCTopologyBuilder目前已弃用249
15.3 本地模式的DRPC249
15.4 远程模式的DRPC250
15.5 一个复杂的DRPC例子(计算reach值)250
15.6 非线性DRPC253
15.7 本章小结253
第16章 事务拓扑详解254
16.1 什么是事务拓扑254
16.1.1 设计1254
16.1.2 设计2255
16.1.3 设计3(Storm的设计)256
16.2 事务拓扑的设计细节256
16.3 事务拓扑的实现细节257
16.3.1 事务Spout的工作原理257
16.3.2 “对于给定的事务id不能发射相同的Batch”的处理258
16.3.3 更多的细节260
16.4 事务拓扑API260
16.4.1 Bolt260
16.4.2 事务Spout261
16.4.3 配置262
16.5 TransactionalTopologyBuilder262
16.5.1 TransactionalTopologyBuilder提供的方法262
16.5.2 TransactionalTopologyBuilder类已弃用266
16.6 一个简单的例子266
16.7 本章小结269
第17章 Trident详解270
17.1 Trident概述270
17.1.1 简单的例子——单词统计(TridentWordCount)270
17.1.2 另一个例子——计算Reach值(TridentReach)274
17.1.3 字段和元组275
17.1.4 状态(State)276
17.1.5 Trident拓扑的执行277
17.2 Trident API279
17.2.1 概述279
17.2.2 本地分区操作279
17.2.3 重新分区操作283
17.2.4 聚合操作284
17.2.5 流分组操作284
17.2.6 合并与连接285
17.3 Trident的状态285
17.3.1 Trident状态分类286
17.3.2 事务Spout(Transactional Spout)286
17.3.3 不透明事务Spout(Opaque Transactional Spout)288
17.3.4 非事务Spout(Non-transactional Spout)289
17.3.5 Spout与State之间的联系289
17.3.6 State API290
17.3.7 persistentAggregate方法294
17.3.8 实现MapStates294
17.4 Trident Spout295
17.4.1 流水线(Pipelining)296
17.4.2 Trident Spout的类型296
17.5 本章小结296
第18章 Storm的内部实现297
18.1 文件系统分析297
18.2 数据目录结构298
18.2.1 Nimbus节点的目录结构299
18.2.2 Supervisor节点的目录结构299
18.3 代码库的结构300
18.3.1 storm.thrift301
18.3.2 Java接口316
18.3.3 实现316
18.4 拓扑的生命周期318
18.4.1 启动拓扑319
18.4.2 监控拓扑321
18.4.3 杀死拓扑321
18.5 Acking框架的实现322
18.5.1 异或计算的基本原理322
18.5.2 Acking框架的实现原理322
18.5.3 Acker的execute方法323
18.5.4 待定元组(pending tuple)和RotatingMap323
18.6 Metric324
18.7 本章小结329
第19章 Storm相关的其他项目330
19.1 JStorm项目330
19.1.1 项目简介330
19.1.2 下载与部署331
19.1.3 源代码编译332
19.2 storm-deploy项目332
19.3 Storm与Kafka333
19.3.1 Kafka简介333
19.3.2 Kafka的安装333
19.3.3 启动服务334
19.3.4 测试运行335
19.3.5 Storm与Kafka的项目337
19.4 storm-kestrel项目338
19.4.1 storm-kestrel项目简介338
19.4.2 使用storm-kestrel项目338
19.4.3 Kestrel服务器和队列339
19.4.4 添加元素到kestrel339
19.4.5 从Kestrel中移除元素340
19.4.6 持续添加元素到Kestrel341
19.4.7 使用KestrelSpout342
19.4.8 执行342
19.5 本章小结343
第20章 企业应用案例344
20.1 Storm席卷众多互联网企业344
20.1.1 Storm的典型应用场景344
20.1.2 Storm的三大基本应用345
20.2 Storm在Twitter中的应用345
20.2.1 Twitter公司简介345
20.2.2 Storm帮助Twitter提升产品性能346
20.2.3 MapR在Twitter中的应用简介346
20.3 Storm在阿里巴巴集团的应用348
20.3.1 阿里巴巴集团简介348
20.3.2 Storm在阿里巴巴的应用348
20.3.3 Storm在淘宝公司的应用350
20.3.4 Storm在支付宝公司的应用350
20.4 其他应用Storm的知名企业和项目351
20.5 本章小结367
参考资料368