设为首页 加入收藏

TOP

Flume (十) Sources - Kafka Source
2018-12-05 02:26:36 】 浏览:168
Tags:Flume Sources Kafka Source

Kafka Source是一个Apache Kafka消费者,它从Kafka主题中读取消息。 如果您正在运行多个Kafka Source,可以为这些Source配置相同的消费者组(Consumer Group),以便每个Source都读取一组唯一的主题分区。

属性名称 默认值 描述
channels
type 组件类型名称,需要是org.apache.flume.source.kafka.KafkaSource
kafka.bootstrap.servers source使用的Kafka集群中的代理列表
kafka.consumer.group.id flume consumer group 唯一标识. 在多个源或代理中设置相同的ID表示它们是同一个consumer group的一部分
kafka.topics 以逗号分隔的主题列表,kafka消费者将从中读取消息。
kafka.topics.regex 正则表达式,用于定义源订阅的主题集。 此属性具有比kafka.topics更高的优先级,并覆盖kafka.topics(如果存在)
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属性定义的标头中。
topicHeader topic 如果setTopicHeader属性设置为true,则定义用于存储接收消息主题名称的标头名称。 如果与Kafka Sink topicHeader属性结合使用,应该小心,以避免将消息发送回循环中的同一主题。
migrateZookeeperOffsets true 如果找不到Kafka存储的偏移量,请在Zookeeper中查找偏移量并将它们提交给Kafka。 这应该是支持从旧版本的Flume无缝Kafka客户端迁移。 迁移后,可以将其设置为false,但通常不需要这样做。 如果未找到Zookeeper偏移量,则Kafka配置kafka.consumer.auto.offset.reset定义如何处理偏移量。 有关详细信息,请查看Kafka文档
kafka.consumer.security.protocol PLAINTEXT 如果使用某种级别的安全性写入Kafka,则设置为SASL_PLAINTEXTSASL_SSLSSL。 有关安全设置的其他信息,请参见下文。
more consumer security props 如果使用SASL_PLAINTEXT,则SASL_SSLSSL会引用Kafka安全性以获取需要在使用者上设置的其他属性。
Other Kafka Consumer Properties 这些属性用于配置Kafka Consumer。 可以使用Kafka支持的任何consumer property。 唯一的要求是使用前缀kafka.consumer添加属性名称。 例如:kafka.consumer.auto.offset.reset

Note
Kafka Source覆盖两个Kafka consumer 参数:source auto.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>
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ICC副本>>>>(logback.. 下一篇【kafka】Flume+Kafka+logstash+E..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目