当前位置:首页 > 工业技术
从零开始学Storm
从零开始学Storm

从零开始学StormPDF电子书下载

工业技术

  • 电子书积分:13 积分如何计算积分?
  • 作 者:赵必厦,程丽明编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2014
  • ISBN:9787302372455
  • 页数:364 页
图书介绍:本书详细介绍Storm,以Storm官方网站最新的Release版本Storm 0.8.2为主,介绍了Storm的理论基础、环境搭建、研发准备、应用案例等。本书理论联系实际,通过大量实例,让读者在较短的时间内掌握Storm的使用,搭建与研发出自己的基于Storm的大数据处理平台。
上一篇:包装设计下一篇:机械识图与制图
《从零开始学Storm》目录
标签:编著 开始

第1章 Storm简介 2

1.1 什么是Storm 2

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 简单的API 16

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 如何学习Storm 22

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 ZeroMQ 46

2.6.2 Netty 46

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 TopologyBuilder 59

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 BasicBolt 73

3.7.4 内存中缓存与字段的组合 73

3.7.5 流的top N 74

3.7.6 高效保存最近更新缓存对象的TimeCacheMap(已弃用) 76

3.7.7 分布式RPC的CoordinatedBolt与KeyedFairBolt 76

3.8 本地模式与StormSubmitter的对比 76

3.9 多语言协议(Multi-Language Protocol) 78

3.10 使用非JVM语言操作Storm 82

3.10.1 支持的非Java语言 82

3.10.2 对Storm使用非Java语言 82

3.10.3 实现非Java DSL的笔记 82

3.11 Hook 83

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 IPartitionedTransactionalSpout 94

4.3.2 IOpaquePartitionedTransactionalSpout 95

4.3.3 ITransactionalSpout 96

4.3.4 ICommitterTransactionalSpout 98

4.3.5 IBatchBolt 98

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 常用的Spout 107

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 可靠的与不可靠的Bolt 112

6.2.1 使用Anchoring机制实现可靠的Bolt 112

6.2.2 使用IBasicBolt接口实现自动确认 113

6.3 复合流与复合Anchoring 114

6.3.1 复合流 114

6.3.2 复合Anchoring 114

6.4 使用其他语言定义Bolt 114

6.5 学习编写Bolt类 115

6.5.1 可靠的Bolt 115

6.5.2 不可靠的Bolt 116

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 ZNode 126

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下安装JDK 140

8.2.3 在Windows下安装JDK 141

8.3 GitHub托管项目的下载 146

8.4 Maven的下载与配置 147

8.4.1 Maven的下载 148

8.4.2 在Linux下部署Maven 149

8.4.3 在Windows下部署Maven 149

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 配置静态IP 165

10.1.4 集群SSH无密码 166

10.1.5 修改主机名 167

10.1.6 关闭防火墙 168

10.1.7 同步时间 168

10.1.8 安装JDK 168

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 如何管理Storm 177

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 下载Nexus 189

11.4.2 运行Nexus 189

11.4.3 登录Nexus后台 190

11.4.4 配置Repositories 191

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 部署伪分布的ZooKeeper 197

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-starter 215

13.3.2 使用Maven直接运行WordCountTopology 216

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 ExclamationTopology 219

13.5.2 WordCountTopology 222

13.5.3 ReachTopology 224

13.6 storm-starter的其他例子 230

13.6.1 BasicDRPCTopology 230

13.6.2 ManualDRPC 231

13.6.3 PrintSampleStream 231

13.6.4 RollingTopWords 232

13.6.5 SingleJoinExample 233

13.6.6 TransactionalGlobalCount 234

13.6.7 TransactionalWords 234

13.7 本章小结 235

第14章 研发与集群管理技巧 237

14.1 使用daemontools监控Storm进程 237

14.1.1 daemontools简介 237

14.1.2 安装daemontools 237

14.1.3 编写监控脚本 238

14.2 使用Monit监控Storm 240

14.2.1 Monit简介 240

14.2.2 安装Monit 240

14.2.3 配置Monit 242

14.2.4 启动Monit 244

14.2.5 获取Monit帮助信息 245

14.3 常用的集群操作命令 246

14.4 使用Storm的经验与建议 247

14.5 本章小结 248

第15章 DRPC详解 250

15.1 概述 250

15.2 DRPCTopologyBuilder 251

15.2.1 LinearDRPCTopologyBuilder 251

15.2.2 LinearDRPCTopologyBuilder提供的方法 251

15.2.3 LinearDRPCTopologyBuilder使用范例 252

15.2.4 LinearDRPCTopologyBuilder的工作原理 253

15.2.5 LinearDRPCTopologyBuilder目前已弃用 254

15.3 本地模式的DRPC 254

15.4 远程模式的DRPC 254

15.5 一个复杂的DRPC例子(计算reach值) 255

15.6 非线性DRPC 257

15.7 本章小结 257

第16章 事务拓扑详解 259

16.1 什么是事务拓扑 259

16.1.1 设计1 259

16.1.2 设计2 260

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 事务拓扑API 264

16.4.1 Bolt 264

16.4.2 事务Spout 266

16.4.3 配置 266

16.5 TransactionalTopologyBuilder 267

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 API 283

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 API 294

17.3.7 persistentAggregate方法 298

17.3.8 实现MapStates 299

17.4 Trident Spout 299

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.thrift 305

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)和RotatingMap 319

18.6 Metric 319

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与Kafka 329

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 添加元素到kestrel 336

19.4.5 从Kestrel中移除元素 336

19.4.6 持续添加元素到Kestrel 337

19.4.7 使用KestrelSpout 338

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

相关图书
作者其它书籍
返回顶部