首页>参考读物>计算机科学与技术>软件与程序设计

Storm企业级应用:实战、运维和调优
作者 : 马延辉 陈书美 雷葆华 著
丛书名 : 大数据技术丛书
出版日期 : 2015-06-15
ISBN : 978-7-111-50338-5
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 254
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

内容简介
这是一本真正能让读者通过真实的企业应用实践掌握如何应用Storm处理各种大数据业务的著作。作者是国内顶尖的大数据专家,深谙初学者的难处和企业的实际需求,在此基础上巧妙地安排和组织了本书的内容,旨在让读者能达到事半功倍的效果。
本书没有过于繁琐和高深的理论,先系统介绍了Storm的设计思想、核心组件和适用场景,生产环境的搭建和部署,以及核心概念和数据模型;然后通过实时语音处理、网络流量分析、实时路况分析、数据质量实时监控、交通路况监控、广告实时流量统计等6典型的企业级案例讲解了如何应用Storm处理各种类型的大数据业务,每个案例都包括背景介绍、系统架构、模块设计和逻辑实现等组成部分,讲解十分详尽;最后从运维角度总结了Storm在安装部署、启动、运行等环节可能会出现的各种故障并给出了解决方案,以及Storm的各种技巧和最佳实践。

图书特色

国内资深大数据专家根据Storm最新技术撰写,基于实际生产环境,从实战、运维和调优3个维度对Storm进行了详细的讲解
全面介绍Storm的架构、原理、核心概念、操作和数据流模型;6个不同领域的经典案例完整呈现大型数据应用系统的设计;系统总结了Storm常见运维故障的处理以及常用的技巧和最佳实践

“Storm大大简化了面向庞大规模数据流的处理机制,从而在实时处理领域扮演着Hadoop之于批量处理领域的重要角色”——这是Storm官方项目所说的一句话,可见其在实时数据流处理领域的优势。为了达成上述目标,Storm在设计思路中充分考虑到大规模可扩展能力、利用一套“故障快速、自动重启”方案为实时处理提供容错性支持,从而有力地保证了每个元组都能切实得到处理。Storm是一套极具可扩展能力、快速惊人且具备容错能力的开源分布计算系统,其高度专注于流处理领域。Storm在事件处理与增量计算方面表现突出,能够以实时方式根据不断变化的参数对数据流进行处理。尽管Storm同时提供原语以实现通用性分布RPC并在理论上能够被用于任何分布式计算任务的组成部分,但其最为根本的优势仍然表现在事件流处理方面。
本书强调Storm在企业的实际应用,旨在帮助企业切实解决实时计算技术如何落地的问题。三位作者都是奋战在中国大数据技术一线的实战派专家,本书是他们实践经验的结晶。

本书内容在三个维度上具有重要特色:
理论维度,深入分析了Storm的架构设计、基本概念和原理。
实战维度,通过6个典型的、不同行业的应用案例详细讲解了如何使用Storm设计大型的数据应用系统。
技巧维度,从Storm的常见故障及解决方法、使用技巧和最佳实践进行介绍。

作者简介
马延辉 资深Hadoop技术专家,曾就职于淘宝、Answers.com、暴风等互联网公司,从事Hadoop相关的研发和运维工作,对大数据技术的企业级落地、研发、运维和管理方面有着深刻理解和丰富的实战经验。开源HBase监控工具Ella作者。在国内Hadoop社区内非常活跃,经常在各种会议和沙龙上做技术分享,深受欢迎。现在致力于大数据技术在传统行业的落地,以及大数据技术的普及和推广。著有畅销书《HBase企业应用开发实战》,HBase领域公认最有价值的著作之一。
陈书美 高级数据分析工程师,对Storm实时数据计算、Kafka消息系统分析有深入的研究和丰富的实践经验,并对HDFS、MapReduce、Hive、HBase等Hadoop生态系统内的技术有系统且深刻的了解。曾就职于暴风影音,负责大数据应用等开发工作;目前就职于百度,从事数据分析工作。
雷葆华 武汉绿色网络信息服务有限公司副总经理,负责公司大数据、SDN/NFV等新产品的研发工作。业界知名的云计算专家,中国电子学会云计算专委会委员。创业之前曾任中国电信北京研究院云计算产品线总监,是中国电信云计算工作主要发起者和推动者之一,在CDN、P2P、IDC等方面都有深入研究。提交专利28项,已授权专利8项,发表多篇有影响力的论文和文章,多次获得部级科技进步奖励。
著有《云计算解码》、《CDN技术详解》、《SDN核心技术剖析和实战指南》等多部畅销著作并获得多个奖项。

内容简介
这是一本真正能让读者通过真实的企业应用实践掌握如何应用Storm处理各种大数据业务的著作。作者是国内顶尖的大数据专家,深谙初学者的难处和企业的实际需求,在此基础上巧妙地安排和组织了本书的内容,旨在让读者能达到事半功倍的效果。
本书没有过于繁琐和高深的理论,先系统介绍了Storm的设计思想、核心组件和适用场景,生产环境的搭建和部署,以及核心概念和数据模型;然后通过实时语音处理、网络流量分析、实时路况分析、数据质量实时监控、交通路况监控、广告实时流量统计等6个典型的企业级案例讲解了如何应用Storm处理各种类型的大数据业务,每个案例都包括背景介绍、系统架构、模块设计和逻辑实现等组成部分,讲解十分详尽;最后从运维角度总结了Storm在安装部署、启动、运行等环节可能会出现的各种故障并给出了解决方案,以及Storm的各种技巧和最佳实践。

图书前言

为什么写作本书
大数据是继云计算、物联网之后IT行业又一大颠覆性的技术变革。之前大数据在互联网、军事、金融、通信和物理学等领域已有不少落地案例,却因为近年来Hadoop技术的快速发展而引起业界广泛关注。可以说,Hadoop目前是大数据处理的关键技术,也是迄今为止,最成熟、应用最广泛的技术。但是Hadoop生态圈下面的数据处理几乎都是在离线状态下进行的,离线处理海量数据是比较耗时、耗力的,Storm的实时处理技术应运而生。正如曾经开发Storm的一位主要工程师所谈到的,Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm用于实时处理,就好比Hadoop用于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息,更棒的是可以使用任意编程语言来开发。因此在节省时间、人力的情况下,Storm的优势就充分体现了。
现在有关Storm的中文学习资料非常少,这给不少研发人员带来了很大的难度。尽管现在市面上已经有几本Storm的中文书籍,但是,这些书籍多是翻译过来的,语言组织不符合国人的习惯,并且实例讲解部分也不能切合本土国情。还有,这些书分别侧重了某一个方面,如理论、实战、运维等,还没有一本书能够非常系统地阐述Storm框架。本书正是为了解决以上的各种问题而撰写的,这也是国内第一本系统讲解Storm理论、实战、运维和调优的书籍。
写作本身还有一个重要因素——让大家少走弯路。这一点笔者感同身受,在使用Storm之前,开始调研、搜集、了解Storm是比较痛苦的过程,由于网上的资料参差不齐,也没有比较完全系统的实战类书籍,因此尽管自己文笔很差,也想把自己了解的,以及实战过的东西,总结出来供大家参考,帮大家少走些弯路,让Storm为我们多做点事情。
本书以Storm 0.8.2为基础,不仅深入探讨了Storm的原理架构和数据模型,更重要的是通过实战案例教给读者如何运用Storm框架来设计、搭建以及实时计算海量数据,同时结合生产案例剖析Storm的运维和性能调优的技巧。
读者对象
本书适合以下读者阅读:
(1)云计算、大数据处理技术和分布式计算处理数据爱好者
“大数据”无疑是继“云计算”之后IT业界上最热的词汇。而云计算、大数据、实时处理数据本身存在交集,现在不少涉猎大数据的,以及要求数据时效性的公司已经开始深入了解Storm,本书讲解的Storm是实时处理数据的一种工具。本书可以帮助这部分读者快速而全面地了解Storm的原理、架构、使用场景和细节知识点,理解Storm在云计算、大数据时代处理数据的重要性。
(2)对实时处理数据感兴趣的开发人员
Hadoop技术在近几年非常热,已经是大数据处理的关键技术,而Storm作为Hadoop生态系统不足之处的补充者,已经被越来越多的公司用来满足数据实时处理的需求。本书可以帮助这部分读者详细了解Storm与Hadoop之间的不同之处,涉及Storm的基本概念、核心知识点和高级特性,并且结合实战案例讲解,使读者可以快速掌握Storm的使用。
(3)开源软件爱好者
Storm作为Twitter开源的项目,其实现过程中吸收了很多开源领域的优秀思想,值得我们深入研究和学习。本书在讲解过程中剖析了不少Storm的源代码,可以帮助该部分读者了解和掌握Storm框架源代码的设计方法和技巧。
(4)对Clojure语言编程感兴趣的开发人员
Storm是由BackType开发的实时处理系统,基本是用Clojure写的。因此了解Clojure语言对于快速掌握Storm有很大的帮助,同时如果对Clojure语言感兴趣,也可以借助Storm进行学习。
如何阅读本书
本书共11章,分为三篇。
基础篇(第1~3章),介绍了Storm背景、基本原理、安装部署、核心概念和数据流模型。
实战篇(第4~9章),通过6个典型的应用案例和代码示例,结合实践技巧和理论知识,深入讲解如何使用Storm设计大型数据应用系统。
技巧篇(第10~11章),重点介绍了Storm的高级特性、运维监控和性能调优等,并结合生产系统的性能优化、运维经验和使用技巧等方面进行讲解,旨在提升读者的实际操作经验。
如果你是一名具备一定的Storm基础知识和使用经验的用户,那么可以直接阅读后两篇。实战篇侧重案例实战,技巧篇侧重技巧性能,请读者自行选择阅读。但是,如果你是一名初学者,请一定从第1章的基础理论知识开始学习。本书所有章节的源码都托管在Github上,地址是https://github.com/mayanhui/storm-in-action。
勘误和支持
由于笔者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。你可以将书中的错误发布在站点页面http://www.adintelling.com/storm-in-action/的留言中,同时如果你遇到任何问题,也可以访问该页面,我们将尽量在线上为读者提供最满意的解答。
致谢
首先要感谢Twitter公司将Storm开源,感谢其麾下的BackType团队成员对开源软件和开源社区做出的巨大贡献。
感谢一直以来帮助过我们的众多开源社区,这样的平台让我们认识了很多圈子里的同行,使我从技术和思想的碰撞中受益匪浅。
感谢对我们有过帮助的Nathan Marz、徐明明、向磊、赵修湘、史东杰、廖旻可、王成祥、何定巍、卢亿雷等人。
感谢普开第一期大数据就业班的所有同学,他们的大力支持和关心让我们倍感欣慰和鼓舞。
感谢机械工业出版社华章分社的编辑杨福川和姜影,在这一年多的时间中始终支持我们的写作,他们的鼓励和帮助引导我们能顺利完成本书。
最后感谢我们的爸爸、妈妈、爷爷、奶奶,感谢他们的养育之恩,并时时刻刻为我们灌输着信心和力量!
谨以此书献给我们最亲爱的家人,以及众多热爱Storm的朋友们!

上架指导

计算机科学/大数据分析与处理

封底文字

“Storm大大简化了面向庞大规模数据流的处理机制,从而在实时处理领域扮演着Hadoop之于批量处理领域的重要角色”——这是Storm官方项目所说的一句话,可见其在实时数据流处理领域的优势。为了达成上述目标,Storm在设计思路中充分考虑到大规模可扩展能力、利用一套“故障快速、自动重启”方案为处理提供容错性支持、从而有力地保证了每个元组都能切实得到处理。Storm是一套极具可扩展能力、快速惊人且具备容错能力的开源分布计算系统,其高度专注于流处理领域。Storm在事件处理与增量计算方面表现突出,能够以实时方式根据不断变化的参数对数据流进行处理。尽管Storm同时提供原语以实现通用性分布RPC并在理论上能够被用于任何分布式计算任务的组成部分,但其最为根本的优势仍然表现在事件流处理方面。
本书强调Storm在企业的实际应用,旨在帮助企业切实解决实时计算技术如何落地的问题。三位作者都是奋战在中国大数据技术一线的实战派专家,本书是他们实践经验的结晶。
本书内容在三个维度上具有重要特色:
? 理论维度,则深入分析了Storm的架构设计、基本概念和原理。
? 实战维度,通过6个典型的、不同行业的应用案例详细讲解了如何使用Storm设计大型的数据应用系统。
? 技巧维度,从Storm的常见故障及解决方法、使用技巧和最佳实践进行介绍。

作者简介

马延辉 陈书美 雷葆华 著:暂无简介

图书目录

前 言
基 础 篇
第1章 认识Storm 2
1.1 什么是实时流计算 2
1.1.1 实时流计算背景 3
1.1.2 实时计算应用场景 3
1.1.3 实时计算处理流程 4
1.1.4 实时计算框架 5
1.2 Storm是什么 11
1.2.1 Storm出现的背景 12
1.2.2 Storm简介 12
1.2.3 Storm的设计思想 13
1.2.4 Storm与Hadoop的角色和组件比较 14
1.3 Storm核心组件 15
1.3.1 主节点Nimbus 15
1.3.2 工作节点Supervisor 15
1.3.3 协调服务组件ZooKeeper 16
1.3.4 其他核心组件 16
1.4 Storm的特性 16
1.5 Storm的功能 18
1.6 本章小结 19
第2章 开始使用Storm 20
2.1 环境准备 20
2.1.1 系统配置 20
2.1.2 安装ZooKeeper集群 22
2.2 启动模式 26
2.2.1 本地模式 26
2.2.2 分布式模式 26
2.3 安装部署Storm集群 26
2.3.1 安装Storm依赖库 27
2.3.2 安装Storm集群 28
2.3.3 启动Storm集群 31
2.3.4 停止Storm集群 33
2.4 创建Topology并向集群提交任务 33
2.4.1 创建Topology 34
2.4.2 向集群提交任务 36
2.5 本章小结 36
第3章 核心概念和数据流模型 37
3.1 Tuple元组 37
3.1.1 Tuple描述 37
3.1.2 Tuple的生命周期 38
3.2 Spout数据源 39
3.2.1 Spout介绍 39
3.2.2 Spout实例 40
3.3 Bolt消息处理者 42
3.3.1 Bolt介绍 42
3.3.2 Bolt实例 45
3.4 Topology拓扑 47
3.4.1 Topology实例 48
3.4.2 Topology运行 51
3.5 Stream消息流和Stream Grouping消息流组 55
3.5.1 Stream消息流 55
3.5.2 Stream Grouping消息流组 55
3.6 Task任务 56
3.7 Worker工作者进程 56
3.8 Worker、Task、Executor三者之间的关系 57
3.9 事务 57
3.10 数据流模型 58
3.10.1 数据流模型简介 58
3.10.2 Storm数据流模型 60
3.11 本章小结 61
实 战 篇
第4章 实例1:移动互联——语音“实时墙” 64
4.1 业务背景 64
4.1.1 案例背景 64
4.1.2 设计目标 65
4.1.3 数据格式 66
4.1.4 硬件配置 68
4.2 系统架构与模块设计 68
4.2.1 整体架构 69
4.2.2 数据采集 70
4.2.3 数据实时处理 70
4.2.4 存储设计 70
4.2.5 Web实时展示 71
4.2.6 硬件部署图 72
4.3 核心模块实现 73
4.3.1 实时处理业务逻辑实现 73
4.3.2 Web展示实现 80
4.3.3 最终效果呈现 88
4.4 本章小结 89
第5章 实例2:运营商——网络流量流向实时分析 90
5.1 业务背景 90
5.1.1 案例背景 91
5.1.2 设计目标 91
5.1.3 数据规模预估 92
5.1.4 数据格式 92
5.1.5 统计分析需求 93
5.2 系统架构与模块设计 94
5.2.1 整体架构 94
5.2.2 数据源 95
5.2.3 日志采集 96
5.2.4 数据存储 96
5.2.5 数据处理 97
5.2.6 目标存储和扩展服务 97
5.2.7 结果Web展示 97
5.3 核心模块实现 98
5.3.1 模拟数据实现 98
5.3.2 日志采集和存储实现 102
5.3.3 数据处理实现 105
5.3.4 Web展示实现 111
5.4 本章小结 114
第6章 实例3:交通——基于GPS的实时路况分析 115
6.1 业务背景 115
6.1.1 案例背景 115
6.1.2 设计目标 116
6.1.3 数据格式 118
6.1.4 实时路况分析方法 118
6.2 系统架构和模块设计 118
6.3 核心模块的实现 121
6.3.1 安装Kafka集群 121
6.3.2 Flume整合Kafka 124
6.3.3 实时处理数据 125
6.3.4 Web页面展示 127
6.4 本章小结 129
第7章 实例4:互联网——数据质量实时监控 130
7.1 业务背景 130
7.1.1 案例背景 130
7.1.2 设计目标 132
7.1.3 数据格式 132
7.2 系统架构与模块设计 133
7.2.1 整体架构 133
7.2.2 结果Web展示 135
7.3 核心模块实现 135
7.3.1 模拟数据 135
7.3.2 实时处理业务逻辑的实现 141
7.3.3 Web界面实现 147
7.3.4 最终效果图 150
7.4 本章小结 152
第8章 实例5:交通——超速频发路段监控 153
8.1 业务背景 153
8.1.1 案例背景 153
8.1.2 数据类型 155
8.2 系统架构和模块设计 157
8.3 核心模块实现 158
8.3.1 实现入口类Main 158
8.3.2 数据源SocketSpout的实现 159
8.3.3 实时处理MapSearchBolt和SpeedProcessBolt的实现 161
8.3.4 目标存储DataBaseLoadBolt的实现 169
8.4 本章小结 171
第9章 实例6:互联网——广告实时流量统计 172
9.1 广告实时流量统计系统架构 172
9.1.1 广告数据 172
9.1.2 详细需求描述 174
9.1.3 系统架构 175
9.2 表结构与模块设计 177
9.2.1 表结构设计 177
9.2.2 功能模块设计 178
9.3 核心模块实现 179
9.3.1 部署物理集群环境 179
9.3.2 Kafka生产者逻辑的实现 181
9.3.3 使用Storm-kafka实现业务逻辑 182
9.3.4 使用HBase存储并实现统计 193
9.4 本章小结 194
技 巧 篇
第10章 Storm常见故障及解决方法 196
10.1 安装部署故障 196
10.1.1 “no jzmq in java.library.path”异常 196
10.1.2 “No rule to make target”异常 198
10.1.3 “cannot access org.zeromq.ZMQ”异常 198
10.1.4 缺少pkg-conf ig异常 198
10.1.5 “java.lang.Unsatisf iedLinkError”异常 199
10.1.6 “java.lang.NoClassDefFoundError:clojure.core.protocols$”异常 199
10.1.7 “Error:cannot link with -luuid,install uuid-dev”异常 199
10.1.8 “bad interpreter:No such f ile or directory”异常 200
10.1.9 “org.zeromq.ZMQException:Invalid argument”异常 200
10.2 启动故障 201
10.2.1 “java.io.FileNotFoundException”异常 201
10.2.2 “java.io.EOFException”异常 202
10.3 运行时故障 202
10.3.1 “Nimbus host is not set”异常 203
10.3.2 “AlreadyAliveException(msg:xxx is alreadyactive)”异常 203
10.3.3 无法序列化log4j.Logger异常 203
10.3.4 “Failing message”异常 203
10.3.5 “java.io.NotSerializableException”异常 204
10.3.6 “java.lang.NoClassDefFoundError”异常 205
10.3.7 “java.net.NoRouteToHostException”异常 206
10.3.8 “java.net.UnknownHostException”异常 206
10.3.9 重复defaults.yaml资源文件异常 207
10.3.10 “KeeperException$NoNodeException”异常 208
10.3.11 “A fatal error has been detected by the Java Runtime Environment”错误 209
10.3.12 “java.lang.ArrayIndexOutOfBoundsException”异常 212
10.3.13 DRPC空指针异常 212
10.3.14 Storm Thrift读取数据报错 212
10.4 本章小结 214
第11章 Storm使用技巧和最佳实践 215
11.1 核心组件使用要点 215
11.1.1 Spout和Bolt 215
11.1.2 ZooKeeper集群尽量独立 219
11.1.3 Thrift服务的应用场景 220
11.1.4 序列化机制的使用场景 220
11.2 集群配置技巧 220
11.2.1 默认参数配置 220
11.2.2 日志信息 223
11.2.3 合理配置JVM参数 223
11.3 集群运维技巧 224
11.3.1 Storm计算结果的存储位置 224
11.3.2 Storm集群动态增删节点 224
11.3.3 关闭Storm相关进程 224
11.3.4 Storm UI显示内容的问题 224
11.4 项目开发技巧 225
11.4.1 使用assembly插件打包 225
11.4.2 依赖JAR冲突 228
11.5 保证消息的可靠处理 228
11.5.1 消息失败后的处理 228
11.5.2 主动干预可靠性 229
11.5.3 处理重复的Tuple 229
11.6 理解DRPC原语 230
11.6.1 DRPC工作流 230
11.6.2 LinearDRPCTopologyBuilder实现类 231
11.6.3 DRPC的两种模式 231
11.7 快速理解一致性事务 232
11.7.1 Trident框架的使用 233
11.7.2 Trident框架的细节 234
11.7.3 事务性Spout 236
11.7.4 状态State 238
11.8 本章小结 241

教学资源推荐
作者: [加拿大] 马丁·P.罗毕拉德(Martin P. Robillard) 著
作者: 吴黎兵 周畅 宋麟
作者: [美]本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup) 著
作者: 刘海燕 荆涛 主编 王子强 武卉明 杨健康 周睿 编著
参考读物推荐
作者: [印]纳拉辛哈·卡鲁曼希(Narasimha Karumanchi) 著
作者: 刘凤飞 曾茜 编著
作者: (美)Ashutosh Nandeshwar 著