升级后的 KafkaSpout 的 Storm Pacemaker

Storm Pacemaker with upgraded KafkaSpout

我对 Pacemaker 的使用有疑问。我们目前在 1.0.2 上有一个 运行 Storm 集群,并且正在将其迁移到 1.2.2。我们还使用 KafkaSpout 来消费来自 KAfka 主题的数据。 现在,由于此版本适用于 Kafka 0.10 +,ZK 的大部分负载将被取消,因为偏移量不会存储在 ZK 中。

考虑到这一点,我们也开始关注 Pacemaker 以进一步减少 ZK 上的负载是否有意义?

我们的集群有 70 多名主管和大约 70 名工人,还有一些未使用的槽。此外,我们有大约 9100+ executors/tasks 运行。

我的另一个问题是关于心跳以及谁将心跳发送给谁?据我了解,工人和主管将他们的心跳发送到 ZK,这是 Pacemaker 缓解的。任务怎么样?他们也发送心跳吗?如果是,那么它是去 ZK 还是去其他地方?这个名为 task.heartbeat.frequency.secs 的配置让我更加困惑。

我问这个的原因是如果任务级别的心跳没有被发送到 ZK,那么很明显不需要 Pacemaker。这是因为没有向 ZK 提交偏移量,负载将大大减少。我的评估是否正确,或者 Pacemaker 仍然是一个可行的选择吗?任何潜在客户将不胜感激。

  1. Pacemaker 是一个可选的 Storm 守护进程,旨在处理来自 worker 的心跳,它被实现为内存存储。如果 ZK 成为瓶颈,你可以使用它,因为风暴集群扩大

  2. supervisornimbus报告heartbeat它是存活的,用于容错,频率通过supervisor.heartbeat.frequency.secs[设置=37=], 存储在ZK.

    worker应该心跳到supervisor,频率通过worker.heartbeat.frequency.secs设置。这些心跳存储在本地文件系统

  3. task.heartbeat.frequency.secs:一个任务(执行者)应该多久向主节点(Nimbus)心跳一次它的状态,它从不在 storm 中生效, 已弃用 Storm v2.0 RPC 心跳报告

    这个心跳统计了哪些执行器被分配给了哪个工作器,存储在 ZK 中。