图书介绍
从零开始学StormPDF|Epub|txt|kindle电子书版本网盘下载
- 赵必厦,程丽明编著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302372455
- 出版时间:2014
- 标注页数:364页
- 文件大小:61MB
- 文件页数:381页
- 主题词:数据处理软件
PDF下载
下载说明
从零开始学StormPDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 Storm简介2
1.1 什么是Storm2
1.2 Storm的诞生3
1.2.1 从Twitter说起3
1.2.2 Twitter需要处理大批实时性要求高的大数据业务4
1.2.3 Storm帮助Twitter解决实时海量大数据处理问题4
1.3 Storm的成长5
1.3.1 Storm正式开源5
1.3.2 Storm的核心技术和基本组成6
1.3.3 Storm的项目小组7
1.3.4 Storm的技术支持网站12
1.4 Storm的优势15
1.4.1 集成多种技术15
1.4.2 简单的API16
1.4.3 可扩展的16
1.4.4 容错的16
1.4.5 保证数据处理17
1.4.6 可以使用任何语言17
1.4.7 部署和操作简单17
1.4.8 自由开源17
1.5 Storm的应用现状和发展趋势18
1.5.1 应用现状18
1.5.2 发展趋势20
1.6 如何学习Storm22
1.7 本书的章节安排及学习建议23
1.7.1 本书的章节安排23
1.7.2 关于如何阅读本书的建议24
1.8 本章小结24
第2章 Storm的基本知识26
2. 1概念26
2.1.1 元组(Tuple)26
2.1.2 流(Stream)27
2.1.3 喷口(Spout)28
2.1.4 螺栓(Bolt)28
2.1.5 拓扑(Topology)29
2.1.6 主控节点与工作节点29
2.1.7 Nimbus进程与Supervisor进程29
2.1.8 流分组(Stream grouping)30
2.1.9 工作进程(Worker)30
2.1.10 任务(Task)30
2.1.11 执行器(Executor)30
2.1.12 可靠性(Reliability)30
2.2 Storm的配置31
2.2.1 Storm的配置类型31
2.2.2 defaults.yaml文件32
2.2.3 storm.yaml文件35
2.2.4 Config类36
2.3 序列化(Serialization)37
2.3.1 动态类型37
2.3.2 自定义序列化37
2.3.3 Java序列化38
2.3.4 特定组件序列化注册38
2.4 容错机制39
2.4.1 Worker进程死亡39
2.4.2 节点死亡39
2.4.3 Nimbus或者Supervisor守护进程死亡39
2.4.4 Nimbus是否是“单点故障”的39
2.5 可靠性机制——保证消息处理40
2.5.1 消息被“完全处理”的含义40
2.5.2 如果一个消息被完全处理或完全处理失败会发生什么41
2.5.3 Storm如何保证可靠性41
2.5.4 Storm如何实现可靠性44
2.5.5 调节可靠性45
2.6 消息传输机制46
2.6.1 ZeroMQ46
2.6.2 Netty46
2.6.3 自定义消息通信机制47
2.7 Storm的开发环境与生产环境47
2.7.1 开发环境与本地模式47
2.7.2 生产环境与远程模式47
2.7.3 开发环境与生产环境的对比48
2.8 Storm拓扑的并行度(parallelism)49
2.8.1 工作进程、执行器和任务49
2.8.2 配置拓扑的并行度50
2.8.3 拓扑示例51
2.8.4 如何改变运行中拓扑的并行度52
2.9 Storm命令行客户端53
2.10 Javadoc文档57
2.11 本章小结57
第3章 拓扑详解59
3.1 什么是拓扑59
3.2 TopologyBuilder59
3.3 流分组61
3.3.1 什么是流分组61
3.3.2 不同的流分组方式62
3.4 一个简单的拓扑66
3.5 在本地模式下运行拓扑69
3.6 在生产集群上运行拓扑70
3.6.1 常见的配置71
3.6.2 杀死拓扑72
3.6.3 更新运行中的拓扑72
3.6.4 监控拓扑72
3.7 拓扑的常见模式72
3.7.1 流连接(Stream Join)72
3.7.2 批处理(Batching)73
3.7.3 BasicBolt73
3.7.4 内存中缓存与字段的组合73
3.7.5 流的top N74
3.7.6 高效保存最近更新缓存对象的TimeCacheMap(已弃用)76
3.7.7 分布式RPC的CoordinatedBolt与KeyedFairBolt76
3.8 本地模式与StormSubmitter的对比76
3.9 多语言协议(Multi-Language Protocol)78
3.10 使用非JVM语言操作Storm82
3.10.1 支持的非Java语言82
3.10.2 对Storm使用非Java语言82
3.10.3 实现非Java DSL的笔记82
3.11 Hook83
3.12 本章小结84
第4章 组件详解86
4.1 基本接口86
4.1.1 IComponent接口86
4.1.2 ISpout接口86
4.1.3 IBolt接口88
4.1.4 IRichSpout与IRichBolt接口89
4.1.5 IBasicBolt接口90
4.1.6 IStateSpout与IRichStateSpout接口90
4.2 基本抽象类91
4.2.1 BaseComponent抽象类91
4.2.2 BaseRichSpout抽象类92
4.2.3 BaseRichBolt抽象类93
4.2.4 BaseBasicBolt抽象类93
4.3 事务接口94
4.3.1 IPartitionedTransactionalSpout94
4.3.2 IOpaquePartitionedTransactionalSpout95
4.3.3 ITransactionalSpout96
4.3.4 ICommitterTransactionalSpout98
4.3.5 IBatchBolt98
4.4 组件之间的相互关系98
4.5 本章小结100
第5章 Spout详解102
5.1 可靠的与不可靠的消息102
5.2 Spout获取数据的方式104
5.2.1 直接连接(Direct Connection)105
5.2.2 消息队列(Enqueued Messages)106
5.2.3 DRPC(分布式RPC)106
5.3 常用的Spout107
5.3.1 Kestrel作为Spout的数据源107
5.3.2 AMQP作为Spout的数据源107
5.3.3 JMS作为Spout的数据源107
5.3.4 Redis作为Spout的数据源108
5.3.5 beanstalkd作为Spout的数据源108
5.4 学习编写Spout类108
5.5 本章小结109
第6章 Bolt详解111
6.1 Bolt概述111
6.2 可靠的与不可靠的Bolt112
6.2.1 使用Anchoring机制实现可靠的Bolt112
6.2.2 使用IBasicBolt接口实现自动确认113
6.3 复合流与复合Anchoring114
6.3.1 复合流114
6.3.2 复合Anchoring114
6.4 使用其他语言定义Bolt114
6.5 学习编写Bolt类115
6.5.1 可靠的Bolt115
6.5.2 不可靠的Bolt116
6.6 本章小结117
第7章 ZooKeeper详解119
7.1 ZooKeeper简介119
7.2 ZooKeeper的下载和部署119
7.2.1 ZooKeeper的下载119
7.2.2 ZooKeeper的部署120
7.3 ZooKeeper的配置121
7.4 ZooKeeper的运行123
7.5 ZooKeeper的本地模式实例125
7.6 ZooKeeper的数据模型126
7.6.1 ZNode126
7.6.2 ZooKeeper中的时间127
7.6.3 ZooKeeper的Stat结构128
7.7 ZooKeeper的命令行操作范例128
7.8 Storm在ZooKeeper中的目录结构131
7.9 本章小结132
第8章 基础软件的安装与使用134
8.1 Linux的基本操作134
8.1.1 环境变量134
8.1.2 常用命令135
8.2 JDK的下载与配置138
8.2.1 Sun JDK的下载138
8.2.2 在Linux下安装JDK140
8.2.3 在Windows下安装JDK141
8.3 GitHub托管项目的下载146
8.4 Maven的下载与配置147
8.4.1 Maven的下载148
8.4.2 在Linux下部署Maven149
8.4.3 在Windows下部署Maven149
8.5 其他软件——Notepad++151
8.6 本章小结151
第9章 Storm的安装与配置153
9.1 Storm集群的安装步骤与准备工作153
9.1.1 搭建ZooKeeper集群153
9.1.2 安装Storm的本地依赖153
9.1.3 下载并解压Storm发行版本156
9.1.4 配置storm.yaml文件157
9.1.5 启动Storm的守护进程159
9.2 本地模式的Storm完整的配置命令161
9.3 本章小结162
第10章 Storm集群搭建实践164
10.1 准备工作164
10.1.1 概述164
10.1.2 配置hosts文件164
10.1.3 配置静态IP165
10.1.4 集群SSH无密码166
10.1.5 修改主机名167
10.1.6 关闭防火墙168
10.1.7 同步时间168
10.1.8 安装JDK168
10.2 ZooKeeper集群的搭建169
10.2.1 部署第一个节点169
10.2.2 部署第i个节点170
10.2.3 启动ZooKeeper集群171
10.2.4 查看ZooKeeper状态171
10.2.5 关闭ZooKeeper集群171
10.2.6 清理ZooKeeper集群171
10.3 Storm集群的搭建172
10.3.1 安装Storm依赖(每个Storm节点)172
10.3.2 部署第一个节点173
10.3.3 部署第i个节点174
10.3.4 启动Storm守护进程174
10.4 本章小结175
第11章 准备Storm的开发环境177
11.1 Storm的开发环境177
11.1.1 什么是Storm的开发环境177
11.1.2 如何管理Storm177
11.1.3 如何提交拓扑到集群181
11.2 Eclipse的下载与配置182
11.2.1 Eclipse的下载182
11.2.2 Eclipse的配置与运行183
11.2.3 Eclipse插件的安装184
11.3 使用Maven管理项目186
11.3.1 Maven的下载与配置186
11.3.2 配置pom.xml文件186
11.3.3 运行Maven命令188
11.4 使用Nexus搭建本地Maven私服188
11.4.1 下载Nexus189
11.4.2 运行Nexus189
11.4.3 登录Nexus后台190
11.4.4 配置Repositories191
11.4.5 配置setting.xml文件192
11.4.6 修改Eclipse的Maven插件的配置194
11.5 使用SVN管理代码版本195
11.5.1 在Windows下搭建SVN服务器195
11.5.2 在Linux下搭建SVN服务器196
11.5.3 安装SVN客户端197
11.6 部署单节点的Storm集群197
11.6.1 部署伪分布的ZooKeeper197
11.6.2 部署伪分布的Storm集群198
11.7 本章小结199
第12章 开发自己的Storm应用201
12.1 新建Maven项目201
12.2 修改为适合Storm开发的项目203
12.2.1 对包名进行分类管理203
12.2.2 修改pom.xml文件204
12.3 编写代码206
12.3.1 编写Spout类206
12.3.2 编写Bolt类207
12.3.3 编写Topology类208
12.4 本地测试运行209
12.5 提交到Storm集群运行210
12.5.1 使用Maven打包210
12.5.2 提交jar包到集群210
12.6 本章小结211
第13章 storm-starter详解213
13.1 storm-starter项目概述213
13.2 storm-starter的下载215
13.3 使用Maven进行管理215
13.3.1 使用Maven打包storm-starter215
13.3.2 使用Maven直接运行WordCountTopology216
13.3.3 使用Maven运行单元测试216
13.4 在Eclipse中运行216
13.4.1 新建Maven项目的方式216
13.4.2 导入已存在的项目的方式218
13.5 storm-starter的入门例子219
13.5.1 ExclamationTopology219
13.5.2 WordCountTopology222
13.5.3 ReachTopology224
13.6 storm-starter的其他例子230
13.6.1 BasicDRPCTopology230
13.6.2 ManualDRPC231
13.6.3 PrintSampleStream231
13.6.4 RollingTopWords232
13.6.5 SingleJoinExample233
13.6.6 TransactionalGlobalCount234
13.6.7 TransactionalWords234
13.7 本章小结235
第14章 研发与集群管理技巧237
14.1 使用daemontools监控Storm进程237
14.1.1 daemontools简介237
14.1.2 安装daemontools237
14.1.3 编写监控脚本238
14.2 使用Monit监控Storm240
14.2.1 Monit简介240
14.2.2 安装Monit240
14.2.3 配置Monit242
14.2.4 启动Monit244
14.2.5 获取Monit帮助信息245
14.3 常用的集群操作命令246
14.4 使用Storm的经验与建议247
14.5 本章小结248
第15章 DRPC详解250
15.1 概述250
15.2 DRPCTopologyBuilder251
15.2.1 LinearDRPCTopologyBuilder251
15.2.2 LinearDRPCTopologyBuilder提供的方法251
15.2.3 LinearDRPCTopologyBuilder使用范例252
15.2.4 LinearDRPCTopologyBuilder的工作原理253
15.2.5 LinearDRPCTopologyBuilder目前已弃用254
15.3 本地模式的DRPC254
15.4 远程模式的DRPC254
15.5 一个复杂的DRPC例子(计算reach值)255
15.6 非线性DRPC257
15.7 本章小结257
第16章 事务拓扑详解259
16.1 什么是事务拓扑259
16.1.1 设计1259
16.1.2 设计2260
16.1.3 设计3(Storm的设计)260
16.2 事务拓扑的设计细节261
16.3 事务拓扑的实现细节261
16.3.1 事务Spout的工作原理262
16.3.2 “对于给定的事务id不能发射相同的Batch”的处理262
16.3.3 更多的细节264
16.4 事务拓扑API264
16.4.1 Bolt264
16.4.2 事务Spout266
16.4.3 配置266
16.5 TransactionalTopologyBuilder267
16.5.1 TransactionalTopologyBuilder提供的方法267
16.5.2 TransactionalTopologyBuilder类已弃用270
16.6 一个简单的例子270
16.7 本章小结273
第17章 Trident详解275
17.1 Trident概述275
17.1.1 简单的例子——单词统计(TridentWordCount)275
17.1.2 另一个例子——计算Reach值(TridentReach)278
17.1.3 字段和元组280
17.1.4 状态(State)281
17.1.5 Trident拓扑的执行282
17.2 Trident API283
17.2.1 概述283
17.2.2 本地分区操作283
17.2.3 重新分区操作288
17.2.4 聚合操作288
17.2.5 流分组操作288
17.2.6 合并与连接289
17.3 Trident的状态290
17.3.1 Trident状态分类290
17.3.2 事务Spout(Transactional Spout)291
17.3.3 不透明事务Spout(Opaque Transactional Spout)292
17.3.4 非事务Spout(Non-transactional Spout)294
17.3.5 Spout与State之间的联系294
17.3.6 State API294
17.3.7 persistentAggregate方法298
17.3.8 实现MapStates299
17.4 Trident Spout299
17.4.1 流水线(Pipelining)300
17.4.2 Trident Spout的类型300
17.5 本章小结300
第18章 Storm的内部实现302
18.1 文件系统分析302
18.2 数据目录结构303
18.2.1 Nimbus节点的目录结构303
18.2.2 Supervisor节点的目录结构304
18.3 代码库的结构305
18.3.1 storm.thrift305
18.3.2 Java接口312
18.3.3 实现312
18.4 拓扑的生命周期314
18.4.1 启动拓扑315
18.4.2 监控拓扑317
18.4.3 杀死拓扑317
18.5 Acking框架的实现318
18.5.1 异或计算的基本原理318
18.5.2 Acking框架的实现原理318
18.5.3 Acker的execute方法319
18.5.4 待定元组(pending tuple)和RotatingMap319
18.6 Metric319
18.7 本章小结325
第19章 Storm相关的其他项目327
19.1 JStorm项目327
19.1.1 项目简介327
19.1.2 下载与部署328
19.1.3 源代码编译329
19.2 storm-deploy项目329
19.3 Storm与Kafka329
19.3.1 Kafka简介329
19.3.2 Kafka的安装330
19.3.3 启动服务331
19.3.4 测试运行331
19.3.5 Storm与Kafka的项目333
19.4 storm-kestrel项目334
19.4.1 storm-kestrel项目简介334
19.4.2 使用storm-kestrel项目334
19.4.3 Kestrel服务器和队列335
19.4.4 添加元素到kestrel336
19.4.5 从Kestrel中移除元素336
19.4.6 持续添加元素到Kestrel337
19.4.7 使用KestrelSpout338
19.4.8 执行339
19.5 本章小结339
第20章 企业应用案例341
20.1 Storm席卷众多互联网企业341
20.1.1 Storm的典型应用场景341
20.1.2 Storm的三大基本应用341
20.2 Storm在Twitter中的应用342
20.2.1 Twitter公司简介342
20.2.2 Storm帮助Twitter提升产品性能343
20.2.3 MapR在Twitter中的应用简介343
20.3 Storm在阿里巴巴集团的应用344
20.3.1 阿里巴巴集团简介345
20.3.2 Storm在阿里巴巴的应用345
20.3.3 Storm在淘宝公司的应用346
20.3.4 Storm在支付宝公司的应用347
20.4 其他应用Storm的知名企业和项目347
20.5 本章小结363
参考资料364