【发布时间】:2015-10-25 01:02:32
【问题描述】:
我是 apachestorm 和 kafka 的新手,作为 POC 的一部分,我正在尝试使用 Kafka 和 apachestorm 处理消息流。我正在使用来自https://github.com/apache/storm/tree/master/external/storm-kafka 的storm-kafka 源,我能够创建一个示例程序,它使用KafkaSpout 从kafka 主题读取消息并将其输出到另一个kafka 主题。我有 3 个节点 kafka(三个节点都在同一台服务器上运行)集群并创建了 8 个分区的主题。我将 KafkaSpout 并行度设置为 8,将 Bolt 的并行度设置为 8,尝试使用 8 个执行器和任务。我已经尝试在 kafka 级别、SpoutConfig 级别和 Storm 级别设置很多 tunnig 参数,但是我遇到了非常高的整体延迟问题。我需要消息处理保证,所以确实需要确认。 Storm集群有1个supervisor,zookeeper有3个noed,kafka和storm共享。它运行在具有 144MB RAM 和 16CPU 的 Red Hat Linux 机器上。使用下面的参数,我会得到非常高的 spout 进程延迟,大约 40 秒,我需要得到大约 50K 的消息/秒级别,请你帮我配置实现它。我在各个网站上浏览了很多帖子,并尝试了很多调整选项,但都没有结果。
Storm config
topology.receiver.buffer.size=16
topology.transfer.buffer.size=4096
topology.executor.receive.buffer.size=16384
topology.executor.send.buffer.size=16384
topology.spout.max.batch.size=65536
topology.max.spout.pending=10000
topology.acker.executors=20
Kafka config
fetch.size.bytes=1048576
socket.timeout.ms=10000
fetch.max.wait=10000
buffer.size.bytes=1048576
提前致谢。
风暴界面截图
【问题讨论】: