自动缩放火花群集



我有一个在集群上运行的火花流作业。Spark 作业从 Kafka 拉取消息,并在将处理后的数据转储到数据库之前执行所需的处理。我已经根据当前负载调整了集群的大小。但这种负载要求将来可能会上升/下降。
我想知道在不重新启动作业的情况下促进这种自动缩放的技术。如果使用 kakfa(就像我的情况一样(,缩放会变得更加复杂,因为我不希望分区在有状态流中移动。目前,集群完全在内部,但如果这有助于扩展用例,我不介意迁移到云。

这不是

一个答案。只是一些注意事项

  1. "在有状态流中"。你这是什么意思?火花中的所有状态都是分布式的。而且你不应该依赖本地系统,因为如果某个任务失败了,它可以发送给任何其他执行者。

  2. 您是在谈论增加群集大小还是专用于群集中 Spark 作业的资源?

    如果是第一个,则需要监视每个节点(内存,CPU(,并在需要(达到某个阈值(时添加更多节点。

    如果是第二个:我们没有找到好的解决方案。Spark 提供"自动缩放"功能,但它不能在 kafka 流中正常工作。