storm在zookeeper中存储结构
$rootPath/workerbeats/$topology_id/$node_port
存储由node和port指定worker的运行状态和一些统计信息。包括:topologyId、worker上executor统计信息(发送消息数,接收消息数等)、worker启动时间、最后一次更新时间。
$rootPath/storms/$topology_id
存储topology的本身信息:名字、启动时间、运行状态、要使用的worker数以及组件并行度设置,运行过程中不会变化。$rootPath/assignments/$topology_id
存储任务分配信息:topology在nimbus的存储目录、分配到supervisor机器到主机名的映射关系、每个executor运行在哪个worker以及每个worker的启动时间。运行过程中数据会变化。$rootPath/supervisors/$supervisor_id
存储supervisor机器本身运行统计信息:最近一次更新时间、主机名、supervisorId、已经使用的端口列表、所有端口列表以及运行时间。运行过程中数据会变化。$rootPath/errors/$topology_id/$commponent_id/$sequential_id
存储运行过程中每个组件发生的错误信息,sequential_id是递增的序列号,每一个组件最多只会保留最近的10条错误信息,他运行过程中是不会变,可能会被删除。
storm元数据交互
nimbus
nimbus既需要在zookeeper创建元数据,也需要从zookeeper中获取数据。
箭头1表示由nimbus创建的路径:
a. /storm/workerbeats/$topology_id
b. /storm/storms/$topology_id
c. /storm/assignments/$topology_id
nimbus提交数据时会创建a、b路径,a路径不写数据,b路径会写数据;
nimbus分配任务时会创建c路径的同时设置数据,任务分配计划有变,Nimbus会更新内容。
箭头2表示由nimbus需要获取数据的路径:
a. /storm/workerbeats/$topology_id/$node_port
b. /storm/supervisors/$supervisor_id
c. /storm/errors/$topoloty_id/$component_id/$sequential_id
nimbus从a路径读取当前已经被分配的worker的运行状态,根据worker状态确定是否需要重新调度,还
可以 获取到该worker的executor的运行统计信息。
路径b获取集群supervisor的的状态,通过这些信息确认哪些空闲资源可用,哪些supervisor不再活跃,
需要分配到其他节点上。
路径c数据通过storm ui提供给用户看。
supervisor
- 箭头3 /storm/supervisors/$supervisor_id,表示supervisor在zookeeper中创建的路径,新节点加入集群会创建一个节点。节点是临时的,一旦断开连接节点就会自动被zookeeper删除。这能保证nimbus能及时获取集群的节点信息,为容错&扩展提供基础。
- 箭头4 /storm/assignments/$topology_id表示supervisor需要获取的路径,nimbus将分配信息的信息写入zookeeper,supervisor从zookeeper获取分配的任务,supervisor本地保存上次任务的信息,比较两次分配信息是否有变化,如果有变化,需要移除所对应的的worker,并创建新worker。
- 箭头9表示supervisor会从localStae获取本机所有启动的worker的心跳信息,如果发现心跳信息超时会杀掉worker,原本分配的这个worker任务也会被nimbus重新分配。
worker
- 箭头5中/storm/workerbeats/$topology_id/$node_port表示worker启动时会创建一个与其对应的节点,相当于注册。nimbus 在提交topology是会创建一个根路径/storm/workerbeats/$topology_id,不会设置数据。
- 箭头6表示worker需要获取数据的路径/storm/assignments/$topology_id,worker获取到数据并根据取到的信息执行。
- 箭头8表示worker在localState中保存心跳信息,localState实际上每隔几秒将心跳信息保存到本地文件中,worker和supervisor属于不同进程,通过本地文件来传递心跳。
executor
executor只会利用zookeeper来记录自己的运行报错信息,会保存到以下目录
/storm/errors/$topology_id/$component_id/$sequential_id
相关推荐
Storm实时数据处理
《storm实时数据处理》这本书深入探讨了Apache Storm这一强大的实时计算系统,它是大数据处理领域中的重要工具,尤其在实时流处理方面具有显著优势。Storm设计的核心理念是简单、可扩展和容错性,使得它在处理大规模...
Storm实时数据处理_中文版Storm实时数据处理_中文版Storm实时数据处理_中文版
《大数据技术丛书:Storm实时数据处理》通过丰富的实例,系统讲解Storm的基础知识和实时数据处理的最佳实践方法,内容涵盖Storm本地开发环境搭建、日志流数据处理、Trident、分布式远程过程调用、Topology在不同...
《storm实时数据处理》通过丰富的实例,系统讲解Storm的基础知识和实时数据处理的最佳实践方法,内容涵盖Storm本地开发环境搭建、日志流数据处理、Trident、分布式远程过程调用、Topology在不同编程语言中的实现方法...
**Storm实时数据处理** Apache Storm是一个开源的分布式实时计算系统,它被设计用来处理无界数据流,确保每个事件都能得到正确的处理,即使在高并发和大规模数据输入的情况下也能保持低延迟。本资料《Storm实时数据...
《Storm实时数据处理》这本书是大数据处理领域的重要参考资料,它主要聚焦于Apache Storm这一开源分布式实时计算系统。Storm被广泛应用于实时分析、持续计算、分布式RPC、机器学习等多个场景,其核心理念是允许用户...
在大数据实时处理领域,Apache Storm与Apache Kafka经常被结合使用,形成高效的数据流处理系统。本文将深入探讨如何实现Storm与Kafka的集成,重点在于如何从Kafka中读取数据。 **一、整合说明** Apache Storm是一...
《Storm实时数据处理》
storm实时数据处理 带书签目录pdf高清完整版 这个是带完整目录书签的高清扫描版
Storm实时数据处理_PDF电子书下载 带书签目录 完整版
根据提供的文件信息,“Storm实时数据处理.pdf”,我们可以深入探讨与Apache Storm相关的实时数据处理技术。 ### Apache Storm简介 Apache Storm是一种分布式实时计算系统,能够处理无界数据流,即连续不断的数据...
处理数据流,包括基于规则的处理流程。 构建分布式远程过程调用。 交付基于多语言实现的Storm Topology,包括Java、Clojure、Ruby和C++。 将Storm与Cassandra、Hadoop集成。 使用Cascading实现基于批处理的单词重要...
在分析Storm实时数据分析时,我们可以从以下几个方面入手: 1. 实时流处理框架:Storm的核心是一个实时计算的框架,它可以用来处理大量的数据流,而且是可扩展的。它能够保证每个消息至少被处理一次,这对于需要高...
思路:Storm集群从Kafkatopic主题获取数据,解析后写入MySQL,注意我们使用MyBatis工具与数据库交互 项目结构 部署MySQL 我们在服务器上部署一台MySQL数据库 具体参考这篇文章 数据库表结构如下: ...
### 基于Storm海量数据的实时聚类 #### Storm整体框架说明 Storm是一个免费、开源的分布式实时计算系统,由BackType开发并维护。它提供了简单易用的API,可以方便地创建复杂的流处理应用。Storm的设计目标是提供一...
- **DRPC(Distributed Remote Procedure Call)**:支持分布式远程过程调用,允许实时查询和响应,增强了Storm的交互性。 4. **基于Storm的报文系统** - **报文系统需求分析**:报文系统通常需要处理高并发、低...