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 客户端配置为将数据发送到包含侦听端口号的 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 连接到卡夫卡。
- 要使用 SSL/TLS 进行连接,请首先确保按照卡夫卡文档中所述,将卡夫卡配置为使用 SSL/TLS。
- 在舞台的“常规”选项卡上,将“舞台库”属性设置为相应的“卡夫卡”版本。
- 在“卡夫卡”选项卡上,添加“卡夫卡”配置属性并将其设置为 SSL。
- 然后添加并配置以下 SSL 卡夫卡属性:
- 信任库位置
- 信任库
当 Kafka 代理需要客户端身份验证时 - 当 ssl.client.auth 代理属性设置为“必需”时 , 添加并配置以下属性:- 位置
- 密码
- .key密码
某些代理可能还需要添加以下属性:- ssl.enabled.协议
- 信任库类型
- 密钥库类型
有关这些属性的详细信息,请参阅 Kafka 文档。
例如,以下属性允许阶段使用 SSL/TLS 通过客户端身份验证连接到卡夫卡:

启用 Kerberos (SASL)
使用 Kerberos 身份验证时,数据收集器将使用 Kerberos 主体和密钥选项卡连接到 Kafka。执行以下步骤,使 HTTP 到卡夫卡源能够使用 Kerberos 连接到卡夫卡。
- 要使用 Kerberos,请首先确保按照 Kafka 文档中的说明为 Kerberos 配置了 Kafka。
- 确保为数据收集器启用了 Kerberos 身份验证,如 Kerberos 身份验证中所述。
- 根据您的安装和认证类型,添加 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.conf
KafkaClient
ldap-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 管理器会生成相应的密钥表路径和主机名。
- 在没有 LDAP 认证的情况下安装 RPM、压缩包或 Cloudera 管理器 - 如果数据收集器不使用 LDAP 认证,请在数据收集器计算机上创建一个单独的 JAAS 配置文件。将以下登录部分添加到文件中:
- 在舞台的“常规”选项卡上,将“舞台库”属性设置为相应的“卡夫卡”版本。
- 在“卡夫卡”选项卡上,添加“安全协议”配置属性,并将其设置为SASL_PLAINTEXT。
- 然后,添加 sasl.kerberos.service.name 配置属性,并将其设置为 kafka。
例如,以下卡夫卡属性允许使用 Kerberos 连接到卡夫卡:
启用 SSL/TLS 和 Kerberos
您可以启用 HTTP 到卡夫卡源,以使用 SSL/TLS 和 Kerberos 连接到卡夫卡。
- 确保卡夫卡配置为使用 SSL/TLS 和 Kerberos (SASL),如以下卡夫卡文档中所述:
- 确保为数据收集器启用了 Kerberos 身份验证,如 Kerberos 身份验证中所述。
- 根据您的安装和认证类型,添加 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.conf
KafkaClient
ldap-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 管理器会生成相应的密钥表路径和主机名。
- 在没有 LDAP 认证的情况下安装 RPM、压缩包或 Cloudera 管理器 - 如果数据收集器不使用 LDAP 认证,请在数据收集器计算机上创建一个单独的 JAAS 配置文件。将以下登录部分添加到文件中:
- 在舞台的“常规”选项卡上,将“舞台库”属性设置为相应的“卡夫卡”版本。
- 在“卡夫卡”选项卡上,添加 security.protocol 属性并将其设置为SASL_SSL。
- 然后,添加 sasl.kerberos.service.name 配置属性,并将其设置为 kafka。
- 然后添加并配置以下 SSL 卡夫卡属性:
- 信任库位置
- 信任库
当 Kafka 代理需要客户端身份验证时 - 当 ssl.client.auth 代理属性设置为“必需”时 , 添加并配置以下属性:- 位置
- 密码
- .key密码
某些代理可能还需要添加以下属性:- ssl.enabled.协议
- 信任库类型
- 密钥库类型
有关这些属性的详细信息,请参阅 Kafka 文档。
配置卡夫卡源的 HTTP
配置一个 HTTP 到卡夫卡源,以将大量 HTTP POST 请求直接写入卡夫卡。
- 在“属性”面板的“常规”选项卡上,配置以下属性:
一般财产 描述: __________ 名字 艺名。 描述: __________ 可选说明。 舞台库 要使用的库版本。 记录错误 阶段的错误记录处理: - 丢弃 - 丢弃记录。
- 发送到错误 - 将记录发送到管道以进行错误处理。
- 停止管道 - 停止管道。对群集管道无效。
- 在“卡夫卡”选项卡上,配置以下属性:
- 在“HTTP”选项卡上,配置以下属性:
属性 描述: __________ HTTP 侦听端口 HTTP 到卡夫卡源的侦听端口。端口号必须包含在 HTTP 客户端用于传递数据的 URL 中。 有关详细信息,请参阅先决条件。
最大并发请求数 允许一次向源发送消息的最大 HTTP 客户端数。 如果源达到配置的最大值并接收来自不同客户端的其他请求,则会在插槽可用时处理这些请求。
应用程序标识 用于将请求传递到卡夫卡源的请求的应用程序 ID。应用程序 ID 必须包含在 HTTP POST 请求的标头中。 有关详细信息,请参阅先决条件。
网址中的应用程序标识 允许从 URL 读取应用程序 ID。当 HTTP 客户端在 URL 查询参数中包含应用程序 ID 而不是请求标头时使用。 - 要使用 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) 名称。