"strom学习笔记,涵盖了实时大数据处理框架Storm的主要组件关系、参数设置以及集群架构的解析。"
在深入探讨Storm之前,我们先要理解它是一个分布式实时计算系统,常用于实时大数据处理。本笔记将围绕Storm的核心概念展开,包括组件关系、参数配置以及集群架构。
1. **组件关系**:
Storm的组件主要包括Spout和Bolt。Spout是数据源,负责产生数据流;Bolt是对数据进行处理的组件,如清洗、聚合、过滤等操作。图例中的关系显示了数据流如何在不同组件之间传递。Spout发射数据到Bolt,Bolt处理后可能再传递给其他Bolt或返回给Spout,形成复杂的处理拓扑。
2. **主要参数设置**:
- `Parallelism_hint`: 并发度设置,决定了一个组件(Spout或Bolt)的执行器(Executor)数量。Executor是线程池,负责执行task。
- `setNumTasks`: 设置task的数量,task是实际运行的工作单元。
- `setNumWorkers`: 设置worker的数量,worker是JVM进程,每个worker运行在一个单独的进程中。
- 当task数量小于executor数量时,每个executor执行多个task;反之,当task数量大于executor数量时,每个executor只执行一个task。
- `setNumAcker`: 设置确认者(acker)的数量,用于确认消息是否正确处理。设置为0时,用户可以自定义确认策略。
3. **Storm集群架构**:
- **Nimbus**: 是Storm的主控节点,负责调度任务,将用户提交的Topology分解为任务分配给Supervisor。
- **Supervisor**: 从属节点,每个Supervisor管理一组工作进程(Worker),这些Worker运行Topologies的组件实例。
- **ZooKeeper**: 作为协调器,确保高可用性,监控Nimbus和Supervisor的状态,当Supervisor故障时,Nimbus能重新分配任务。
在实际应用中,调整这些参数可以优化系统的性能和资源利用率。例如,增加`Parallelism_hint`可以提高并行度,提升处理速度,但过多可能导致资源过度消耗。理解这些参数的交互和作用对于高效地利用Storm处理实时数据至关重要。