STORM学习笔记:拓扑结构与任务分配解析

需积分: 10 2 下载量 40 浏览量 更新于2024-09-12 收藏 401KB DOCX 举报
"STORM学习文档——个人学习storm的笔记,包括storm与kafka的集成,以及storm集群的工作原理和拓扑提交过程的解析。" 在深入理解Apache Storm的过程中,我们需要掌握以下几个关键知识点: 1. **Storm拓扑结构**: 拓扑(Topology)是Storm的核心概念,它定义了数据流的处理逻辑。在提供的内容中,提到的拓扑包含了两个工作进程(Worker),每个工作进程有5个执行器(Executor),总共有12个任务。执行器是线程池,它们负责执行任务。任务是实际的数据处理逻辑,如Bolt或Spout。在本例中,GreenBolt的执行器被分配了2个任务。 2. **Nimbus与Zookeeper的交互**: Nimbus是Storm的主控节点,负责任务调度和监控。它不依赖于Zookeeper的事件通知,而是通过定期轮询Zookeeper来获取集群状态,例如Supervisor的加入和退出。这种设计使得Nimbus可以主动获取信息,而不是被动等待,提高了系统的响应速度。 3. **Supervisor角色**: Supervisor是Storm集群中的工作节点,它管理多个Worker进程。每个Supervisor通过Zookeeper获取需要执行的任务,并启动或停止Worker来执行这些任务。Worker是实际运行拓扑任务的Java进程。Supervisor通过`sync-processes`来控制Worker的生命周期,并通过Zookeeper监控Worker的状态,确保它们正常发送心跳。 4. **Worker与Task的关系**: Worker是由Supervisor启动的Java进程,它们执行由Nimbus分配的任务。任务是平均分配到各个Executor中的,Executor可以在一个进程中运行多个任务。在描述的例子中,如果未指定任务数,一个Executor通常只执行一个任务,但如果有指定,任务会被平均分给Executor。 5. **Topology提交流程**: 当用户提交一个Topology到Storm集群时,Nimbus接收这个请求,然后将拓扑分解为任务分配给Supervisors。Supervisors收到任务后,启动Worker执行这些任务。在这个过程中,Nimbus扮演的是调度员的角色,而Supervisors则是执行任务的车间主任。当Supervisor收到“收工”指令时,Worker会进入待命状态,而不是立即停止处理数据。 6. **Kafka集成**: Storm可以与Kafka集成,实现实时数据流处理。通常,我们可以使用KafkaSpout从Kafka主题中消费消息,然后通过一系列的Bolt进行处理,最后将结果写入其他系统或存储。这种集成使得Storm能够高效地处理来自Kafka的持续数据流。 理解这些核心概念对于有效地使用和部署Storm进行实时大数据处理至关重要。Storm的设计使得它能够处理高吞吐量的数据流,并提供容错性和可扩展性,使其成为实时计算领域的重要工具。