首页 > 解决方案 > 带有升级版 KafkaSpout 的 Storm Pacemaker

问题描述

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

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

我们的集群有 70 多个主管和大约 70 个工作人员,其中有一些未使用的插槽。此外,我们有大约 9100 多个执行程序/任务正在运行。

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

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

标签: apache-storm

解决方案


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

  2. supervisor报告心跳nimbus它是活着的,用于容错,频率通过supervisor.heartbeat.frequency.secs设置,存储在 ZK 中

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

  3. task.heartbeat.frequency.secs : 任务(executor)多久将其状态心跳发送到 master(Nimbus),它在storm中永远不会生效,并且已被Storm v2.0 RPC心跳报告弃用

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


推荐阅读