本书共11章,分为三篇。基础篇(第1~3章),介绍了Storm背景、基本原理、安装部署、核心概念和数据流模型。实战篇(第4~9章),通过6个典型的应用案例和代码示例,结合实践技巧和理论知识,深入讲解了如何使用Storm设计大型数据应用系统。技巧篇(第10~11章),重点介绍了Storm的高级特性、运维监控和性能调优等,并结合生产系统的性能优化、运维经验和使用技巧等方面进行讲解,旨在提升读者的实际操作经验。
前言
基础篇
第1章认识Storm
1.1什么是实时流计算
1.1.1实时流计算背景
1.1.2实时计算应用场景
1.1.3实时计算处理流程
1.1.4实时计算框架
1.2Storm是什么
1.2.1Storm出现的背景
1.2.2Storm简介
1.2.3Storm的设计思想
1.2.4Storm与Hadoop的角色和组件比较
1.3Storm核心组件
1.3.1主节点Nimbus
1.3.2工作节点Supervisor
1.3.3协调服务组件ZooKeeper
1.3.4其他核心组件
1.4Storm的特性
1.5Storm的功能
1.6本章小结
第2章开始使用Storm
2.1环境准备
2.1.1系统配置
2.1.2安装ZooKeeper集群
2.2启动模式
2.2.1本地模式
2.2.2分布式模式
2.3安装部署Storm集群
2.3.1安装Storm依赖库
2.3.2安装Storm集群
2.3.3启动Storm集群
2.3.4停止Storm集群
2.4创建Topology并向集群提交任务
2.4.1创建Topology
2.4.2向集群提交任务
2.5本章小结
第3章核心概念和数据流模型
3.1Tuple元组
3.1.1Tuple描述
3.1.2Tuple的生命周期
3.2Spout数据源
3.2.1Spout介绍
3.2.2Spout实例
3.3Bolt消息处理者
3.3.1Bolt介绍
3.3.2Bolt实例
3.4Topology拓扑
3.4.1Topology实例
3.4.2Topology运行
3.5Stream消息流和StreamGrouping消息流组
3.5.1Stream消息流
3.5.2StreamGrouping消息流组
3.6Task任务
3.7Worker工作者进程
3.8Worker、Task、Executor三者之间的关系
3.9事务
3.10数据流模型
3.10.1数据流模型简介
3.10.2Storm数据流模型
3.11本章小结
实战篇
第4章实例1:移动互联--语音"实时墙"
4.1业务背景
4.1.1案例背景
4.1.2设计目标
4.1.3数据格式
4.1.4硬件配置
4.2系统架构与模块设计
4.2.1整体架构
4.2.2数据采集
4.2.3数据实时处理
4.2.4存储设计
4.2.5Web实时展示
4.2.6硬件部署图
4.3核心模块实现
4.3.1实时处理业务逻辑实现
4.3.2Web展示实现
4.3.3最终效果呈现
4.4本章小结
第5章实例2:运营商--网络流量流向实时分析
5.1业务背景
5.1.1案例背景
5.1.2设计目标
5.1.3数据规模预估
5.1.4数据格式
5.1.5统计分析需求
5.2系统架构与模块设计
5.2.1整体架构
5.2.2数据源
5.2.3日志采集
5.2.4数据存储
5.2.5数据处理
5.2.6目标存储和扩展服务
5.2.7结果Web展示
5.3核心模块实现
5.3.1模拟数据实现
5.3.2日志采集和存储实现
5.3.3数据处理实现
5.3.4Web展示实现
5.4本章小结
第6章实例3:交通--基于GPS的实时路况分析
6.1业务背景
6.1.1案例背景
6.1.2设计目标
6.1.3数据格式
6.1.4实时路况分析方法
6.2系统架构和模块设计
6.3核心模块的实现
6.3.1安装Kafka集群
6.3.2Flume整合Kafka
6.3.3实时处理数据
6.3.4Web页面展示
6.4本章小结
第7章实例4:互联网--数据质量实时监控
7.1业务背景
7.1.1案例背景
7.1.2设计目标
7.1.3数据格式
7.2系统架构与模块设计
7.2.1整体架构
7.2.2结果Web展示
7.3核心模块实现
7.3.1模拟数据
7.3.2实时处理业务逻辑的实现
7.3.3Web界面实现
7.3.4最终效果图
7.4本章小结
第8章实例5:交通--超速频发路段监控
8.1业务背景
8.1.1案例背景
8.1.2数据类型
8.2系统架构和模块设计
8.3核心模块实现
8.3.1实现入口类Main
8.3.2数据源SocketSpout的实现
8.3.3实时处理MapSearchBolt和SpeedProcessBolt的实现
8.3.4目标存储DataBaseLoadBolt的实现
8.4本章小结
第9章实例6:互联网--广告实时流量统计
9.1广告实时流量统计系统架构
9.1.1广告数据
9.1.2详细需求描述
9.1.3系统架构
9.2表结构与模块设计
9.2.1表结构设计
9.2.2功能模块设计
9.3核心模块实现
9.3.1部署物理集群环境
9.3.2Kafka生产者逻辑的实现
9.3.3使用Stormkafka实现业务逻辑
9.3.4使用HBase存储并实现统计
9.4本章小结
技巧篇
第10章Storm常见故障及解决方法
10.1安装部署故障
10.1.1"nojzmqinjava.library.path"异常
10.1.2"Noruletomaketarget"异常
10.1.3"cannotaccessorg.zeromq.ZMQ"异常
10.1.4缺少pkgconf?ig异常
10.1.5"java.lang.Unsatisf?iedLinkError"异常
10.1.6"java.lang.NoClassDefFoundError:clojure.core.protocols$"异常
10.1.7"Error:cannotlinkwithluuid,installuuiddev"异常
10.1.8"badinterpreter:Nosuchf?ileordirectory"异常
10.1.9"org.zeromq.ZMQException:Invalidargument"异常
10.2启动故障
10.2.1"java.io.FileNotFoundException"异常
10.2.2"java.io.EOFException"异常
10.3运行时故障
10.3.1"Nimbushostisnotset"异常
10.3.2"AlreadyAliveException(msg:xxxisalreadyactive)"异常
10.3.3无法序列化log4j.Logger异常
10.3.4"Failingmessage"异常
10.3.5"java.io.NotSerializableException"异常
10.3.6"java.lang.NoClassDefFoundError"异常
10.3.7"java.net.NoRouteToHostException"异常
10.3.8"java.net.UnknownHostException"异常
10.3.9重复defaults.yaml资源文件异常
10.3.10"KeeperException$NoNodeException"异常
10.3.11"AfatalerrorhasbeendetectedbytheJavaRuntimeEnvironment"错误
10.3.12"java.lang.ArrayIndexOutOfBoundsException"异常
10.3.13DRPC空指针异常
10.3.14StormThrift读取数据报错
10.4本章小结
第11章Storm使用技巧和实践
11.1核心组件使用要点
11.1.1Spout和Bolt
11.1.2ZooKeeper集群尽量独立
11.1.3Thrift服务的应用场景
11.1.4序列化机制的使用场景
11.2集群配置技巧
11.2.1默认参数配置
11.2.2日志信息
11.2.3合理配置JVM参数
11.3集群运维技巧
11.3.1Storm计算结果的存储位置
11.3.2Storm集群动态增删节点
11.3.3关闭Storm相关进程
11.3.4StormUI显示内容的问题
11.4项目开发技巧
11.4.1使用assembly插件打包
11.4.2依赖JAR冲突
11.5保障消息的处理
11.5.1消息失败后的处理
11.5.2主动干预性
11.5.3处理重复的Tuple
11.6理解DRPC原语
11.6.1DRPC工作流
11.6.2LinearDRPCTopologyBuilder实现类
11.6.3DRPC的两种模式
11.7快速理解一致性事务
11.7.1Trident框架的使用
11.7.2Trident框架的细节
11.7.3事务性Spout
11.7.4状态State
11.8本章小结