具体描述
产品特色
内容简介
《Storm分布式实时计算模式》由Apache Storm 项目核心贡献者吉奥兹、奥尼尔亲笔撰 写,融合了作者丰富的Storm实战经验,通过大量 示例,全面而系统地讲解使用Storm进行分布式实 时计算的核心概念及应用,并针对不同的应用场 景,给出多种基于Storm的设计模式,为读者快速 掌握Storms分布式实时计算提供系统实践指南。
《Storm分布式实时计算模式》分为10章:第l章介绍使用storm建立一 个分布式流式计算应用所涉及的核心概念,包括 storm的数据结构、开发环境的搭建,以及Storm 程序的开发和调试技术等;第2章详细讲解storm 集群环境的安装和搭建,以及如何将topology部署 到分布式环境中;第3章通过传感器数据实例详细 介绍Trident topology;第4章讲解如何使用Storm 和Tridentj挂行实时趋势分析;第5章介绍如何使用 Storm进行图形分析,将数据持久化存储在图形数 据库中,通过查询数据来发现其中潜在的联系;第 6章讲解如何在Storm上使用递归实现一个典型的人 工智能算法;第7章演示集成Storm和非事务型系统 的复杂性,通过集成Storm和开源探索性分析架构 Druid实现一个可配置的实时系统来分析金融事件。
第8章探讨Lambda体系结构的实现方法,讲解如何 将批处理机制和实时处理引擎结合起来构建一个可 纠错的分析系统;第9章讲解如何将Pig脚本转化为 topology,并且使用Storm-YARN部署topology,从 而将批处理系统转化为实时系统;第10章介绍如 何在云服务提供商提供的主机环境下部署和运行 Storm。
内页插图
目录
前言
作者简介
第1章 分布式单词计数
1.1 Storm topology的组成部分——stream、spout和bolt
1.1.1 Storm
1.1.2 spout
1.1.3 bolt
1.2 单词计数topology的数据流
1.2.1 语句生成bolt
1.2.2 语句分割bolt
1.2.3 单词计割bolt
1.2.4 上报bolt
1.3 实现单词计数top
1.3.1 配置开发环境
1.3.2 实现Sentence
1.3.3 实现语句分割bolt
1.3.4 实现单词计割bolt
1.3.5 实现上报bolt
1.3.6 实现单词计数topo
1.4 Storm的并发机制
1.4.1 WordCountTopology的并发机制
1.4.2 给topology增加woker
1.4.3 配置executor和task
1.5 理解数据流分组
1.6 有保障机制的数据处理
1.6.1 spout的可靠性
1.6.2 bolt的可靠性
1.6.3 可靠的单词计数
总结
第2章 配置Storm集群
2.1 Storm集群的框架
2.1.1 理解nimbus守护进程
2.1.2 supervisor守护进程的工作方式
2.1.3 Apache ZooKeeper简介
……
第3章 Trident和传感器数据
第4章 实时趋势分析
第5章 实时图形分析
第6章 人工智能
第7章 整合Druid进行金融分析
第8章 自然语言处理
第9章 在Hadoop上部署Storm进行广告分析
第10章 云环境下的S
前言/序言
目前对信息高时效性、可操作性的需求不断增长,这要求软件系统在更少的时间内能处理更多的数据。随着可连接设备数量不断增加,以及在众多行业领域广泛应用,这种信息需求已无处不在。传统企业的运营系统被迫处理原先只有互联网企业才会遇到的大规模数据。这种重大转变正不断瓦解传统架构和解决方案,传统上会将在线事务处理和离线分析分割开来。与此同时,人们正在重新勾勒从数据中提取信息的意义和价值。软件框架和基础设施也在不断进化,以适应这种新场景。 具体地说,数据的生成可以看作一连串发生的离散事件,这些事件流会伴随着不同的数据流、操作和分析,都会由一个通用的软件框架和基础设施来处理。 Storm正是最流行的实时流计算框架之一,它提供了可容错分布式计算所要求的基本原语和保障机制,可以满足大容量关键业务应用的需求。它不但是一套技术的整合,也是一种数据流和控制的机制。很多大公司都将Storm作为大数据处理平台的核心部分。 尝试使用本书中介绍的设计模式,你将学到开发、部署、运营数据处理的流程,它具有每天或者每小时处理上亿次事务的能力。 本书介绍了多种分布式计算相关的主题,包括设计和集成的模式,还介绍了这些技术常见的适用领域和具体应用。本书通过实际示例,从最简单的topology出发,首先向用户介绍了Storm基础,然后通过更复杂的示例,逐步引入Storm的高级概念、更细致的部署方案以及运营中需要关注的事项。 主要内容 第1章介绍了使用Storm进行分布式流式计算的核心概念。分布式单词计数这个例子中展示的数据结构、技术和设计模式都是后续进行更复杂计算的基础。在该章中,我们会对Storm计算架构有一个基本了解。还将学会搭建Storm开发环境,了解开发和调试Storm应用的技术。 第2章进一步介绍Storm技术架构和安装部署Storm集群的过程。在该章中,我们会通过配置工具Puppet来自动化安装和部署一个多节点Storm集群。 第3章主要介绍Trident topology。Trident在Storm基础之上提供了高级抽象,抽象了事务处理和状态管理的细节。该章使用Trident框架处理、聚合、过滤来自传感器的数据,以检测传染病是否爆发。 第4章介绍使用Storm和Trident进行实时趋势分析。实时趋势分析引入了在数据流中进行识别的模式。在该章中,你将会整合Apache Kafka队列并且通过实现一个滑动窗口来计算移动平均数。 第5章介绍了使用Storm进行基于图的数据分析,首先将数据持久化到图形数据库,再通过查询数据来发现关系。图形数据库将数据按照顶点、边、属性的图形结构进行存储,聚焦于实体间的关系。在该章中,我们将Strom和一种流行的图形数据库Titan进行整合,使用Twitter作为数据源。 第6章介绍在Storm上使用递归实现一个典型的人工智能算法。该章展现了Strom的局限性,并检视设计模式来适应这些局限。通过分布式远程调用(Distributed Remote Procedure Call, DRPC),你会实现一个提供同步查询服务的Storm topology,用来决定井字棋游戏下一步怎样走最好。 第7章演示整合Storm和非事务型系统的复杂性。为了支持这种整合,介绍一种通过ZooKeeper进行分布式状态管理的设计模式。该章通过整合Strom和开源探索性分析架构Druid,实现一个可配置的实时系统来分析金融事件。 第8章介绍Lambda系统架构的概念,结合实时系统和批处理来构建一个可纠错的分析系统。在第7章的基础上,你将会融入Hadoop的基础设施并且检视如何使用一个MapReduce job对Druid中可能出现的主机故障事件进行纠错。 第9章演示将一个Hadoop上运行的Pig语言编写的批处理job转化为一个实时的Storm topology。你可以利用Storm-YARN来实现这个功能,这个工具可以使用户使用YARN来部署和运行Storm集群。在Hadoop上运行Storm系统,企业可以在同一套基础设施上同时运行与利用实时和批处理系统。 第10章提供了在云环境下运行和部署Storm系统的最佳实践。详细地说,你可利用一套为云计算服务的库Apache Whirr,在Amazon Web Services(AWS)Elastic Compute Cloud(EC2)上部署和配置Storm及其相关的支撑组件。此外,你还可以利用Vagrant工具在虚拟机环境下建立开发和测试的集群环境。 ……
《海量数据吞吐与低延迟:分布式实时计算的架构蓝图》 在信息爆炸的时代,实时洞察力已成为企业在激烈竞争中脱颖而出的关键。从金融市场的秒级交易决策,到社交媒体上的即时用户行为分析,再到工业物联网的设备状态实时监控,以及智能交通系统的动态流量调度,对海量数据的实时处理能力的需求正以前所未有的速度增长。这要求我们构建能够以极低延迟、高吞吐量处理数据的分布式系统。然而,设计和实现这样的系统绝非易事,它涉及复杂的并发控制、容错机制、数据一致性保证、资源管理以及网络通信等诸多挑战。 本书旨在深入剖析分布式实时计算系统的核心理念、关键技术与高级模式,为构建健壮、可扩展且高性能的实时数据处理平台提供一套系统性的指导。我们不拘泥于任何特定的技术栈,而是着眼于通用的设计原则和架构思路,让读者能够理解其背后的逻辑,并能灵活应用于不同的技术环境中。 第一部分:分布式实时计算的基石 在深入探讨具体模式之前,理解分布式实时计算的底层原理至关重要。本部分将从概念入手,梳理其核心要素。 实时计算的定义与挑战: 我们将精确定义“实时”的含义,并分析其与批量处理、近实时处理的区别。在此基础上,我们将深入剖析构建实时系统面临的主要挑战,包括但不限于: 数据时效性: 如何在最短的时间内响应数据变化,避免信息滞后。 吞吐量与延迟: 如何在高并发场景下保证数据处理的速率,同时将响应时间降至最低。 可扩展性: 如何随着数据量的增长,平滑地增加系统处理能力。 容错性与可用性: 如何在部分节点故障时,保证系统的持续运行和数据的完整性。 状态管理: 如何在分布式环境中高效、一致地管理和更新计算过程中的状态信息。 数据一致性: 在多副本、分布式环境下,如何保证数据的一致性,特别是在需要精确计算的场景下。 资源管理与调度: 如何高效地分配和利用计算、存储、网络资源,以满足实时计算的需求。 分布式系统的基本概念回顾: 尽管本书聚焦于实时计算,但理解分布式系统的基础仍是必不可少的。我们将简要回顾与实时计算密切相关的分布式系统概念,如: CAP 定理: 理解一致性、可用性、分区容忍性之间的权衡,以及它对实时系统设计的指导意义。 分布式一致性协议(如 Paxos, Raft 的原理): 了解这些协议如何保证分布式状态的一致性,以及在实时场景下的适用性与局限性。 消息队列与流处理: 深入探讨消息队列在解耦、缓冲、异步通信中的作用,以及流处理模型如何为实时数据加工奠定基础。 第二部分:核心处理模式与架构设计 本部分将聚焦于构建分布式实时计算系统的关键处理模式和架构设计理念。这些模式是解决上述挑战的核心工具。 数据摄入与缓冲: 高吞吐量数据接入: 探讨如何设计能够处理海量数据输入的接入层,包括负载均衡、数据分片、序列化协议选择等。 缓冲与削峰填谷: 分析消息队列(如 Kafka, Pulsar)在缓冲突发流量、削减下游压力方面的关键作用,以及如何根据业务需求选择合适的队列类型和配置。 数据预处理与验证: 在数据进入核心处理流程前,进行必要的清洗、格式转换和初步验证,以保证后续处理的效率和准确性。 流式计算模型: 无界流与有界流: 理解这两种流的特性,以及它们在实时计算中的不同应用场景。 事件驱动与微批处理: 深入分析事件驱动模型如何实现真正的实时响应,以及微批处理模型如何平衡延迟与吞吐量。 窗口操作: 详细介绍各种窗口类型(如固定窗口、滑动窗口、会话窗口)及其应用,以及如何在分布式环境下高效地实现窗口计算。 状态管理与容错: 探讨在流式计算中如何管理和持久化算子状态,以及如何利用 Checkpointing、Failure Recovery 等机制实现容错。 分布式数据处理架构: 拓扑结构设计: 介绍构建分布式实时处理拓扑的基本元素(Spout/Source, Bolt/Processor, Sink/Output),以及如何设计合理的拓扑结构以满足业务逻辑。 数据流管理与路由: 分析如何有效地管理数据在拓扑中的流动,包括数据分发策略(如轮询、按键分片)、数据过滤与路由。 并行度与任务调度: 探讨如何根据计算需求和集群资源动态调整算子并行度,以及分布式任务调度器在资源分配与任务执行中的作用。 亚秒级延迟优化: 针对对延迟极致追求的场景,我们将深入研究诸如内存计算、异步I/O、进程内通信、零拷贝传输等技术,以及如何通过精细化的参数调优来逼近亚秒级甚至毫秒级的处理能力。 第三部分:高级模式与应用场景 在掌握了基础的处理模式后,我们将进一步探索更高级的模式,以应对复杂多变的实时计算需求,并结合实际应用场景进行阐述。 复杂事件处理(CEP): 模式匹配: 介绍 CEP 的核心——如何识别和响应数据流中特定事件序列或模式的出现。 状态机的应用: 探讨如何利用状态机来建模和处理复杂的事件模式。 实时告警与决策: CEP 在实时欺诈检测、异常监控、金融风控等领域的应用。 实时聚合与分析: 近似计算与概率数据结构: 在数据量巨大且对精确度要求不那么严苛的场景下,介绍如 HyperLogLog, Bloom Filter, Count-Min Sketch 等概率数据结构在实时去重、计数、成员检测等方面的应用,以降低内存和计算开销。 增量计算与流式物化视图: 如何在数据流上维护聚合结果的实时更新,构建实时的统计报表或仪表盘。 实时推荐系统: 分析如何利用用户实时行为流来更新推荐模型或生成实时推荐列表。 图计算在实时场景中的应用: 实时图分析: 探讨如何处理不断变化的图数据,例如社交网络中的关系变化、知识图谱的动态更新。 实时路径查找与连通性分析: 在实时通信网络、物流调度等场景下,进行实时的图遍历和分析。 容错与高可用性深度解析: 精确一次(Exactly-Once)语义的实现: 深入探讨如何在分布式流处理系统中实现精确一次处理语义,以防止数据丢失或重复。 无状态与有状态算子的容错策略: 分别讨论如何处理无状态和有状态算子在故障恢复时的不同策略。 主动-被动与主动-主动高可用模式: 分析在系统层面如何实现高可用,确保服务不中断。 性能调优与监控: 瓶颈识别与定位: 介绍如何利用分布式追踪、日志分析、指标监控等手段,快速定位系统的性能瓶颈。 JVM 调优与内存管理: 对于基于 JVM 的流处理系统,深入讲解内存管理、垃圾回收(GC)等方面的调优技巧。 网络 I/O 优化: 探讨如何减少网络传输开销,提升数据传输效率。 分布式系统的监控体系: 构建一套完善的监控体系,涵盖数据吞吐量、延迟、错误率、资源利用率等关键指标。 第四部分:实践落地与未来展望 本部分将回归实践,讨论如何将前面介绍的模式应用于实际业务场景,并对未来分布式实时计算的发展趋势进行展望。 典型应用场景剖析: 金融交易与风控: 实时欺诈检测、高频交易分析、市场风险监控。 物联网(IoT)数据处理: 工业设备监控、智能家居数据分析、车联网信息处理。 实时推荐与个性化营销: 用户行为分析、实时内容推荐、动态广告投放。 实时日志分析与安全监控: 应用日志实时告警、安全事件溯源。 社交媒体分析: 舆情监控、用户情绪分析、热点话题追踪。 技术选型与生态系统: 主流流处理框架对比分析(原理层面): 简要介绍不同框架(如 Storm, Flink, Spark Streaming)的核心设计理念和适用场景,帮助读者理解它们的设计哲学。 消息队列的选型: Kafka, Pulsar, RabbitMQ 等在实时数据传输中的作用和特点。 存储层选择: 适用实时计算场景的数据库和存储解决方案(如 NoSQL, time-series database, distributed file systems)。 构建可维护的实时数据平台: 开发流程与最佳实践: 强调模块化设计、代码复用、自动化测试在实时系统开发中的重要性。 持续集成/持续部署(CI/CD)在实时系统中的应用。 数据治理与质量保障: 如何在实时数据管道中保证数据的准确性和一致性。 未来趋势展望: AI 与实时计算的融合: 实时机器学习、在线模型更新。 边缘计算与实时处理: 将实时计算能力推向数据源头。 Serverless 实时计算: 进一步降低运维复杂度。 更强大的状态管理能力与更优的容错机制。 通过对这些核心理念、处理模式、高级架构以及应用场景的深入剖析,本书将帮助读者构建起对分布式实时计算的全面、深刻的理解,并能够独立设计、实现和优化面向未来的实时数据处理系统,从而在瞬息万变的数字世界中抢占先机。