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.serverssource使用的Kafka集群中的代理列表
kafka.consumer.group.idflumeconsumer group 唯一标识. 在多个源或代理中设置相同的ID表示它们是同一个consumer group的一部分
kafka.topics以逗号分隔的主题列表,kafka消费者将从中读取消息。
kafka.topics.regex正则表达式,用于定义源订阅的主题集。 此属性具有比kafka.topics更高的优先级,并覆盖kafka.topics(如果存在)
batchSize1000一批中写入Channel的最大消息数
batchDurationMillis1000Maximum 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.
backoffSleepIncrement1000Initial 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.
maxBackoffSleep5000Kafka主题出现为空时触发的最长等待时间。 5秒是摄取用例的理想选择,但使用拦截器的低延迟操作可能需要较低的值。
useFlumeEventFormatfalse默认情况下,事件从Kafka主题直接作为字节直接进入事件主体。 设置为true以将事件读取为Flume Avro二进制格式。 与KafkaSink上的相同属性或Kafka Channel上的parseAsFlumeEvent属性一起使用时,这将保留在生成端发送的任何Flume标头。
setTopicHeadertrue设置为true时,将检索到的消息的主题存储到由topicHeader属性定义的标头中。
topicHeadertopic如果setTopicHeader属性设置为true,则定义用于存储接收消息主题名称的标头名称。 如果与Kafka Sink topicHeader属性结合使用,应该小心,以避免将消息发送回循环中的同一主题。
migrateZookeeperOffsetstrue如果找不到Kafka存储的偏移量,请在Zookeeper中查找偏移量并将它们提交给Kafka。 这应该是支持从旧版本的Flume无缝Kafka客户端迁移。 迁移后,可以将其设置为false,但通常不需要这样做。 如果未找到Zookeeper偏移量,则Kafka配置kafka.consumer.auto.offset.reset定义如何处理偏移量。 有关详细信息,请查看Kafka文档
kafka.consumer.security.protocolPLAINTEXT如果使用某种级别的安全性写入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 NameDefaultDescription
topicUse kafka.topics
groupIdflumeUse 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>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个示例的file-flume-kafka.conf配置文件,您可以根据自己的需求进行修改: ```properties # Name the components on this agent kafka-flume-agent.sources = kafka-source kafka-flume-agent.channels = kafka-channel kafka-flume-agent.sinks = logger-sink # Describe/configure the source kafka-flume-agent.sources.kafka-source.type = org.apache.flume.source.kafka.KafkaSource kafka-flume-agent.sources.kafka-source.zookeeperConnect = hadoop102:2181,hadoop103:2181,hadoop104:2181 kafka-flume-agent.sources.kafka-source.topic = test-topic kafka-flume-agent.sources.kafka-source.batchSize = 1000 # Describe the sink kafka-flume-agent.sinks.logger-sink.type = logger # Use a channel which buffers events in memory kafka-flume-agent.channels.kafka-channel.type = memory kafka-flume-agent.channels.kafka-channel.capacity = 10000 kafka-flume-agent.channels.kafka-channel.transactionCapacity = 1000 # Bind the source and sink to the channel kafka-flume-agent.sources.kafka-source.channels = kafka-channel kafka-flume-agent.sinks.logger-sink.channel = kafka-channel ``` 这个示例配置文件定义了一个名为"kafka-flume-agent"的Flume代理程序,它从名为"test-topic"的Kafka主题中读取数据,并将其写入到一个内存通道中。 注意,这个示例配置文件中的"zookeeperConnect"参数指定了Kafka使用的Zookeeper地址,您需要根据自己的实际情况进行修改。 启动这个配置文件的方法已经在上一条回答中给出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值