logo
分类于: 计算机基础 人工智能

简介

从零开始学Storm(第2版)

从零开始学Storm(第2版) 0.0分

资源最后更新于 2020-03-29 01:41:46

作者:赵必厦程丽明

出版社:出版社清华大学出版社

出版日期:2016-06

文件格式: pdf

标签: 计算机 软件 数据处理软件

简介· · · · · ·

本书由基础知识、安装与部署、研发与维护、进阶知识、企业应用5个模块构成,并细分为20个章节,其中“基础知识”6章、“安装与部署”4章、“研发与维护”4章、“进阶知识”5章、“企业应用”1章,分别介绍了Storm的基本原理、Topology组件、Spout组件、Bolt组件、ZooKeeper集群、Storm的安装与配置、实战环节等内容,包括理论基础、环境搭建、研发准备、企业应用等。 本书理论联系实际,通过大量实例分析,让读者在较短的时间内掌握Storm的使用,搭建并研发出自己的基于Storm的大数据处理平台。 本书适合所有大数据处理、实时流数据处理、Storm的开发者或爱好者,也适合高等院校和培训学校相关专业的师生参考使用。赵必厦,硕士,具有多年的面向对象语言研发经验,熟练掌握C 、Java、C#等面向对象语言,专注于云计算、大数据、互联网等方面的研究与研发工作,积累了丰富的经验。程丽明,硕士,目前从事服务器虚拟化与云计算构建、信息化安全的研究和产品开发工作。有多年的项目开发经验,研究兴趣包括虚拟化、云计算、SDN、移动办公安全等。

想要: 点击会收藏到你的 我的收藏,可以在这里查看

已收: 表示已经收藏

Tips: 注册一个用户 可以通过用户中心得到电子书更新的通知哦

目录

  1. 前 言
  2. 第1章 Storm简介
  3. 1.1 什么是Storm
  4. 1.2 Storm的诞生
  5. 1.2.1 从Twitter说起
  6. 1.2.2 Twitter需要处理大批实时性要求高的大数据业务
  7. 1.2.3 Storm帮助Twitter解决实时海量大数据处理问题
  8. 1.3 Storm的成长
  9. 1.3.1 Storm正式开源
  10. 1.3.2 Apache接管并孵化Storm
  11. 1.3.3 Storm的核心技术和基本组成
  12. 1.3.4 Storm的项目小组
  13. 1.3.5 Storm的技术支持网站
  14. 1.4 Storm的优势
  15. 1.4.1 集成多种技术
  16. 1.4.2 简单的API
  17. 1.4.3 可扩展的
  18. 1.4.4 容错的
  19. 1.4.5 保证数据处理
  20. 1.4.6 可以使用任何语言
  21. 1.4.7 部署和操作简单
  22. 1.4.8 自由开源
  23. 1.5 Storm的应用现状和发展趋势
  24. 1.5.1 应用现状
  25. 1.5.2 发展趋势
  26. 1.6 如何学习Storm
  27. 1.7 本书的章节安排及学习建议
  28. 1.7.1 本书的章节安排
  29. 1.7.2 关于如何阅读本书的建议
  30. 1.8 本章小结
  31. 第2章 Storm的基本知识
  32. 2.1 概念
  33. 2.1.1 元组(Tuple)
  34. 2.1.2 流(Stream)
  35. 2.1.3 龙卷(Spout)
  36. 2.1.4 闪电(Bolt)
  37. 2.1.5 拓扑(Topology)
  38. 2.1.6 主控节点与工作节点
  39. 2.1.7 Nimbus进程与Supervisor进程
  40. 2.1.8 流分组(Stream grouping)
  41. 2.1.9 工作进程(Worker)
  42. 2.1.10 任务(Task)
  43. 2.1.11 执行器(Executor)
  44. 2.1.12 可靠性(Reliability)
  45. 2.2 Storm的配置
  46. 2.2.1 Storm的配置类型
  47. 2.2.2 defaults.yaml文件
  48. 2.2.3 storm.yaml文件
  49. 2.2.4 Config类
  50. 2.3 序列化(Serialization)
  51. 2.3.1 动态类型
  52. 2.3.2 自定义序列化
  53. 2.3.3 Java序列化
  54. 注 意
  55. 2.3.4 特定组件序列化注册
  56. 2.4 容错机制
  57. 2.4.1 Worker进程死亡
  58. 2.4.2 节点死亡
  59. 2.4.3 Nimbus或者Supervisor守护进程死亡
  60. 2.4.4 Nimbus是否是“单点故障”
  61. 2.5 可靠性机制——保证消息处理
  62. 2.5.1 消息被“完全处理”的含义
  63. 2.5.2 如果一个消息被完全处理或完全处理失败会发生什么
  64. 2.5.3 Storm如何保证可靠性
  65. 2.5.4 Storm如何实现可靠性
  66. 2.5.5 调节可靠性
  67. 2.6 消息传输机制
  68. 2.6.1 ZeroMQ
  69. 2.6.2 Netty
  70. 2.6.3 自定义消息通信机制
  71. 2.7 Storm的开发环境与生产环境
  72. 2.7.1 开发环境与本地模式
  73. 2.7.2 生产环境与远程模式
  74. 2.7.3 开发环境与生产环境的对比
  75. 2.8 Storm拓扑的并行度(parallelism)
  76. 2.8.1 工作进程、执行器和任务
  77. 2.8.2 配置拓扑的并行度
  78. 注 意
  79. 2.8.3 拓扑示例
  80. 2.8.4 如何改变运行中拓扑的并行度
  81. 2.9 Storm命令行客户端
  82. 2.10 Javadoc文档
  83. 2.11 本章小结
  84. 第3章 拓扑详解
  85. 3.1 什么是拓扑
  86. 3.2 TopologyBuilder
  87. 3.3 流分组
  88. 3.3.1 什么是流分组
  89. 3.3.2 不同的流分组方式
  90. 3.4 一个简单的拓扑
  91. 3.5 在本地模式下运行拓扑
  92. 3.6 在生产集群上运行拓扑
  93. 3.6.1 常见的配置
  94. 3.6.2 杀死拓扑
  95. 3.6.3 更新运行中的拓扑
  96. 3.6.4 监控拓扑
  97. 3.7 拓扑的常见模式
  98. 3.7.1 流连接(Stream Join)
  99. 3.7.2 批处理(Batching)
  100. 3.7.3 BasicBolt
  101. 3.7.4 内存中缓存与字段的组合
  102. 3.7.5 流的top N
  103. 3.7.6 高效保存最近更新缓存对象的TimeCacheMap(已弃用)
  104. 3.7.7 分布式RPC的CoordinatedBolt与KeyedFairBolt
  105. 3.8 本地模式与StormSubmitter的对比
  106. 3.9 多语言协议(Multi-Language Protocol)
  107. 3.10 使用非JVM语言操作Storm
  108. 3.10.1 支持的非Java语言
  109. 3.10.2 对Storm使用非Java语言
  110. 3.10.3 实现非Java DSL的笔记
  111. 3.11 Hook
  112. 3.12 本章小结
  113. 第4章 组件详解
  114. 4.1 基本接口
  115. 4.1.1 IComponent接口
  116. 4.1.2 ISpout接口
  117. 4.1.3 IBolt接口
  118. 4.1.4 IRichSpout与IRichBolt接口
  119. 4.1.5 IBasicBolt接口
  120. 4.1.6 IStateSpout与IRichStateSpout接口
  121. 4.2 基本抽象类
  122. 4.2.1 BaseComponent抽象类
  123. 4.2.2 BaseRichSpout抽象类
  124. 4.2.3 BaseRichBolt抽象类
  125. 4.2.4 BaseBasicBolt抽象类
  126. 4.3 事务接口
  127. 4.3.1 IPartitionedTransactionalSpout
  128. 4.3.2 IOpaquePartitionedTransactionalSpout
  129. 4.3.3 ITransactionalSpout
  130. 4.3.4 ICommitterTransactionalSpout
  131. 4.3.5 IBatchBolt
  132. 4.4 组件之间的相互关系
  133. 4.5 本章小结
  134. 第5章 Spout详解
  135. 5.1 可靠的与不可靠的消息
  136. 5.2 Spout获取数据的方式
  137. 5.2.1 直接连接(Direct Connection)
  138. 5.2.2 消息队列(Enqueued Messages)
  139. 5.2.3 DRPC(分布式RPC)
  140. 5.3 常用的Spout
  141. 5.3.1 Kestrel作为Spout的数据源
  142. 5.3.2 AMQP作为Spout的数据源
  143. 5.3.3 JMS作为Spout的数据源
  144. 5.3.4 Redis作为Spout的数据源
  145. 5.3.5 beanstalkd作为Spout的数据源
  146. 5.4 学习编写Spout类
  147. 5.5 本章小结
  148. 第6章 Bolt详解
  149. 6.1 Bolt概述
  150. 6.2 可靠的与不可靠的Bolt
  151. 6.2.1 使用Anchoring机制实现可靠的Bolt
  152. 6.2.2 使用IBasicBolt接口实现自动确认
  153. 6.3 复合流与复合Anchoring
  154. 6.3.1 复合流
  155. 6.3.2 复合Anchoring
  156. 6.4 使用其他语言定义Bolt
  157. 6.5 学习编写Bolt类
  158. 6.5.1 可靠的Bolt
  159. 6.5.2 不可靠的Bolt
  160. 6.6 本章小结
  161. 第7章 ZooKeeper详解
  162. 7.1 ZooKeeper简介
  163. 7.2 ZooKeeper的下载和部署
  164. 7.2.1 ZooKeeper的下载
  165. 7.2.2 ZooKeeper的部署
  166. 7.3 ZooKeeper的配置
  167. 注 意
  168. 7.4 ZooKeeper的运行
  169. 7.5 ZooKeeper的本地模式实例
  170. 7.6 ZooKeeper的数据模型
  171. 7.6.1 ZNode
  172. 注 意
  173. 7.6.2 ZooKeeper中的时间
  174. 7.6.3 ZooKeeper的Stat结构
  175. 7.7 ZooKeeper的命令行操作范例
  176. 7.8 Storm在ZooKeeper中的目录结构
  177. 7.9 本章小结
  178. 第8章 基础软件的安装与使用
  179. 8.1 Linux的基本操作
  180. 8.1.1 环境变量
  181. 注 意
  182. 8.1.2 常用命令
  183. 注 意
  184. 注 意
  185. 8.2 JDK的下载与配置
  186. 8.2.1 Sun JDK的下载
  187. 注 意
  188. 8.2.2 在Linux下安装JDK
  189. 注 意
  190. 8.2.3 在Windows下安装JDK
  191. 注 意
  192. 8.3 GitHub托管项目的下载
  193. 8.4 Maven的下载与配置
  194. 注 意
  195. 8.4.1 Maven的下载
  196. 8.4.2 在Linux下部署Maven
  197. 8.4.3 在Windows下部署Maven
  198. 注 意
  199. 8.5 其他软件——Notepad++
  200. 8.6 本章小结
  201. 第9章 Storm的安装与配置
  202. 9.1 Storm集群的安装步骤与准备工作
  203. 9.1.1 搭建ZooKeeper集群
  204. 9.1.2 安装Storm的本地依赖
  205. 注 意
  206. 注 意
  207. 注 意
  208. 注 意
  209. 9.1.3 下载并解压Storm发行版本
  210. 9.1.4 配置storm.yaml文件
  211. 9.1.5 启动Storm的守护进程
  212. 9.2 本地模式的Storm完整的配置命令
  213. 9.3 本章小结
  214. 第10章 Storm集群搭建实践
  215. 10.1 准备工作
  216. 10.1.1 概述
  217. 10.1.2 配置hosts文件
  218. 10.1.3 配置静态IP
  219. 10.1.4 集群SSH无密码
  220. 10.1.5 修改主机名
  221. 注 意
  222. 10.1.6 关闭防火墙
  223. 10.1.7 同步时间
  224. 10.1.8 安装JDK
  225. 10.2 ZooKeeper集群的搭建
  226. 10.2.1 部署第一个节点
  227. 10.2.2 部署第i个节点
  228. 10.2.3 启动ZooKeeper集群
  229. 10.2.4 查看ZooKeeper状态
  230. 10.2.5 关闭ZooKeeper集群
  231. 10.2.6 清理ZooKeeper集群
  232. 10.3 Storm集群的搭建
  233. 10.3.1 安装Storm依赖(每个Storm节点)
  234. 10.3.2 部署第一个节点
  235. 10.3.3 部署第i个节点
  236. 10.3.4 启动Storm守护进程
  237. 10.4 本章小结
  238. 第11章 准备Storm的开发环境
  239. 11.1 Storm的开发环境
  240. 11.1.1 什么是Storm的开发环境
  241. 11.1.2 如何管理Storm
  242. 11.1.3 如何提交拓扑到集群
  243. 11.2 Eclipse的下载与配置
  244. 11.2.1 Eclipse的下载
  245. 注 意
  246. 11.2.2 Eclipse的配置与运行
  247. 11.2.3 Eclipse插件的安装
  248. 注 意
  249. 11.3 使用Maven管理项目
  250. 11.3.1 Maven的下载与配置
  251. 11.3.2 配置pom.xml文件
  252. 11.3.3 运行Maven命令
  253. 11.4 使用Nexus搭建本地Maven私服
  254. 11.4.1 下载Nexus
  255. 11.4.2 运行Nexus
  256. 11.4.3 登录Nexus后台
  257. 11.4.4 配置Repositories
  258. 11.4.5 配置setting.xml文件
  259. 11.4.6 修改Eclipse的Maven插件的配置
  260. 11.5 使用SVN管理代码版本
  261. 11.5.1 在Windows下搭建SVN服务器
  262. 11.5.2 在Linux下搭建SVN服务器
  263. 11.5.3 安装SVN客户端
  264. 11.6 部署单节点的Storm集群
  265. 11.6.1 部署伪分布的ZooKeeper
  266. 11.6.2 部署伪分布的Storm集群
  267. 11.7 本章小结
  268. 第12章 开发自己的Storm应用
  269. 12.1 新建Maven项目
  270. 12.2 修改为适合Storm开发的项目
  271. 12.2.1 对包名进行分类管理
  272. 12.2.2 修改pom.xml文件
  273. 12.3 编写代码
  274. 12.3.1 编写Spout类
  275. 12.3.2 编写Bolt类
  276. 12.3.3 编写Topology类
  277. 12.4 本地测试运行
  278. 12.5 提交到Storm集群运行
  279. 12.5.1 使用Maven打包
  280. 12.5.2 提交jar包到集群
  281. 12.6 本章小结
  282. 第13章 storm-starter详解
  283. 13.1 storm-starter项目概述
  284. 13.2 storm-starter的下载
  285. 注 意
  286. 13.3 使用Maven进行管理
  287. 13.3.1 使用Maven打包storm-starter
  288. 13.3.2 使用Maven直接运行ExclamationTopology
  289. 注 意
  290. 13.3.3 使用Maven运行单元测试
  291. 13.4 在Eclipse中运行
  292. 13.4.1 新建Maven项目的方式
  293. 13.4.2 导入已存在的项目的方式
  294. 13.5 storm-starter的入门例子
  295. 13.5.1 ExclamationTopology
  296. 13.5.2 WordCountTopology
  297. 13.5.3 ReachTopology
  298. 13.6 storm-starter的其他例子
  299. 13.6.1 BasicDRPCTopology
  300. 13.6.2 ManualDRPC
  301. 13.6.3 PrintSampleStream
  302. 13.6.4 RollingTopWords
  303. 13.6.5 SkewedRollingTopWords
  304. 13.6.6 SingleJoinExample
  305. 13.6.7 TransactionalGlobalCount
  306. 13.6.8 TransactionalWords
  307. 13.6.9 WordCountTopologyNode
  308. 13.7 本章小结
  309. 第14章 研发与集群管理技巧
  310. 14.1 使用daemontools监控Storm进程
  311. 14.1.1 daemontools简介
  312. 14.1.2 安装daemontools
  313. 14.1.3 编写监控脚本
  314. 14.2 使用Monit监控Storm
  315. 14.2.1 Monit简介
  316. 14.2.2 安装Monit
  317. 14.2.3 配置Monit
  318. 14.2.4 启动Monit
  319. 14.2.5 获取Monit帮助信息
  320. 14.3 常用的集群操作命令
  321. 14.4 使用Storm的经验与建议
  322. 14.5 本章小结
  323. 第15章 DRPC详解
  324. 15.1 概述
  325. 15.2 DRPCTopologyBuilder
  326. 15.2.1 LinearDRPCTopologyBuilder
  327. 15.2.2 LinearDRPCTopologyBuilder提供的方法
  328. 15.2.3 LinearDRPCTopologyBuilder使用范例
  329. 15.2.4 LinearDRPCTopologyBuilder的工作原理
  330. 15.2.5 LinearDRPCTopologyBuilder目前已弃用
  331. 15.3 本地模式的DRPC
  332. 15.4 远程模式的DRPC
  333. 15.5 一个复杂的DRPC例子(计算reach值)
  334. 15.6 非线性DRPC
  335. 注 意
  336. 15.7 本章小结
  337. 第16章 事务拓扑详解
  338. 16.1 什么是事务拓扑
  339. 16.1.1 设计1
  340. 16.1.2 设计2
  341. 16.1.3 设计3(Storm的设计)
  342. 16.2 事务拓扑的设计细节
  343. 16.3 事务拓扑的实现细节
  344. 16.3.1 事务Spout的工作原理
  345. 16.3.2 “对于给定的事务id不能发射相同的Batch”的处理
  346. 16.3.3 更多的细节
  347. 16.4 事务拓扑API
  348. 16.4.1 Bolt
  349. 16.4.2 事务Spout
  350. 16.4.3 配置
  351. 16.5 TransactionalTopologyBuilder
  352. 16.5.1 TransactionalTopologyBuilder提供的方法
  353. 16.5.2 TransactionalTopologyBuilder类已弃用
  354. 16.6 一个简单的例子
  355. 16.7 本章小结
  356. 第17章 Trident详解
  357. 17.1 Trident概述
  358. 17.1.1 简单的例子——单词统计(TridentWordCount)
  359. 17.1.2 另一个例子——计算Reach值(TridentReach)
  360. 17.1.3 字段和元组
  361. 17.1.4 状态(State)
  362. 17.1.5 Trident拓扑的执行
  363. 17.2 Trident API
  364. 17.2.1 概述
  365. 17.2.2 本地分区操作
  366. 17.2.3 重新分区操作
  367. 17.2.4 聚合操作
  368. 17.2.5 流分组操作
  369. 17.2.6 合并与连接
  370. 17.3 Trident的状态
  371. 17.3.1 Trident状态分类
  372. 17.3.2 事务Spout(Transactional Spout)
  373. 17.3.3 不透明事务Spout(Opaque Transactional Spout)
  374. 17.3.4 非事务Spout(Non-transactional Spout)
  375. 17.3.5 Spout与State之间的联系
  376. 17.3.6 State API
  377. 17.3.7 persistentAggregate方法
  378. 17.3.8 实现 MapStates
  379. 17.4 Trident Spout
  380. 17.4.1 流水线(Pipelining)
  381. 17.4.2 Trident Spout的类型
  382. 17.5 本章小结
  383. 第18章 Storm的内部实现
  384. 18.1 文件系统分析
  385. 18.2 数据目录结构
  386. 18.2.1 Nimbus节点的目录结构
  387. 18.2.2 Supervisor节点的目录结构
  388. 18.3 代码库的结构
  389. 18.3.1 storm.thrift
  390. 18.3.2 Java接口
  391. 18.3.3 实现
  392. 18.4 拓扑的生命周期
  393. 18.4.1 启动拓扑
  394. 18.4.2 监控拓扑
  395. 18.4.3 杀死拓扑
  396. 18.5 Acking框架的实现
  397. 18.5.1 异或计算的基本原理
  398. 18.5.2 Acking框架的实现原理
  399. 18.5.3 Acker的execute方法
  400. 18.5.4 待定元组(pending tuple)和RotatingMap
  401. 18.6 Metric
  402. 18.7 本章小结
  403. 第19章 Storm相关的其他项目
  404. 19.1 JStorm项目
  405. 19.1.1 项目简介
  406. 19.1.2 下载与部署
  407. 19.1.3 源代码编译
  408. 19.2 storm-deploy项目
  409. 19.3 Storm与Kafka
  410. 19.3.1 Kafka简介
  411. 19.3.2 Kafka的安装
  412. 19.3.3 启动服务
  413. 19.3.4 测试运行
  414. 19.3.5 Storm与Kafka的项目
  415. 19.4 storm-kestrel项目
  416. 19.4.1 storm-kestrel项目简介
  417. 19.4.2 使用storm-kestrel项目
  418. 19.4.3 Kestrel服务器和队列
  419. 19.4.4 添加元素到kestrel
  420. 19.4.5 从Kestrel中移除元素
  421. 19.4.6 持续添加元素到Kestrel
  422. 19.4.7 使用KestrelSpout
  423. 19.4.8 执行
  424. 19.5 本章小结
  425. 第20章 企业应用案例
  426. 20.1 Storm席卷众多互联网企业
  427. 20.1.1 Storm的典型应用场景
  428. 20.1.2 Storm的三大基本应用
  429. 20.2 Storm在Twitter中的应用
  430. 20.2.1 Twitter公司简介
  431. 20.2.2 Storm帮助Twitter提升产品性能
  432. 20.2.3 MapR在Twitter中的应用简介
  433. 20.3 Storm在阿里巴巴集团的应用
  434. 20.3.1 阿里巴巴集团简介
  435. 20.3.2 Storm在阿里巴巴的应用
  436. 20.3.3 Storm在淘宝公司的应用
  437. 20.3.4 Storm在支付宝公司的应用
  438. 20.4 其他应用Storm的知名企业和项目
  439. 20.5 本章小结
  440. 参考资料