flume 1.9 源码阅读(四) Source配置

上一篇文章最后说到了AgentConfiguration这个类,他是flume配置文件中最核心的东西。我们先放一放看一下flume配置文件到底都有哪些东西然后回头再来看这个类以及sources、channels、sinks等组件是如何实例化的。

从官网上扒下来的一些资料:

AvroSource

属性名称默认值描述
channels-sources要连接的channels
type-source的类型,这里是avro
bind-要监听的主机名称或者是ip地址
port-监听的的端口
threads-最大线程数
selector.type
selector.*
interceptiors-用空格分开的拦截器
interceptiors.*-
compression-typenone这个值应该为 none 或者 deflate, 压缩类型必须匹配AvroSource的压缩类型
sslfalsesecure socket layer(安全套接层),当ssl被启用时,还必须同时制定keystore和keystore-password,可以在component级别设置,也可以在全局进行设置。
keystore-java keystore 文件路径,如果这里面没有指定,将使用全局keystore,如果全局keystore也没有配置,将会报错。
keystore-password-java keystore的密码,如果这里面没有指定,将使用全局keystore-password,如果全局keystore-password也没有配置,将会报错。
keystore-typeJKSjava keystore 类型, 可以取值为 jks 或者 pkcs12。 如果这里没有指定将使用全局keystore-type,如果全局keystore-type没有配置,将使用默认值JKS
exclude-protocolsSSLv3要排除的 SSL/TLS 协议列表(以空格分开),SSLv3协议会一直被排除在外
include-protocols-要引入的 SSL/TLS协议列表(以空格分开), 当此配置为空的时候,将引用所有支持的协议
exclude-cipher-suites-要排除的加密方法(以空格分开)
include-cipher-suites-要引入的加密方法(以空格分开),当此配置为空的时候,将引入所有支持的加密方式
ipFilterfalse为netty添加 ip 过滤
ipFilterRules-定义netty ipFilter 匹配规则

例如:

a1.sources = r1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.channels = c1
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 4141

Exec Source

属性名称默认值描述
channels-sources要连接的channels
type-source的类型,这里是exec
command-要执行的命令
shell执行命令的shell
restartThrottle10000尝试重新启动之前要等待的时间(以毫秒为单位)
restartfalse当执行命令的cmd挂掉是否重启
logStdErrfalse标准错误的输出是否要被记录到日志
batchSize20可以一次读到的最大行数并发送给channel
batchTimeout3000超时时间(以毫秒为单位,当缓存没有达到刷新大小时
selector.typereplicating这个配置为 replicatiing 或者 multiplexing
selector.*根据 selector.type值决定
interceptors-拦截器列表(以空格分开)
interceptors.*

例如:

a1.sources = r1
a1.channels = c1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /var/log/secure
a1.sources.r1.channels = c1

shell配置用来通过命令行调用命令,通常shell配置为 /bin/sh -c,/bin/ksh -c,cmd /c,powershell -Command等

例如:

a1.sources.tailsource-1.type = exec
a1.sources.tailsource-1.shell = /bin/bash -c
a1.sources.tailsource-1.command = for i in /path/*.txt; do cat $i; done

Taildir Source

监视指定的文件,近实时查看文件尾部,当有新一行被追加的时候,这个source会一直读取这一行直到整个行写完,这个source非常可靠,即使在文件回滚的时候他也不会丢失任何数据,他周期性的将最后读到的位置信息已json格式存到文件中,当flume因为一些原因停止后,他还可以通过记录位置文件重新获取上次读到的位置。

属性名称默认值描述
channels-sources要连接的channels
type-source的类型,这里是TAILDIR
filegroups-一些用空格分开的文件集合,每一个集合代表一些列要被读取的文件
filegroups.<filegroupName>-文件集合的绝对路径 ,正则表达式只能用于文件名
positionFile~/.flume/taildir_position.json以json格式记录的inode,记录每个文件的绝对路径以及该文件最后读到的位置信息
heders.<filegroupName>.<headerKey>-Header value which is the set with header key. Multiple headers can be specified for one file group.
byteOffsetHeaderfalseWhether to add the byte offset of a tailed line to a header called ‘byteoffset’.
skipToEndfalse是否直接定位到文件尾部,以防没有写入位置文件
idleTimeout120000超时时间(ms),用来关闭长时间未激活的文件,如果已经被关闭的文件有新的行被追加,这个source将会自动重新打开该文件
writePosInterval3000将位置信息写入位置文件的间隔时间
batchSize100每一次读到最大的行数并发送给channel, 一般推荐使用默认值
maxBatchCountLong.MAX_VLUE控制从同一文件连续读取的批次数。 如果source读取多个文件,并且其中一个文件的写入速度很快,则它可能会阻止其他文件被处理,因为繁忙文件将被无休止地读取。 在这种情况下,请降低此值。
backoffSleepIncrement1000最后一次尝试未找到任何新数据时,重新尝试轮询新数据之前的时间延迟增量。
maxBackoffSleep5000当最后一次尝试未找到任何新数据时,每次重新尝试轮询新数据之间的最大时间延迟。
cachePatternMatchingtrueListing directories and applying the filename regex pattern may be time consuming for directories containing thousands of files. Caching the list of matching files can improve performance. The order in which files are consumed will also be cached. Requires that the file system keeps track of modification times with at least a 1-second granularity.
fileHeaderfalse是否增加一个header用来存储文件的绝对路径
fileHeaderKeyfileHeader key to use when appending absolute path filename to event header.

例如:

a1.sources = r1
a1.channels = c1
a1.sources.r1.type = TAILDIR
a1.sources.r1.channels = c1
a1.sources.r1.positionFile = /var/log/flume/taildir_position.json
a1.sources.r1.filegroups = f1 f2
a1.sources.r1.filegroups.f1 = /var/log/test1/example.log
a1.sources.r1.headers.f1.headerKey1 = value1
a1.sources.r1.filegroups.f2 = /var/log/test2/.log.
a1.sources.r1.headers.f2.headerKey1 = value2
a1.sources.r1.headers.f2.headerKey2 = value2-2
a1.sources.r1.fileHeader = true
a1.sources.ri.maxBatchCount = 1000

Kafka Source

kafka source就是一个消费者用于消费kafka 某些topics的,如果有多个kafka sources运行, 我们可以配置他们为同一个消费者组,这样每一个消费者将会读取一个唯一的partitions集合,这个source只支持0.10.1.0以上版本

属性名称默认值描述
channels-sources要连接的channels
type-source的类型,这里是org.apache.flume.source.kafka.KafkaSource
kafka.bootstrap.servers-要执行的命令
kafka.topics-逗号分隔topics
kafka.topics.regex-正则表达式要订阅的topics,这个配置的优先级高于kafka.topics,他会覆盖kafka.topics
kafka.consumer.group.id-消费者id,当有多个source或者agent的时候使用相同的此配置代表他们的consumer group相同
batchSize1000一次batch中最大可写入channel的消息数
batchDurationMillis1000ms当batchSize没有达到最大值的时候,超过这个时间也会写入到 channel
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.
maxBackoffSleep5000Maximum wait time that is triggered when a Kafka Topic appears to be empty. Five seconds is ideal for ingestion use cases but a lower value may be required for low latency operations with interceptors.
useFlumeEventFormatfalseBy default events are taken as bytes from the Kafka topic directly into the event body. Set to true to read events as the Flume Avro binary format. Used in conjunction with the same property on the KafkaSink or with the parseAsFlumeEvent property on the Kafka Channel this will preserve any Flume headers sent on the producing side.
setTopicHeadertrueWhen set to true, stores the topic of the retrieved message into a header, defined by the topicHeader property.
topicHeadertopicDefines the name of the header in which to store the name of the topic the message was received from, if the setTopicHeader property is set to true. Care should be taken if combining with the Kafka Sink topicHeader property so as to avoid sending the message back to the same topic in a loop.
kafka.consumer.security.protocolPLAINTEXTSet to SASL_PLAINTEXT, SASL_SSL or SSL if writing to Kafka using some level of security. See below for additional info on secure setup.
mere consumer security propsIf using SASL_PLAINTEXT, SASL_SSL or SSL refer to Kafka security for additional properties that need to be set on consumer.
Other kafka Consumer Properties-These properties are used to configure the Kafka Consumer. Any consumer property supported by Kafka can be used. The only requirement is to prepend the property name with the prefix kafka.consumer. For example: kafka.consumer.auto.offset.reset

例如:

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

以上是我们项目中用到的一些source,https://flume.apache.org/FlumeUserGuide.html#setting-up-an-agent 官网上可以找到所有source的完整配置。需要的朋友可以去看一下。

flume 通过这些配置,将用户想使用的 source 实例化。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值