卡夫卡多主题消费者
配置 Kafka 多主题使用者时,可以配置使用者组名称和要使用的代理。您还可以指定要处理的主题和要使用的线程数。在 Kafka 中,请确保分区分配策略已正确配置。
您可以将源配置为在消息包含多个对象时生成单个记录。您可以根据需要添加其他卡夫卡配置属性,包括卡夫卡安全功能。
处理 Avro 数据时,可以将 Kafka 多主题使用者配置为使用融合架构注册表。融合模式注册表是 Avro 模式的分布式存储层,它使用 Kafka 作为其底层存储机制。
Kafka 多主题使用者包括记录标头属性,使您能够在管道处理中使用有关记录的信息。
胶印管理
使用者组标识的 Kafka 多主题使用者源首次收到来自某个主题的消息时,将为该使用者组和主题创建偏移条目。偏移条目是在卡夫卡中创建的。
无存储偏移
当使用者组和主题组合没有以前存储的偏移量时,Kafka 多主题使用者源使用“自动偏移重置”属性来确定要读取的第一条消息。您可以将源设置为从最早的消息、最新消息或特定时间戳开始读取主题中的消息。默认设置是最早的消息,这将导致源读取主题中的所有现有消息。
以前存储的偏移量
当使用者组和主题组合具有先前存储的偏移量时,Kafka 多主题使用者源将接收从存储的偏移量之后的下一个未处理消息开始的消息。例如,停止并重新启动管道时,处理将从上次提交的偏移量恢复。
多线程处理
Kafka 多主题使用者源执行并行处理,并支持创建多线程管道。Kafka 多主题使用者源根据“线程数”属性和 Kafka 群集中定义的分区分配策略使用多个并发线程。
执行多线程处理时,Kafka 多主题使用者源会检查要处理的主题列表并创建指定数量的线程。每个线程都连接到 Kafka,并根据 Kafka 分区分配策略从代理分配的分区创建一批数据。然后,它将批处理传递给可用的管道运行程序。
管道运行程序是无源管道实例 - 管道的实例,包括管道中的所有处理器和目标,并表示源之后的所有管道处理。每个管道运行程序一次处理一个批处理,就像在单个线程上运行的管道一样。当数据流变慢时,管道运行器会闲置等待,直到需要它们,并定期生成一个空批处理。可以配置“运行器空闲时间”管道属性以指定间隔或选择退出空批处理生成。
多线程管道保留每个批处理中的记录顺序,就像单线程管道一样。但是,由于批处理由不同的管道运行程序处理,因此无法确保将批处理写入目标的顺序。
例如,假设您将“线程数”属性设置为 5。启动管道时,源将创建五个线程,数据收集器将创建匹配数量的管道运行程序。根据 Kafka 分区分配策略,将线程分配给不同的分区。接收到数据后,源将一个批处理传递给每个管道运行器进行处理。
在任何给定时刻,五个管道运行程序可以分别处理一个批处理,因此此多线程管道一次最多可以处理五个批处理。当传入数据变慢时,管道运行程序将处于空闲状态,一旦数据流增加,就可以使用。
其他卡夫卡属性
您可以将自定义卡夫卡配置属性添加到卡夫卡多主题使用者。
添加 Kafka 配置属性时,请输入确切的属性名称和值。Kafka 多主题使用者不会验证属性名称或值。
- auto.commit.interval.ms
- 引导服务器
- 启用自动提交
- group.id
- 最大投票记录
记录标头属性
Kafka 多主题使用者源创建记录标头属性,其中包含有关记录的原始文件的信息。当源处理 Avro 数据时,它将 Avro 架构包含在 avroSchema 记录标头属性中。
您可以使用记录:属性
或记录:属性或默认值
函数来访问属性中的信息。有关使用记录标头属性的详细信息,请参阅使用标头属性。
- avroSchema - 在处理 Avro 数据时,提供 Avro schema.
- 偏移量 - 记录源自的偏移量。
- 分区 - 记录源自的分区。
- 主题 - 记录源自的主题。
启用安全性
您可以将卡夫卡多主题消费者源配置为通过 SSL/TLS 和/或 Kerberos 安全地连接到卡夫卡。
启用 SSL/红绿灯系统
- 要使用 SSL/TLS 进行连接,请首先确保按照卡夫卡文档中所述,将卡夫卡配置为使用 SSL/TLS。
- 在“卡夫卡”选项卡上,添加“卡夫卡”配置属性并将其设置为 SSL。
- 然后添加并配置以下 SSL 卡夫卡属性:
- 信任库位置
- 信任库
当 Kafka 代理需要客户端身份验证时 - 当 ssl.client.auth 代理属性设置为“必需”时 , 添加并配置以下属性:- 位置
- 密码
- .key密码
某些代理可能还需要添加以下属性:- ssl.enabled.协议
- 信任库类型
- 密钥库类型
有关这些属性的详细信息,请参阅 Kafka 文档。
例如,以下属性允许阶段使用 SSL/TLS 通过客户端身份验证连接到卡夫卡:
启用 Kerberos (SASL)
使用 Kerberos 身份验证时,数据收集器将使用 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
- 在没有 LDAP 认证的情况下安装 RPM、压缩包或 Cloudera 管理器 - 如果数据收集器不使用 LDAP 认证,请在数据收集器计算机上创建一个单独的 JAAS 配置文件。将以下登录部分添加到文件中: