《Storm技术内幕与大数据实践》內容关键紧紧围绕即时大信息系统的各个领域进行,从即时服务平台整体详细介绍到集群服务器源代码、运维管理监控器、即时系统软件拓展、以客户画像主导的大数据平台,最终到强烈推荐、广告词、检索等实际的大数据的应用。书中提及的许多难题是具体环境中由于信息量提高而碰到的某些真實难题,对将要或已经应用即时系统软件解决互联网大数据难题的精英团队会进而协助。
目录
- 第1章 绪论 1
- 1.1 Storm的基本组件 2
- 1.1.1 集群组成 2
- 1.1.2 核心概念 3
- 1.1.3 Storm的可靠性 5
- 1.1.4 Storm的特性 6
- 1.2 其他流式处理框架 6
- 1.2.1 Apache S4 6
- 1.2.2 Spark Streaming 6
- 1.2.3 流计算和Storm的应用 7
- 第2章 实时平台介绍 11
- 2.1 实时平台架构介绍 11
- 2.2 Kafka架构 13
- 2.2.1 Kafka的基本术语和概念 13
- 2.2.2 Kafka在实时平台中的应用 14
- 2.2.3 消息的持久化和顺序读写 15
- 2.2.4 sendfile系统调用和零复制 15
- 2.2.5 Kafka的客户端 17
- 2.2.6 Kafka的扩展 17
- 2.3 大众点评实时平台 17
- 2.3.1 相关数据 18
- 2.3.2 实时平台简介 18
- 2.3.3 Blackhole 19
- 2.4 1号店实时平台 20
- 第3章 Storm集群部署和配置 23
- 3.1 Storm的依赖组件 23
- 3.2 Storm的部署环境 24
- 3.3 部署Storm服务 24
- 3.3.1 部署ZooKeeper 24
- 3.3.2 部署Storm 25
- 3.3.3 配置Storm 25
- 3.4 启动Storm 28
- 3.5 Storm的守护进程 28
- 3.6 部署Storm的其他节点 30
- 3.7 提交Topology 30
- 第4章 Storm内部剖析 33
- 4.1 Storm客户端 33
- 4.2 Nimbus 36
- 4.2.1 启动Nimbus服务 36
- 4.2.2 Nimbus服务的执行过程 38
- 4.2.3 分配Executor 44
- 4.2.4 调度器 46
- 4.2.5 默认调度器DefaultScheduler 47
- 4.2.6 均衡调度器EvenScheduler 50
- 4.3 Supervisor 53
- 4.3.1 ISupervisor接口 54
- 4.3.2 Supervisor的共享数据 54
- 4.3.3 Supervisor的执行过程 56
- 4.4 Worker 61
- 4.4.1 Worker中的数据流 61
- 4.4.2 创建Worker的过程 62
- 4.5 Executor 65
- 4.5.1 Executor的创建 66
- 4.5.2 创建Spout的Executor 69
- 4.5.3 创建Bolt的Executor 74
- 4.6 Task 76
- 4.6.1 Task的上下文对象 77
- 4.6.2 Task的创建 82
- 4.7 Storm中的统计 84
- 4.7.1 stats框架 85
- 4.7.2 metric框架 90
- 4.8 Ack框架 91
- 4.8.1 Ack的原理 92
- 4.8.2 Acker Bolt 94
- 4.9 Storm总体架构 95
- 第5章 Storm运维和监控 97
- 5.1 主机信息监控 97
- 5.1 日志和监控 98
- 5.2 Storm UI和NimbusClient 99
- 5.3 Storm Metric的使用 100
- 5.4 Storm ZooKeeper的目录 102
- 5.5 Storm Hook的使用 104
- 第6章 Storm的扩展 107
- 6.1 Storm UI的扩展 107
- 6.1.1 Storm UI原生功能 108
- 6.1.2 Storm UI新功能需求 108
- 6.1.3 Storm的Thrift接口 109
- 6.2 资源隔离 110
- 6.2.1 CGroup测试 111
- 6.2.2 基于CGroup的资源隔离的实现 119
- 第7章 Storm开发 121
- 7.1 简单示例 121
- 7.2 调试和日志 122
- 7.3 Storm Trident 124
- 7.4 Strom DRPC 128
- 第8章 基于Storm的实时数据平台 129
- 8.1 Hadoop到Storm的代码迁移经验 129
- 8.2 实时用户画像 130
- 8.2.1 简单实时画像 130
- 8.2.2 实时画像优化 131
- 8.2.3 实时画像的毫秒级更新 133
- 8.3 其他场景画像 135
- 8.4 画像的兴趣度模型构建 136
- 8.5 外部画像融合经验分享 138
- 8.6 交互式查询和分析用户画像 142
- 8.7 实时产品和店铺信息更新 143
- 第9章 大数据应用案例 145
- 9.1 实时DAU计算 145
- 9.2 实时个性化推荐 150
- 9.2.1 推荐系统介绍 150
- 9.2.2 实时推荐系统的方法 153
- 9.2.3 基于Storm的实时推荐系统 156
- 9.3 广告投放的精准化 158
- 9.3.1 点击率预测 158
- 9.3.2 搜索引擎营销 161
- 9.3.3 精准化营销与千人千面 161
- 9.4 实时意图和搜索 164
- 9.4.1 用户意图预测 165
- 9.4.2 搜索比价 167
- 9.4.3 搜索排序 168
- 第10章 Storm使用经验和性能优化 171
- 10.1 使用经验 171
- 10.1.1 使用rebalance命令动态调整并发度 171
- 10.1.2 使用tick消息做定时器 172
- 10.1.3 使用组件的并行度代替线程池 174
- 10.1.4 不要用DRPC批量处理大数据 174
- 10.1.5 不要在Spout中处理耗时的操作 174
- 10.1.6 log4j的使用技巧 175
- 10.1.7 注意fieldsGrouping的数据均衡性 176
- 10.1.8 优先使用localOrShuffleGrouping 176
- 10.1.9 设置合理的MaxSpoutPending值 177
- 10.1.10 设置合理的Worker数 177
- 10.1.11 平衡吞吐量和时效性 178
- 10.2 性能优化 179
- 10.2.1 找到Topology的性能瓶颈 179
- 10.2.2 GC参数优化 181
- 10.3 性能优化原则 181
- 附录A Kafka原理 183
- 附录B 将Storm源码导入Eclipse 191