Kafka Source是一个Apache Kafka消费者,它从Kafka主题中读取消息。 如果您正在运行多个Kafka Source,可以为这些Source配置相同的消费者组(Consumer Group),以便每个Source都读取一组唯一的主题分区。
属性名称 | 默认值 | 描述 |
channels | – | |
type | – | 组件类型名称,需要是 |
kafka.bootstrap.servers | – | source使用的Kafka集群中的代理列表 |
kafka.consumer.group.id | flume | consumer group 唯一标识. 在多个源或代理中设置相同的ID表示它们是同一个consumer group的一部分 |
kafka.topics | – | 以逗号分隔的主题列表,kafka消费者将从中读取消息。 |
kafka.topics.regex | – | 正则表达式,用于定义源订阅的主题集。 此属性具有比 |
batchSize | 1000 | 一批中写入Channel的最大消息数 |
batchDurationMillis | 1000 | Maximum time (in ms) before a batch will be written to Channel The batch will be written whenever the first of size and time will be reached. |
backoffSleepIncrement | 1000 | Initial and incremental wait time that is triggered when a Kafka Topic appears to be empty. Wait period will reduce aggressive pinging of an empty Kafka Topic. One second is ideal for ingestion use cases but a lower value may be required for low latency operations with interceptors. |
maxBackoffSleep | 5000 | Kafka主题出现为空时触发的最长等待时间。 5秒是摄取用例的理想选择,但使用拦截器的低延迟操作可能需要较低的值。 |
useFlumeEventFormat | false | 默认情况下,事件从Kafka主题直接作为字节直接进入事件主体。 设置为true以将事件读取为Flume Avro二进制格式。 与KafkaSink上的相同属性或Kafka Channel上的parseAsFlumeEvent属性一起使用时,这将保留在生成端发送的任何Flume标头。 |
setTopicHeader | true | 设置为true时,将检索到的消息的主题存储到由 |
topicHeader | topic | 如果setTopicHeader属性设置为true,则定义用于存储接收消息主题名称的标头名称。 如果与Kafka Sink |
migrateZookeeperOffsets | true | 如果找不到Kafka存储的偏移量,请在Zookeeper中查找偏移量并将它们提交给Kafka。 这应该是支持从旧版本的Flume无缝Kafka客户端迁移。 迁移后,可以将其设置为false,但通常不需要这样做。 如果未找到Zookeeper偏移量,则Kafka配置kafka.consumer.auto.offset.reset定义如何处理偏移量。 有关详细信息,请查看Kafka文档 |
kafka.consumer.security.protocol | PLAINTEXT | 如果使用某种级别的安全性写入Kafka,则设置为 |
more consumer security props | 如果使用 | |
Other Kafka Consumer Properties | – | 这些属性用于配置Kafka Consumer。 可以使用Kafka支持的任何consumer property。 唯一的要求是使用前缀 |
Note
Kafka Source覆盖两个Kafka consumer 参数:sourceauto.commit.enable
设置为“false”,并且每个批处理都已提交。 Kafka source 保证至少一次消息检索策略。 source启动时可以存在重复项。 Kafka Source还提供了key.deserializer(org.apache.kafka.common.serialization.StringSerializer)和value.deserializer(org.apache.kafka.common.serialization.ByteArraySerializer)的默认值。 不建议修改这些参数。
不推荐使用的属性
Property Name | Default | Description |
topic | – | Use kafka.topics |
groupId | flume | Use kafka.consumer.group.id |
zookeeperConnect | – | 自0.9.x以来,kafka消费者客户不再支持。使用kafka.bootstrap.servers与kafka集群建立连接 |
通过逗号分隔的主题列表进行主题订阅的示例。
tier1.sources.source1.type = org.apache.flume.source.kafka.KafkaSource
tier1.sources.source1.channels = channel1
tier1.sources.source1.batchSize = 5000
tier1.sources.source1.batchDurationMillis = 2000
tier1.sources.source1.kafka.bootstrap.servers = localhost:9092
tier1.sources.source1.kafka.topics = test1, test2
tier1.sources.source1.kafka.consumer.group.id = custom.g.id
正则表达式主题订阅的示例
tier1.sources.source1.type = org.apache.flume.source.kafka.KafkaSource
tier1.sources.source1.channels = channel1
tier1.sources.source1.kafka.bootstrap.servers = localhost:9092
tier1.sources.source1.kafka.topics.regex = ^topic[0-9]$
# the default kafka.consumer.group.id=flume is used
Security and Kafka Source:
Flume和Kafka之间的通信渠道支持安全认证和数据加密。 对于安全身份验证,可以使用Kafka 0.9.0版中的SASL / GSSAPI(Kerberos V5)或SSL(即使该参数名为SSL,实际协议是TLS实现)。
截至目前,数据加密仅由SSL / TLS提供。
将kafka.consumer.security.protocol
设置为以下任意值意味着:
- SASL_PLAINTEXT - 没有数据加密的Kerberos或纯文本身份验证
- SASL_SSL - 使用数据加密的Kerberos或纯文本身份验证
- SSL - 基于TLS的加密和可选的身份验证。
警告:启用SSL时性能会下降,其大小取决于CPU类型和JVM实现。 Reference: Kafka security overview and the jira for tracking this issue: KAFKA-2561
TLS and Kafka Source:
请阅读配置Kafka客户端SSL中描述的步骤,以了解用于微调的其他配置设置,例如以下任何一项:安全提供程序,密码套件,启用的协议,信任库或密钥库类型。
配置服务器端身份验证和数据加密的示例。
a1.sources.source1.type = org.apache.flume.source.kafka.KafkaSource
a1.sources.source1.kafka.bootstrap.servers = kafka-1:9093,kafka-2:9093,kafka-3:9093
a1.sources.source1.kafka.topics = mytopic
a1.sources.source1.kafka.consumer.group.id = flume-consumer
a1.sources.source1.kafka.consumer.security.protocol = SSL
a1.sources.source1.kafka.consumer.ssl.truststore.location=/path/to/truststore.jks
a1.sources.source1.kafka.consumer.ssl.truststore.password=<password to access the truststore>
注意:默认情况下,未定义属性ssl.endpoint.identification.algorithm
,因此不会执行主机名验证。 要启用主机名验证,请设置以下属性
a1.sources.source1.kafka.consumer.ssl.endpoint.identification.algorithm=HTTPS
启用后,客户端将根据以下两个字段之一验证服务器的完全限定域名(FQDN):
如果还需要客户端身份验证,则还应将以下内容添加到Flume代理配置中。 每个Flume代理都必须拥有其客户证书,该证书必须由Kafka brokers 单独或通过其签名链进行信任。 常见示例是由单个根CA签署每个客户端证书,而后者又由Kafka代理信任。
a1.sources.source1.kafka.consumer.ssl.keystore.location=/path/to/client.keystore.jks
a1.sources.source1.kafka.consumer.ssl.keystore.password=<password to access the keystore>
如果密钥库和密钥使用不同的密码保护,则ssl.key.password
属性将为两个使用者密钥库提供所需的额外密钥:
a1.sources.source1.kafka.consumer.ssl.key.password=<password to access the key>