Openflow Connector for Kafka 的性能调整¶
备注
使用该连接器需遵守 连接器条款。
本主题为优化 Openflow Connector for Kafka 的性能提供指导,以实现最佳吞吐量并尽可能缩短向 Snowflake 引入数据时的延迟。
性能注意事项¶
在配置 Openflow Connector for Kafka 以实现最佳性能时,请考虑以下影响引入吞吐量和延迟的关键因素:
消息特征¶
- 消息大小
较大的消息可以提供更好的吞吐量,但每条消息可能需要更多的内存和处理时间。
- 消息格式
由于架构推断和不同的序列化/反序列化,与 AVRO 消息相比,JSON 消息通常需要更多的处理开销。
- 消息量
更高的消息量受益于并行处理和更大的批处理大小。
Kafka 配置¶
- 分区数
更多的分区可以实现更高的并行度,但需要与使用者配置进行仔细的协调。
- 压缩
消息压缩可以减少网络带宽,但会增加 CPU 开销。
Flowfile 优化¶
- Flowfile 大小
为了获得最佳性能,Flowfile 应介于 1-10 MB 范围内,而不是包含单独的小消息。较大的 Flowfile 通过尽可能减少单个文件操作的数量来减少处理开销并提高吞吐量。默认设置应生成在可接受的大小范围内的 Flowfile。当吞吐量低时,预计会生成较小的 Flowfile。
如果您发现较小的 Flowfile 具有高吞吐量,请联系 Snowflake 支持部门 寻求帮助。
网络和基础设施¶
- 网络延迟
Kafka 代理和 Openflow 之间较低的延迟可以提高整体性能。
- 带宽
足够的网络带宽对于高吞吐量场景至关重要。
节点大小建议¶
下表根据预期的工作负载特性提供了配置建议。
节点大小 |
建议场景 |
消息速率容量 |
---|---|---|
小 (S) |
低到中吞吐量场景 |
每个节点最多 10 MB/s |
中 (M) |
中到高吞吐量场景 |
每个节点最多 40 MB/s |
大 (L) |
高吞吐量场景 |
每个节点超过 40 MB/s |
性能优化最佳实践¶
调整处理器并发任务¶
要优化处理器性能,可以调整 ConsumeKafka 和 PutSnowpipeStreaming 处理器的并发任务数。并发任务允许处理器同时运行多个线程,从而提高了高容量场景的吞吐量。
要调整处理器的并发任务,请执行以下任务:
右键点击 Openflow 画布中的处理器。
从上下文菜单中选择 Configure。
导航到 Scheduling 选项卡。
在 Concurrent tasks 字段中,输入首选的并发任务数。
选择 Apply 以保存配置。
推荐的并发任务设置¶
节点大小 |
ConsumeKafka 任务 |
PutSnowpipeStreaming 任务 |
---|---|---|
小 (S) |
1 |
1-2 |
中 (M) |
2 |
2-4 |
大 (L) |
4-8 |
4-10 |
重要注意事项¶
- 内存使用量
每个并发任务都会使用额外的内存。增加并发任务时监控 JVM 堆使用量。
- Kafka 分区
对于 ConsumeKafka,并发任务数乘以节点数不应超过所有主题的 Kafka 分区总数。
- 谨慎开始
从较低的值开始,然后在监控性能指标时逐渐增加。
调整 PutSnowpipeStreaming 处理器中的 Max Batch Size¶
PutSnowpipeStreaming 处理器中的 Max Batch Size 参数可控制单批处理的记录数量。调整此参数有助于优化内存使用量和吞吐量。
Max Batch Size 应根据平均记录大小进行调整,以使总批量大小(最大批量大小 × 平均记录大小)在 4 MB 左右,不超过 16 MB,以实现最佳性能。
例如:如果平均记录大小为 1KB,则 Max Batch Size 应设置为 4,000。
要调整 Max Batch Size,请执行以下操作
右键点击 PutSnowpipeStreaming 处理器。
从上下文菜单中选择 Configure。
导航到 Properties 选项卡。
找到 Max Batch Size 属性。
输入根据平均记录大小计算出的值。
选择 Apply 以保存费用。
重要注意事项¶
调整批量大小时监控内存使用量和吞吐量。
从这些推荐值开始,仅在监控性能时根据需要进行调整。
扩展注意事项¶
Openflow 平台使用基于 CPU 利用率的 Horizontal Pod Autoscaler (HPA),不支持基于自定义指标的自动缩放。
正确配置并发任务对于有效的自动缩放至关重要。如果并发任务设置得太低,即使 Kafka 延迟增加,系统也可能无法扩大,因为可能无法达到触发扩展所需的 CPU 利用率阈值。尽管有额外资源,但这可能会导致处理延迟和积压。
为确保最佳的扩展行为,请根据 调整处理器并发任务 中的建议配置并发任务,并监控 CPU 利用率和 Kafka 延迟指标。
排除性能问题¶
常见的性能瓶颈¶
使用者延迟严重或 Snowflake 引入瓶颈¶
如果 Kafka 使用者延迟增加或 Snowflake 引入速度缓慢,则执行以下任务:
内存压力¶
如果遇到与内存相关的问题:
减小批量大小以减少内存占用。
减少 ConsumeKafka 处理器的并发任务数量。
考虑升级到更大的节点类型。
网络延迟问题¶
如果遇到高延迟:
验证 Openflow 和外部系统之间的网络配置。
考虑将 OpenFlow 部署在更靠近 Kafka 集群的位置。
如果处理低吞吐量,请考虑降低 PutSnowpipeStreaming 处理器中的 Client Lag 设置和 ConsumeKafka 处理器中的 Max Uncommitted Time。
后续步骤¶
从推荐的节点大小配置开始。
监控性能指标并根据观察到的行为调整设置。
在部署到生产环境之前,考虑在非生产环境中进行负载测试。