如何在 Kafka 集群上部署 Kafka Streaming 应用程序

Soh*_*ani 5 apache-kafka apache-kafka-streams

我编写了 Kafka Streaming 应用程序,我想将它部署在 Kafka 集群上。所以我构建了一个 jar 文件并使用以下命令运行它:

 java -jar KafkaProcessing-1.0-SNAPSHOT-jar-with-dependencies.jar testTopic kafka1:9092,kafka2:9092 zookeeper1:2181,zookeeper2:2181 output
Run Code Online (Sandbox Code Playgroud)

它运行正常,但作业正在我在命令上方运行的机器上运行!我想当我指定BOOTSTRAP-SERVERS它时会自动在集群上进行计算,而不是在主机上!

所以我的问题是如何在 kafka 集群上提交 Kafka 流作业?像 Spark 和 Flink 一样,提供命令spark-submitflink run在集群上部署应用程序。

Ale*_*Ott 5

Kafka 流具有不同的架构 - 它不需要像 Spark/Flink 那样的集群编排 - 它们只是你可以启动和停止的普通应用程序,如果你启动 - 它们会扩大规模,如果你停止它们则会缩小规模。在内部,他们使用 Kafka 来协调数据处理,与其他 Kafka 消费者类似。

如果您有 Kubernetes、Docker Swarm 或其他类似平台,那么您可以将应用程序打包到 Docker 中,并使用该平台来运行 Kafka Streams 应用程序。

  • 有关弹性缩放的一些详细信息,请参阅 https://www.confluence.io/blog/elastic-scaling-in-kafka-streams/。简而言之:只需运行应用程序的多个实例即可。需要 5 倍处理能力?运行 5 个实例。需要 10 倍吗?运行 10 个实例。等等。与 Spark、Flink 和 Storm 相比,Kafka Streams 的优势之一是您可以在实时操作期间更改并行性(无需停机)——您可以在应用程序运行时添加/删除实例,以添加/删除处理能力。 (2认同)