如何在 YARN 中 运行 一个 Kafka connect worker?

How to run a Kafka connect worker in YARN?

我正在玩 Kafka-Connect. I've got the HDFS connector working both in stand-alone mode and distributed mode

他们 advertise 可以通过 YARN 管理工作人员(负责 运行 连接器)但是,我还没有看到任何文档描述如何实现这个目标。

我怎样才能让 YARN 处决工人?如果没有具体方法,是否有关于如何在 YARN 内将应用程序提交到 运行 的通用方法?

我已经使用 YARN 和 SPARK 使用 spark-submit 但是,我无法弄清楚如何在 YARN 中将连接器连接到 运行。

理论上你可以在 YARN 上 运行 任何东西,甚至是一个简单的 hello world 程序。这就是为什么在 YARN 上说 Kafka-Connect 运行s 在技术上是正确的。需要注意的是,目前在 YARN 上将 Kafka-Connect 连接到 运行 需要相当多的努力。有两种方法:

  1. 直接与 YARN 对话 API 获取容器,部署 Kafka-Connect 二进制文件并启动 Kafka-Connect。
  2. 使用单独的 Slider 项目 https://slider.incubator.apache.org/docs/getting_started.html,Stephane 已经在评论中提到了。

滑块

你必须阅读相当多的文档才能让它工作,但 Slider 背后的想法是你可以在 YARN 上获得任何程序 运行 而无需处理 YARN API并通过执行以下操作编写一个 YARN 应用程序主机:

  • 从您的程序中创建一个滑块包
  • 为你的包定义一个配置
  • 使用滑块 cli 将您的应用程序部署到 YARN

Slider 为您处理容器部署和失败容器的恢复,这很好。当 YARN 3.0 发布时,Slider 也将成为 YARN 的原生部分。

备选方案

另请注意,让 Kafka-Connect 部署在 Kubernetes 或 Mesos / Marathon 上可能会更容易。这样做的基本工作流程是:

  • 创建一个 Kafka-Connect docker 容器或者只使用 confluent 的 docker container
  • 为 Kubernetes 或 Marathon 创建部署配置
  • 单击一个按钮/运行一个命令

教程

  • 可以找到很好的 Mesos / Marathon 教程 here
  • Kubernetes 教程here
  • Confluent Kubernetes Helm 图表here