storm调优(2)

Storm集群和拓扑的深度调优

 默认配置概览

在Storm中,默认配置包含以下几个关键方面:

1. Supervisor节点与Worker进程:每个Supervisor节点默认启动4个Worker进程。

2. Topology与Worker进程:通常,每个Topology默认占用一个Worker进程。

3. Executor与Task:在每个Worker中,会启动Executor,每个Executor默认启动一个Task。

 并行度的理解与调整

1. 并行度概念:在Storm中,并行度主要包括三个层级:

    - Topology的Worker进程并行数。

    - Worker内的Executor线程并行数。

    - Executor内的Task并行数。
有时过多的hashmap也会因为数据冗余导致出现时间对不上的问题

2. 并行度与性能:理论上,并行度越高,Topology的运行效率越高。但是,并行度的设置需要考虑到内存分配和系统硬件资源的平衡,以避免资源浪费。

 ACK/Fail机制

1. 数据完整性保障:Storm通过ACK/Fail机制保证数据不丢失。每个Tuple从Spout发出时,会生成一个MessageID(默认或自定义生成)。

2. 处理机制:下游Bolt成功处理Tuple后,通过Acker进程通知Spout调用ACK方法;处理失败或超时,则调用Fail方法。

3. 完全处理概念:一个消息的完全处理取决于Tuple Tree中的每个Bolt是否都已完全处理该消息。

4. ACK/Fail线程配置:默认情况下,每个Worker进程启动1个Acker线程,提供ACK/Fail服务。

 Worker通信机制

1. Worker内部元件:

    - Receive线程:负责接收其他Worker的数据,存储于ArrayList中。

    - Sent线程:维护消息队列,负责发送数据给其他Worker。

    - Executor线程:每个Executor有自己的接收和发送缓冲区,负责数据处理。

2. 配置选项:可以通过各种配置参数调整缓冲区大小和通信机制。

 性能调优策略

1. 并行度配置手段:

    - `conf.setNumWorkers()`:设置Worker数量。

    - `builder.setBolt()`:设定Executor数量。

    - `setNumTask()`:调整Task数量。

2. 并行度决策因素:

    - Worker数量取决于集群节点的内存容量和数据处理需求。

    - Executor和Task的数量应考虑处理效率和资源分配。

 附加调优技巧

1. 反压问题解决:通过配置参数控制反压,防止OOM现象。

2. 优化分组策略:选择合适的分组方法,如fieldGrouping或localOrShuffleGrouping。

3. 关闭ACK机制:如果不需要ACK,可通过`conf.setNumAckers(0)`关闭。

4. Worker与Executor比例:推荐1:10至1:15的比例。

5. 内存与通信优化:考虑使用CMS GC方法,调整Worker内存设置。

6. Supervisor和Nimbus配置:优化节点部署和资源分配。
有时过多的hashmap也会因为数据冗余导致出现时间对不上的问题

 动态调整并行度

1. 使用Storm WebUI:直观地调整并行度设置。

2. 命令行工具:使用`storm rebalance`命令调整Worker和各组件的并行度。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值