整合一下Flume常见的Source、Channel、Sink的配置
--------------------------常见的Source的配置--------------------
Avro Source配置:
参数 | 默认值 | 描述 |
---|---|---|
channels | - | 与之相连的Channel,可以配置多个。用空格隔开。在单个代理流程中,是通过channel连接sources和sinks。一个source实例对应多个channels,但一个sink实例只能对应一个channel。 |
type | avro | 类型,需设置为“avro”。每一种source的类型都为相应的固定值。 |
bind | - | 绑定和source关联的主机名或IP地址。 |
port | - | 绑定端口号。 |
ssl | false | 是否使用SSL加密。true or false |
truststore-type | JKS | Java信任库类型。填写JKS或其他java支持的truststore类型。 |
truststore | - | Java信任库类型。填写JKS或其他java支持的truststore类型。 |
truststore-password | - | Java信任库密码。 |
keystore-type | JKS | 密钥存储类型。填写JKS或其他java支持的truststore类型。 |
keystore | - | 密钥存储文件。 |
keystore-password | avro | 密钥存储密码。 |
Spooling Source 配置:
参数 | 默认值 | 描述 |
---|---|---|
channels | - | 与之相连的Channel,可以配置多个。 |
type | spooldir | 类型,需设置为“spooldir”。 |
monTime | 0(不开启) | 线程监控阈值,更新时间大于阈值时会重新启动该Source,单位:秒。 |
spoolDir | - | 监控目录 |
fileSuffix | .COMPLETED | 文件传输完成后添加的后缀。 |
deletePolicy | never | 文件传输完成后源文件删除策略,支持“never”或“immediate”。分别别是从不删除和立即删除 |
ignorePattern | ^$ | 忽略文件的正则表达式表示。 |
trackerDir | .flumespool | 传输过程中元数据存储路径。 |
batchSize | 1000 | Source传输粒度。 |
decodeErrorPolicy | FAIL | 编码错误策略。可选FAIL、REPLACE、IGNORE。 FAIL:抛出异常并让解析失败 REPLACE:将不能识别的字符用其它字符代替,通常是字符U+FFFD。 IGNORE:直接丢弃不能解析的字符串。 说明:如果文件中有编码错误,请配置“decodeErrorPolicy”为“REPLACE”或“IGNORE”Flume遇到编码错误将跳过编码错误,继续采集后续日志。 |
deserializer | LINE | 文件解析器,值为“LINE”或 “BufferedLine”。 配置为“LINE”时,对从文件读取的字符逐个转码。 配置为“BufferedLine”时,对文件读取的一行或多行的字符进行批量转码,性能更优。 |
deserializer.maxLineLength | 2048 | 按行解析最大长度。0到 2,147,483,647。 |
deserializer.maxBatchLine | 1 | 按行解析最多行数,如果行数设置为多行,“maxLineLength”也应该设置为相应的倍数。例如maxBatchLine设置为2,“maxLineLength”相应的设置为2048*2为4096。 |
selector.type | replicating | 选择器类型,支持“replicating”或“multiplexing”。 “replicating”表示同样的内容会发给每一个channel。 “multiplexing”表示根据分发规则,有选择地发给某些channel。 |
interceptors | - | 拦截器配置。 |
说明:
Spooling Source在按行读取过程中,会忽略掉每一个Event的最后一个换行符,该换行符所占用的数据量指标不会被Flume统计。
Kafka Source 配置:
参数 | 默认值 | 描述 |
---|---|---|
channels | - | 与之相连的Channel,可以配置多个。 |
type | org.apache.flume.source.kafka.KafkaSource | 需设置为“org.apache.flume.source.kafka.KafkaSource”。 |
monTime | 0(不开启) | 线程监控阈值,更新时间大于阈值时重新启动该Source,单位:秒 |
batchSize | 1000 | 每次写入Channel的Event数量 |
batchDurationMillis | 1000 | 每次消费topic数据的最大时长,单位:毫秒 |
keepTopicInHeader | false | 是否在Event Header中保存topic,如果保存,Kafka Sink配置的topic将无效。 true false |
keepPartitionInHeader | false | 是否在Event Header中保存partitionID,如果保存,Kafka Sink将写入对应的Partition。 true false |
kafka.bootstrap.servers | - | brokers地址列表,多个地址用英文逗号分隔。 |
kafka.consumer.group.id | - | Kafka消费者组ID。 |
kafka.topics | - | 订阅的kafka topic列表,用英文逗号分隔 |
kafka.topics.regex | - | 符合正则表达式的topic会被订阅,优先级高于“kafka.topics”,如果配置将覆盖“kafka.topics” |
kafka.security.protocol | SASL_PLAINTEXT | Kafka安全协议,未启用Kerberos集群中须配置为“PLAINTEXT” |
Other Kafka Consumer Properties | - | 其他Kafka配置,可以接受任意Kafka支持的消费参数配置,配置需要加前缀“.kafka” |
Taildir Source 配置:
参数 | 默认值 | 描述 |
---|---|---|
channels | - | 与之相连的Channel,可以配置多个 |
type | taildir | 类型,需配置为“taildir” |
filegroups | - | 设置采集文件目录分组名字,分组名字中间使用空格间隔 |
filegroups..parentDir | - | 父目录,需要配置为绝对路径 |
filegroups..filePattern | - | 相对父目录的文件路径,可以包含目录,支持正则表达式,须与父目录联合使用 |
positionFile | - | 传输过程中元数据存储路径 |
headers.. | - | 设置某一个分组采集数据时Event中的key-value值 |
byteOffsetHeader | false | 是否在每一个Event头中携带该Event在源文件中的位置信息,该信息保存在“byteoffset”变量中 |
skipToEnd | false | Flume在重启后是否直接定位到文件最新的位置处,以读取最新的数据 |
idleTimeout | 120000 | 设置读取文件的空闲时间,单位:毫秒。如果在该时间内文件内容没有变更,关闭掉该文件,关闭后如果该文件有数据写入,重新打开并读取数据 |
writePosInterval | 3000 | 设置将元数据写入到文件的周期,单位:毫秒 |
batchSize | 1000 | 批次写入Channel的Event数量 |
monTime | 0(不开启) | 线程监控阈值,更新时间大于阈值时重新启动该Source,单位:秒 |
-------------------------------常用Channel配置---------------------------
Memory Channel 配置:
Memory Channel使用内存作为缓存区,Events存放在内存队列中
参数 | 默认值 | 描述 |
---|---|---|
type | - | 类型,需配置为“memory” |
capacity | 10000 | 缓存在Channel中的最大Event数 |
transactionCapacity | 1000 | 每次存取的最大Event数 |
channelfullcount | 10 | Channel full次数,达到该次数后发送告警 |
File Channel 配置:
File Channel使用本地磁盘作为缓存区,Events存放在设置的“dataDirs”配置项文件夹中
参数 | 默认值 | 描述 |
---|---|---|
type | - | 类型,需配置为“memory” |
checkpointDir | - | 检查点存放路径 |
dataDirs | - | 数据缓存路径,设置多个路径可提升性能,中间用逗号分开 |
maxFileSize | 2146435071 | 单个缓存文件的最大值,单位:字节 |
minimumRequiredSpace | 524288000 | 缓冲区空闲空间最小值,单位:字节 |
capacity | 1000000 | 缓存在Channel中的最大Event数 |
transactionCapacity | 10000 | 每次存取的最大Event数 |
channelfullcount | 10 | Channel full次数,达到该次数后发送告警 |
Kafka Channel 配置:
Kafka Channel使用kafka集群缓存数据,Kafka提供高可用、多副本,以防Flume或Kafka Broker崩溃,Channel中的数据会立即被Sink消费
参数 | 默认值 | 描述 |
---|---|---|
type | org.apache.flume.channel.kafka.KafkaChannel | 类型,需配置为“org.apache.flume.channel.kafka.KafkaChannel” |
kafka.bootstrap.servers | - | kafka broker列表 |
kafka.topic | flume-channel | Channel用来缓存数据的topic |
kafka.consumer.group.id | flume | Kafka消费者组ID |
parseAsFlumeEvent | true | 是否解析为Flume event |
migrateZookeeperOffsets | true | 当Kafka没有存储offset时,是否从ZooKeeper中查找,并提交到Kafka |
kafka.consumer.auto.offset.reset | latest | 当没有offset记录时,从指定的位置消费数据 |
kafka.producer.security.protocol | SASL_PLAINTEXT | Kafka生产者安全协议 |
kafka.consumer.security.protocol | SASL_PLAINTEXT | Kafka消费者安全协议。 |
-------------------------------常用Sink配置---------------------------
HDFS Sink 配置:
将数据写入HDFS
参数 | 默认值 | 描述 |
---|---|---|
channel | - | 与之相连的Channel |
type | hdfs | 类型,需配置为“hdfs” |
monTime | 0(不开启) | 线程监控阈值,更新时间大于阈值时重新启动该Sink,单位:秒 |
hdfs.path | - | HDFS路径 |
hdfs.inUseSuffix | .tmp | 正在写入的HDFS文件后缀 |
hdfs.rollInterval | 30 | 按时间滚动文件,单位:秒 |
hdfs.rollSize | 1024 | 按大小滚动文件,单位:字节 |
hdfs.rollCount | 10 | 按Event个数滚动文件 |
hdfs.idleTimeout | 0 | 自动关闭空闲文件超时时间,单位:秒 |
hdfs.batchSize | 1000 | 每次写入HDFS的Event个数 |
hdfs.kerberosPrincipal | - | 认证HDFS的Kerberos用户名,未启用Kerberos认证集群不配置 |
hdfs.kerberosKeytab | - | 认证HDFS的Kerberos keytab路径,未启用Kerberos认证集群不配置 |
hdfs.fileCloseByEndEvent | true | 收到最后一个Event时是否关闭文件 |
hdfs.batchCallTimeout | - | 每次写入HDFS超时控制时间,单位:毫秒。 当不配置此参数时,对每个Event写入HDFS进行超时控制。 当“hdfs.batchSize”大于0时,配置此参数可以提升写入HDFS性能。 说明: “hdfs.batchCallTimeout”设置多长时间需要考虑“hdfs.batchSize”的大小, “hdfs.batchSize”越大,“hdfs.batchCallTimeout”也要调整更长时间,设置过短时间容易导致数据写入HDFS失败。 |
serializer.appendNewline | true | 将一个Event写入HDFS后是否追加换行符(’\n’),如果追加该换行符,该换行符所占用的数据量指标不会被HDFS Sink统计 |
Kafka Sink 配置:
Kafka Sink将数据写入到Kafka中
参数 | 默认值 | 描述 |
---|---|---|
channel | - | 与之相连的Channel |
type | org.apache.flume.sink.kafka.KafkaSink | 类型,需配置为“org.apache.flume.sink.kafka.KafkaSink” |
kafka.bootstrap.servers | - | Kafkabrokers列表,多个用英文逗号分隔 |
monTime | 0(不开启) | 线程监控阈值,更新时间大于阈值时重新启动该Sink,单位:秒 |
kafka.topic | default-flume-topic | 数据写入的topic |
flumeBatchSize | 10000 | 每次写入Kafka的Event个数 |
kafka.security.protocol | SASL_PLAINTEXT | Kafka安全协议,未启用Kerberos认证集群下须配置为“PLAINTEXT” |
kafka.kerberos.domain.name | - | Kafka Domain名称。安全集群必填 |
HBase Sink 配置:
HBase Sink将数据写入到HBase中
参数 | 默认值 | 描述 |
---|---|---|
channel | - | 与之相连的Channel |
type | hbase | 类型,需配置为“hbase” |
table | - | HBase表名称 |
monTime | 0(不开启) | 线程监控阈值,更新时间大于阈值时重新启动该Sink,单位:秒 |
columnFamily | - | HBase列族名称 |
batchSize | 1000 | 每次写入HBase的Event个数 |
kerberosPrincipal | - | 认证HBase的Kerberos用户名,未启用Kerberos认证集群不配 |
kerberosKeytab | - | 认证HBase的Kerberos keytab路径,未启用Kerberos认证集群不配置 |