HTTP到Kafka

这篇博客介绍了已被弃用的HTTP到Kafka源,建议使用HTTP服务器源替代。内容涵盖HTTP到Kafka源的先决条件,如配置HTTP客户端和端口,以及Kafka源的安全设置,包括启用SSL/TLS和Kerberos。还讨论了如何配置应用程序ID,最大消息大小,并提供了启用安全连接的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP 到卡夫卡(已弃用)

HTTP 到卡夫卡源在 HTTP 端点上侦听,并将所有授权的 HTTP POST 请求的内容直接写入卡夫卡。但是,Kafka 源的 HTTP 现已弃用,并将在将来的版本中被删除。我们建议使用可以使用多个线程的 HTTP 服务器源,以启用来自多个 HTTP 客户端的数据的并行处理。

使用 HTTP 到卡夫卡源立即将大量 HTTP POST 请求写入卡夫卡,而无需进行其他处理。若要执行处理,可以使用从 Kafka 主题读取的 Kafka 使用者源创建单独的管道。

如果需要在将数据写入 Kafka 之前处理数据,或者需要写入 Kafka 以外的目标系统,请使用 HTTP 服务器源。

您可以配置多个 HTTP 客户端,将数据发送到卡夫卡源。只需在配置源之前完成必要的先决条件即可。以下是使用 HTTP 到卡夫卡源的体系结构示例:

将 HTTP 配置为 Kafka 时,请指定侦听端口、Kafka 配置信息、最大消息大小和应用程序 ID。

您可以根据需要添加卡夫卡配置属性并启用卡夫卡安全性。
提示:数据收集器提供了多个 HTTP 源来满足不同的需求。有关帮助您选择正确图表的快速比较图表,请参阅比较 HTTP 源

先决条件

在运行带有 HTTP 到 Kafka 源的管道之前,请配置以下先决条件:

配置 HTTP 客户端以将数据发送到卡夫卡侦听端口

配置源时,定义源侦听数据的侦听端口号。

若要将数据传递到管道,请将每个 HTTP 客户端配置为将数据发送到包含侦听端口号的 URL。

对 URL 使用以下格式:
<span style="color:#333333"><span style="background-color:#eeeeee"><code><http | https>://<sdc_hostname>:<listening_port>/</code></span></span>
该 URL 包括以下组件:
  • <|https> - 将 https 用于安全的 HTTP 连接。
  • <sdc_hostname> - 数据收集器主机名。
  • <listening_port> - 源侦听数据的端口号。

例如:https://localhost:8000/

在请求标头中包含应用程序 ID

配置源时,需要定义应用程序 ID。发送到 KAfka 源的 HTTP 的所有消息都必须在请求标头中包含应用程序 ID。

将以下信息添加到您希望源处理的所有 HTTP POST 请求的请求标头中:
<span style="color:#333333"><span style="background-color:#eeeeee"><code>X-SDC-APPLICATION-ID: <applicationID></code></span></span>
例如:
<span style="color:#333333"><span style="background-color:#eeeeee"><code>X-SDC-APPLICATION-ID: sdc_http2kafka</code></span></span>

管道配置

在管道中使用 HTTP 到 Kafka 源时,请将源连接到废纸篓目标。

卡夫卡源的 HTTP 将记录直接写入卡夫卡。源不会将记录传递到其输出端口,因此您无法执行其他处理或将数据写入其他目标系统。

但是,由于管道需要目标,因此应将原点连接到废纸篓目标以满足管道验证要求。

具有 HTTP 到卡夫卡源的管道应如下所示:

卡夫卡最大邮件大小

在源中配置与等效的 Kafka 群集属性相关的 Kafka 最大消息大小。源属性应等于或小于 Kafka 群集属性。

HTTP 到卡夫卡源将每个 HTTP POST 请求的内容作为单个消息写入卡夫卡。因此,在源中配置的最大消息大小决定了 HTTP 请求的最大大小,并限制了写入 Kafka 的消息的大小。

若要确保所有消息都写入 Kafka,请将源属性设置为等于或小于 Kafka 群集属性。尝试写入大于指定 Kafka 群集属性的消息将失败,并向原始 HTTP 客户端返回 HTTP 500 错误。

例如,如果 Kafka 集群允许的最大消息大小为 2 MB,请将源中的“最大消息大小”属性配置为 2 MB 或更小,以避免较大消息出现 HTTP 500 错误。

默认情况下,Kafka 群集中的最大消息大小为 1 MB,由消息.max.bytes 属性定义。

启用卡夫卡安全

您可以将 HTTP 配置为卡夫卡源,以便通过 SSL/TLS 和/或 Kerberos 安全地连接到卡夫卡。

启用 SSL/红绿灯系统

执行以下步骤,使 HTTP 转卡源能够使用 SSL/TLS 连接到卡夫卡。

  1. 要使用 SSL/TLS 进行连接,请首先确保按照卡夫卡文档中所述,将卡夫卡配置为使用 SSL/TLS。
  2. 在舞台的“常规”选项卡上,将“舞台库”属性设置为相应的“卡夫卡”版本。
  3. 在“卡夫卡”选项卡上,添加“夫卡”配置属性并将其设置为 SSL
  4. 然后添加并配置以下 SSL 卡夫卡属性:
    • 信任库位置
    • 信任库
    当 Kafka 代理需要客户端身份验证时 - 当 ssl.client.auth 代理属性设置为“必需”时 , 添加并配置以下属性:
    • 位置
    • 密码
    • .key密码
    某些代理可能还需要添加以下属性:
    • ssl.enabled.协议
    • 信任库类型
    • 密钥库类型

    有关这些属性的详细信息,请参阅 Kafka 文档。

例如,以下属性允许阶段使用 SSL/TLS 通过客户端身份验证连接到卡夫卡:

启用 Kerberos (SASL)

使用 Kerberos 身份验证时,数据收集器将使用 Kerberos 主体和密钥选项卡连接到 Kafka。执行以下步骤,使 HTTP 到卡夫卡源能够使用 Kerberos 连接到卡夫卡。

  1. 要使用 Kerberos,请首先确保按照 Kafka 文档中的说明为 Kerberos 配置了 Kafka
  2. 确保为数据收集器启用了 Kerberos 身份验证,如 Kerberos 身份验证中所述。
  3. 根据您的安装和认证类型,添加 Kafka 客户机所需的 Java 认证和授权服务 (JAAS) 配置属性:
    • 在没有 LDAP 认证的情况下安装 RPM、压缩包或 Cloudera 管理器 - 如果数据收集器不使用 LDAP 认证,请在数据收集器计算机上创建一个单独的 JAAS 配置文件。将以下登录部分添加到文件中:KafkaClient
      <span style="color:#333333"><span style="background-color:#eeeeee"><code>KafkaClient {
          com.sun.security.auth.module.Krb5LoginModule required
          useKeyTab=true
          keyTab="<keytab path>"
          principal="<principal name>/<host name>@<realm>";
      };</code></span></span>
      例如:
      <span style="color:#333333"><span style="background-color:#eeeeee"><code>KafkaClient {
          com.sun.security.auth.module.Krb5LoginModule required
          useKeyTab=true
          keyTab="/etc/security/keytabs/sdc.keytab"
          principal="sdc/sdc-01.streamsets.net@EXAMPLE.COM";
      };</code></span></span>
      然后修改SDC_JAVA_OPTS环境变量,以包括以下定义 JAAS 配置文件路径的选项:
      <span style="color:#333333"><span style="background-color:#eeeeee"><code>-Djava.security.auth.login.config=<JAAS config path></code></span></span>

      使用安装类型所需的方法修改环境变量

    • 使用 LDAP 认证的 RPM 或压缩包安装 - 如果在 RPM 或压缩包安装中启用了 LDAP 认证,请将属性添加到数据收集器使用的 JAAS 配置文件 - 该文件。将以下登录部分添加到文件末尾:$SDC_CONF/ldap-login.confKafkaClientldap-login.conf
      <span style="color:#333333"><span style="background-color:#eeeeee"><code>KafkaClient {
          com.sun.security.auth.module.Krb5LoginModule required
          useKeyTab=true
          keyTab="<keytab path>"
          principal="<principal name>/<host name>@<realm>";
      };</code></span></span>
      例如:
      <span style="color:#333333"><span style="background-color:#eeeeee"><code>KafkaClient {
          com.sun.security.auth.module.Krb5LoginModule required
          useKeyTab=true
          keyTab="/etc/security/keytabs/sdc.keytab"
          principal="sdc/sdc-01.streamsets.net@EXAMPLE.COM";
      };</code></span></span>
    • 使用 LDAP 身份验证进行云汇管理器安装 - 如果在云印管理器安装中启用了 LDAP 身份验证,请在云端管理器中为流集服务启用 LDAP 配置文件替换(ldap.login.file.allow.替换)属性。

      如果启用了“使用安全阀编辑 LDAP 信息”属性,并且“数据收集器高级配置代码段(安全阀)”字段中配置了 LDAP 认证,那么将 JAAS 配置属性添加到同一个 ldap-login.conf 安全阀中。

      如果 LDAP 认证是通过 LDAP 属性而不是 ldap-login.conf 安全值配置的,请将 JAAS 配置属性添加到数据收集器高级配置代码段(安全阀)中,以用于生成的 ldap 登录名附加.conf 字段。

      将以下登录部分添加到相应的字段中,如下所示:KafkaClient

      <span style="color:#333333"><span style="background-color:#eeeeee"><code>KafkaClient {
          com.sun.security.auth.module.Krb5LoginModule required
          useKeyTab=true
          keyTab="_KEYTAB_PATH"
          principal="<principal name>/_HOST@<realm>";
      };</code></span></span>
      例如:
      <span style="color:#333333"><span style="background-color:#eeeeee"><code>KafkaClient {
          com.sun.security.auth.module.Krb5LoginModule required
          useKeyTab=true
          keyTab="_KEYTAB_PATH"
          principal="sdc/_HOST@EXAMPLE.COM";
      };</code></span></span>

      Cloudera 管理器会生成相应的密钥表路径和主机名。

  4. 在舞台的“常规”选项卡上,将“舞台库”属性设置为相应的“卡夫卡”版本。
  5. 在“卡夫卡”选项卡上,添加“安全协议”配置属性,并将其设置为SASL_PLAINTEXT
  6. 然后,添加 sasl.kerberos.service.name 配置属性,并将其设置为 kafka

例如,以下卡夫卡属性允许使用 Kerberos 连接到卡夫卡:

启用 SSL/TLS 和 Kerberos

您可以启用 HTTP 到卡夫卡源,以使用 SSL/TLS 和 Kerberos 连接到卡夫卡。

要使用 SSL/TLS 和 Kerberos,请组合所需的步骤以启用每个步骤,并按如下方式设置 security.protocol 属性:
  1. 确保卡夫卡配置为使用 SSL/TLS 和 Kerberos (SASL),如以下卡夫卡文档中所述:
  2. 确保为数据收集器启用了 Kerberos 身份验证,如 Kerberos 身份验证中所述。
  3. 根据您的安装和认证类型,添加 Kafka 客户机所需的 Java 认证和授权服务 (JAAS) 配置属性:
    • 在没有 LDAP 认证的情况下安装 RPM、压缩包或 Cloudera 管理器 - 如果数据收集器不使用 LDAP 认证,请在数据收集器计算机上创建一个单独的 JAAS 配置文件。将以下登录部分添加到文件中:KafkaClient
      <span style="color:#333333"><span style="background-color:#eeeeee"><code>KafkaClient {
          com.sun.security.auth.module.Krb5LoginModule required
          useKeyTab=true
          keyTab="<keytab path>"
          principal="<principal name>/<host name>@<realm>";
      };</code></span></span>
      例如:
      <span style="color:#333333"><span style="background-color:#eeeeee"><code>KafkaClient {
          com.sun.security.auth.module.Krb5LoginModule required
          useKeyTab=true
          keyTab="/etc/security/keytabs/sdc.keytab"
          principal="sdc/sdc-01.streamsets.net@EXAMPLE.COM";
      };</code></span></span>
      然后修改SDC_JAVA_OPTS环境变量,以包括以下定义 JAAS 配置文件路径的选项:
      <span style="color:#333333"><span style="background-color:#eeeeee"><code>-Djava.security.auth.login.config=<JAAS config path></code></span></span>

      使用安装类型所需的方法修改环境变量

    • 使用 LDAP 认证的 RPM 或压缩包安装 - 如果在 RPM 或压缩包安装中启用了 LDAP 认证,请将属性添加到数据收集器使用的 JAAS 配置文件 - 该文件。将以下登录部分添加到文件末尾:$SDC_CONF/ldap-login.confKafkaClientldap-login.conf
      <span style="color:#333333"><span style="background-color:#eeeeee"><code>KafkaClient {
          com.sun.security.auth.module.Krb5LoginModule required
          useKeyTab=true
          keyTab="<keytab path>"
          principal="<principal name>/<host name>@<realm>";
      };</code></span></span>
      例如:
      <span style="color:#333333"><span style="background-color:#eeeeee"><code>KafkaClient {
          com.sun.security.auth.module.Krb5LoginModule required
          useKeyTab=true
          keyTab="/etc/security/keytabs/sdc.keytab"
          principal="sdc/sdc-01.streamsets.net@EXAMPLE.COM";
      };</code></span></span>
    • 使用 LDAP 身份验证进行云汇管理器安装 - 如果在云印管理器安装中启用了 LDAP 身份验证,请在云端管理器中为流集服务启用 LDAP 配置文件替换(ldap.login.file.allow.替换)属性。

      如果启用了“使用安全阀编辑 LDAP 信息”属性,并且“数据收集器高级配置代码段(安全阀)”字段中配置了 LDAP 认证,那么将 JAAS 配置属性添加到同一个 ldap-login.conf 安全阀中。

      如果 LDAP 认证是通过 LDAP 属性而不是 ldap-login.conf 安全值配置的,请将 JAAS 配置属性添加到数据收集器高级配置代码段(安全阀)中,以用于生成的 ldap 登录名附加.conf 字段。

      将以下登录部分添加到相应的字段中,如下所示:KafkaClient

      <span style="color:#333333"><span style="background-color:#eeeeee"><code>KafkaClient {
          com.sun.security.auth.module.Krb5LoginModule required
          useKeyTab=true
          keyTab="_KEYTAB_PATH"
          principal="<principal name>/_HOST@<realm>";
      };</code></span></span>
      例如:
      <span style="color:#333333"><span style="background-color:#eeeeee"><code>KafkaClient {
          com.sun.security.auth.module.Krb5LoginModule required
          useKeyTab=true
          keyTab="_KEYTAB_PATH"
          principal="sdc/_HOST@EXAMPLE.COM";
      };</code></span></span>

      Cloudera 管理器会生成相应的密钥表路径和主机名。

  4. 在舞台的“常规”选项卡上,将“舞台库”属性设置为相应的“卡夫卡”版本。
  5. 在“卡夫卡”选项卡上,添加 security.protocol 属性并将其设置为SASL_SSL
  6. 然后,添加 sasl.kerberos.service.name 配置属性,并将其设置为 kafka
  7. 然后添加并配置以下 SSL 卡夫卡属性:
    • 信任库位置
    • 信任库
    当 Kafka 代理需要客户端身份验证时 - 当 ssl.client.auth 代理属性设置为“必需”时 , 添加并配置以下属性:
    • 位置
    • 密码
    • .key密码
    某些代理可能还需要添加以下属性:
    • ssl.enabled.协议
    • 信任库类型
    • 密钥库类型

    有关这些属性的详细信息,请参阅 Kafka 文档。

配置卡夫卡源的 HTTP

配置一个 HTTP 到卡夫卡源,以将大量 HTTP POST 请求直接写入卡夫卡。

  1. 在“属性”面板的“常规”选项卡上,配置以下属性:
    一般财产描述: __________
    名字艺名。
    描述: __________可选说明。
    舞台库要使用的库版本。
    记录错误阶段的错误记录处理:
    • 丢弃 - 丢弃记录。
    • 发送到错误 - 将记录发送到管道以进行错误处理。
    • 停止管道 - 停止管道。对群集管道无效。
  2. 在“卡夫卡”选项卡上,配置以下属性:
    卡夫卡 房产描述: __________
    代理 URI卡夫卡代理的连接字符串。使用以下格式:。<host>:<port>

    要确保连接,请输入以逗号分隔的其他代理 URI 列表。

    主题卡夫卡主题阅读。
    最大邮件大小 (KB)要写入卡夫卡的消息的最大大小。

    若要避免 HTTP 500 错误,请将此属性配置为等于或小于等效的 Kafka 群集属性。

    卡夫卡配置

    要使用的其他卡夫卡配置属性。使用简单或批量编辑模式,单击添加图标以添加属性。定义卡夫卡属性名称和值。

    按照 Kafka 的预期使用属性名称和值。

    有关启用与 Kafka 的安全连接的信息,请参阅启用安全性

  3. 在“HTTP”选项卡上,配置以下属性:
    属性描述: __________
    HTTP 侦听端口HTTP 到卡夫卡源的侦听端口。端口号必须包含在 HTTP 客户端用于传递数据的 URL 中。

    有关详细信息,请参阅先决条件

    最大并发请求数允许一次向源发送消息的最大 HTTP 客户端数。

    如果源达到配置的最大值并接收来自不同客户端的其他请求,则会在插槽可用时处理这些请求。

    应用程序标识用于将请求传递到卡夫卡源的请求的应用程序 ID。应用程序 ID 必须包含在 HTTP POST 请求的标头中。

    有关详细信息,请参阅先决条件

    网址中的应用程序标识允许从 URL 读取应用程序 ID。当 HTTP 客户端在 URL 查询参数中包含应用程序 ID 而不是请求标头时使用。
  4. 要使用 SSL/TLS,请单击 TLS 选项卡并配置以下属性:
    断续器属性描述: __________
    使用红绿灯系统

    启用 TLS 的使用。

    密钥库文件密钥库文件的路径。输入文件的绝对路径或相对于数据收集器资源目录的路径:$SDC_RESOURCES

    有关环境变量的详细信息,请参阅数据收集器环境配置

    缺省情况下,不使用密钥库。

    密钥库类型要使用的密钥库的类型。使用以下类型之一:
    • Java 密钥库文件 (JKS)
    • PKCS #12 (p12 文件)

    缺省值为 Java 密钥库文件 (JKS)。

    密钥库密码密钥库文件的密码。密码是可选的,但建议使用。
    提示:若要保护敏感信息(如密码),可以使用 运行时资源凭据存储。
    密钥库密钥算法用于管理密钥库的算法。

    默认值为 SunX509。

    使用默认协议确定要使用的传输层安全性 (TLS) 协议。默认协议为 TLSv1.2。若要使用其他协议,请清除此选项。
    传输协议要使用的 TLS 协议。要使用默认 TLSv1.2 以外的协议,请单击添加图标并输入协议名称。您可以使用简单或批量编辑模式来添加协议。
    注意:较旧的协议不如 TLSv1.2 安全。
    使用默认密码套件确定执行 SSL/TLS 握手时要使用的默认密码套件。若要使用其他密码套件,请清除此选项。
    密码套房要使用的密码套件。要使用不属于默认密码集的密码套件,请单击添加图标并输入密码套件的名称。您可以使用简单或批量编辑模式来添加密码套件。

    输入要使用的其他密码套件的 Java 安全套接字扩展 (JSSE) 名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVASoftEngineer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值