最全Flume常用配置文件详情解析
- 1、Source配置项(常见配置项)
-
- 1.1 Avro Source
- 1.2 NetCat Source
- 1.3 Exec Source
- 1.4 Spooling Directory Source
- 1.5 Taildir Source
- 1.6 Thrift Source
- 1.7 Kafka Source
- 1.8 Sequence Generator Source
- 1.9 HTTP Source
- 2、Channels 配置项 (常见配置项)
-
- 2.1 Memory Channel
- 2.2 JDBC Channel
- 2.3 kafka Channel
- 2.4 File Channel
- 3、Sink 配置项 (常见配置项)
-
- 3.1 Logger Sink
- 3.2 HDFS Sink
- 3.3 Hive Sink
- 3.4 Avro Sink
- 3.5 Thrift Sink
- 3.6 File Roll Sink
- 3.7 HBaseSinks
-
- 3.7.1 HBaseSink
- 3.7.2 AsyncHBaseSink
- 3.8 ElasticSearchSink
- 3.9 Kafka Sink
注:以下配置项均为常见配置项,查询详细配置项可以访问 Flume官网。
1、Source配置项(常见配置项)
1.1 Avro Source
不同主机上的Agent通过网络传输数据可使用的Source,一般是接受Avro client的数据,或和是上一级Agent的Avro Sink成对存在。
配置项名称 | 默认值 | 描述 |
---|---|---|
Channel | — | |
type | — | 组件类型名称,必须为avro |
bind | — | 要监听的主机名或IP地址 |
port | — | 要绑定的端口号 |
threads | — | 产生的最大工作线程数 |
ipFilterRules | — | 使用此配置定义N个netty ipFilter模式规则。 |
selector.type | ||
selector.* | ||
interceptors | — | 拦截器列表 |
interceptors.* | ||
compression-type | none | 可设置为“none” 或 “deflate”. 压缩类型需要和AvroSource匹配 |
1.2 NetCat Source
NetCat Source可以使用TCP和UDP两种协议方式,使用方法基本相同,通过监听指定的IP和端口来传输数据,它会将监听到的每一行数据转化成一个Event写入到Channel中。
配置项名称 | 默认值 | 描述 |
---|---|---|
channels | — | |
type | — | 类型指定为:netcat |
bind | — | 绑定机器名或IP地址 |
port | — | 端口号 |
max-line-length | 512 | 一行的最大字节数 |
ack-every-event | true | 对成功接受的Event返回OK |
selector.type | replicating | 选择器类型replicating or multiplexing |
selector.* | 选择器相关参数 | |
interceptors | — | 拦截器列表,多个以空格分隔 |
interceptors.* | 拦截器相关参数 |
1.3 Exec Source
Exec source通过执行给定的Unix命令的传输结果数据,如,cat,tail -F等,实时性比较高,但是一旦Agent进程出现问题,可能会导致数据的丢失。
配置项名称 | 默认值 | 描述 |
---|---|---|
channels | ||
type | _ | 类型指定为:exec |
command | – | 需要去执行的命令 |
shell | _ | 运行命令的shell脚本文件 |
restartThrottle | 10000 | 尝试重启的超时时间 |
restart | false | 如果命令执行失败,是否重启 |
logStdErr | false | 是否记录错误日志 |
batchSize | 20 | 批次写入channel的最大日志数量 |
batchTimeout | 3000 | 批次写入数据的最大等待时间(毫秒) |
selector.type | replicating | 选择器类型replicating or multiplexing |
selector.* | 选择器其他参数 | |
interceptors | – | 拦截器列表,多个空格分隔 |
interceptors.* |
1.4 Spooling Directory Source
通过监控一个文件夹将新增文件内容转换成Event传输数据,特点是不会丢失数据,使用Spooling Directory Source需要注意的两点是,1)不能对被监控的文件夹下的新增的文件做出任何更改,2)新增到监控文件夹的文件名称必须是唯一的。由于是对整个新增文件的监控,Spooling Directory Source的实时性相对较低,不过可以采用对文件高粒度分割达到近似实时
配置项名称 | 默认值 | 描述 |
---|---|---|
channels | ||
type | _ | 类型指定:spooldir. |
spoolDir | – | 被监控的文件夹目录 |
fileSuffix | .COMPLETED | 完成数据传输的文件后缀标志 |
deletePolicy | never | 删除已经完成数据传输的文件时间:never or immediate |
fileHeader | false | 是否在header中添加文件的完整路径信息 |
fileHeaderKey | file | 如果header中添加文件的完整路径信息时key的名称 |
basenameHeader | false | 是否在header中添加文件的基本名称信息 |
basenameHeaderKey | basename | 如果header中添加文件的基本名称信息时key的名称 |
includePattern | ^.*$ | 使用正则来匹配新增文件需要被传输数据的文件 |
ignorePattern | ^$ | 使用正则来忽略新增的文件 |
trackerDir | .flumespool | 存储元数据信息目录 |
consumeOrder | oldest | 文件消费顺序:oldest, youngest and random. |
maxBackoff | 4000 | 如果channel容量不足,尝试写入的超时时间,如果仍然不能写入,则会抛出ChannelException |
batchSize | 100 | 批次处理粒度 |
inputCharset | UTF-8 | 输入码表格式 |
decodeErrorPolicy | FAIL | 遇到不可解码字符后的处理方式:FAIL,REPLACE,IGNORE |
selector.type | replicating | 选择器类型:replicating or multiplexing |
selector.* | 选择器其他参数 | |
interceptors | — | 拦截器列表,空格分隔 |
interceptors.* | – |
1.5 Taildir Source
可以实时的监控指定一个或多个文件中的新增内容,由于该方式将数据的偏移量保存在一个指定的json文件中,即使在Agent挂掉或被kill也不会有数据的丢失,需要注意的是,该Source不能在Windows上使用。
配置项名称 | 默认值 | 描述 |
---|---|---|
channels | - | |
type | - | 指定类型:TAILDIR. |
filegroups | - | 文件组的名称,多个空格分隔 |
filegroups.< filegroupName> | - | 被监控文件的绝对路径 |
positionFile | ~/.flume/taildir_position.json | 存储数据偏移量路径 |
headers.< filegroupName>.< headerKey> | - | Header key的名称 |
byteOffsetHeader | false | 是否添加字节偏移量到key为‘byteoffset’值中 |
skipToEnd | false | 当偏移量不能写入到文件时是否跳到文件结尾 |
idleTimeout | 120000 | 关闭没有新增内容的文件超时时间(毫秒 |
writePosInterval | 3000 | 在positionfile 写入每一个文件lastposition的时间间隔 |
batchSize | 100 | 批次处理行数 |
fileHeader | false | 是否添加header存储文件绝对路径 |
fileHeaderKey | file | fileHeader启用时,使用的key |
1.6 Thrift Source
监听节省端口并从外部节省客户端流接收事件。当与另一个(前一个跃点)Flume代理上的内置ThriftSink配对时,它可以创建分层的集合拓扑。通过启用kerberos身份验证,可以将Thrift source配置为以安全模式启动。代理-主体和代理-keytab是Thrift源用于向kerberos KDC进行身份验证的属性。所需属性以粗体显示。
配置项名称 | 默认值 | 描述 |
---|---|---|
Channel | - | |
type | - | 组件类型名称,必须为Thrift |
bind | – | 要监听的主机名或IP地址 |
port | - | 要绑定到的端口# |
threads | - | 产生的最大工作线程数 |
selector.type | – | |
selector.* | ||
interceptors | - | 空格分隔的拦截器列表 |
interceptors.* | – | |
ssl | false | 将其设置为true以启用SSL加密。您还必须指定“密钥存储库”和“密钥存储库-密码”。 |
keystore | 这是Java密钥存储库文件的路径。SSL所必需的。 | |
keystore-password | – | Java密钥存储库的密码。SSL所必需的。 |
keystore-type | JKS | Java密钥存储库的类型。可以是“JKS”或“PKCS12”。 |
exclude-protocols | SSLv3 | 要排除的SSL/TLS协议的空格分隔列表。SSLv3总是被排除在外除了指定的协议。 |
kerberos | false | 设置为true以启用kerberos身份验证。在kerberos模式下,成功的身份验证需要代理-主体和代理-keytab。在安全模式下的节约源将只接受来自启用kerberos并成功地通过kerberos KDC身份验证的节约客户机的连接。 |
agent-principal | - | 节约源用于对kerberos KDC进行身份验证的kerberos主体。 |
agent-keytab | - | 节约源与代理-主体组合使用的用于向kerberos KDC进行身份验证的keytab位置。 |
1.7 Kafka Source
Kafka Source是一个Apache Kafka消费者,它读取来自Kafka主题的消息。如果有多个Kafka源在运行,可以将它们配置为相同的使用者组,这样每个使用者都将为主题读取一组惟一的分区。
配置项名称 | 默认值 | 描述 |
---|---|---|
channels | - | |
type | - | 组件类型名需要为org.apache.flume.source.kafka.KafkaSource |
kafka.bootstrap.servers | - | 源使用的Kafka集群中的代理列表 |
kafka.consumer.group.id | flume | 消费者群体的唯一标识。在多个源或代理中设置相同的id表明它们属于同一使用者组 |
kafka.topics | – | 以逗号分隔的主题从kafka消费者将读取消息。 |
kafka.topics.regex | - | 定义源订阅的主题集的正则表达式。这个属性比kafka具有更高的优先级。主题和超越kafka,如果存在主题 |
batchSize | 1000 | 在一个批处理中写入信道的最大消息数 |
batchDurationMillis | 1000 | 最大时间(在ms)之前批将被写入通道批将被写入第一个大小和时间将达到。 |
backoffSleepIncrement | 1000 | 当Kafka主题为空时触发的初始和增量等待时间。等待时间将减少空洞的kafka主题的侵略性脉冲。对于摄入用例来说,一秒是理想的,但是对于使用拦截器的低延迟操作,可能需要更低的值。 |
maxBackoffSleep | 5000 | 当Kafka主题显示为空时触发的最大等待时间。对于摄入用例,5秒是理想的,但是对于使用拦截器的低延迟操作,可能需要更低的值。 |
useFlumeEventFormat | false | 默认事件作为字节从卡夫卡的话题直接进入身体。设置为true以Flume Avro二进制格式读取事件。与KafkaSink上的相同属性或Kafka通道上的parseAsFlumeEvent属性一起使用,这将保留在生成端发送的所有Flume头文件。 |
migrateZookeeperOffsets | true | 当没有找到Kafka存储的偏移量时,在Zookeeper中查找偏移量并将其提交给Kafka。这应该是真实的,以支持无缝Kafka客户端迁移从旧版本的Flume。迁移后可以将其设置为false,但通常不需要这样做。如果没有发现Zookeeper偏移量,则Kafka配置Kafka .consumer.auto.offset。reset定义如何处理偏移量。查看Kafka文档了解详细信息 |
kafka.consumer.security.protocol | PLAINTEXT | SASL_PLAINTEXT, SASL_SSL或SSL如果写信给卡夫卡使用某种程度的安全。参见下面的附加信息安全设置。 |
more consumer security props | – | 如果使用sasl_明文,则SASL_SSL或SSL引用Kafka安全性来获得需要在消费者上设置的其他属性。 |
Other Kafka Consumer Properties | 这些属性用于配置Kafka使用者。可以使用Kafka支持的任何消费者属性。惟一的要求是在属性名前加上前缀kafka.consumer。例如:kafka.consumer.auto.offset.reset |
弃用属性
配置项名称 | 默认值 | 描述 |
---|---|---|
topic | - | 使用kafka.topics |
groupId | - | 使用kafka.consumer.group.id |
zookeeperConnect | - | 从0.9.x开始kafka消费者客户端不再支持它。使用kafka.bootstrap。服务器与kafka集群建立连接 |
1.8 Sequence Generator Source
一个简单的序列生成器,它通过一个计数器连续地生成事件,计数器从0开始,递增1,并在totalEvents停止。重试的时候无法发送事件通道。主要用于测试。所需属性以粗体显示。
配置项名称 | 默认值 | 描述 |
---|---|---|
channels | - | |
type | - | 组件类型名称,需要seq |
selector.type | - | 复制或多路复用 |
selector.* | replicating | 取决于选择器。类型值 |
interceptors | - | 空格分隔的列表的拦截器 |
interceptors.* | ||
batchSize | 1 | |
totalEvents | Long.MAX_VALUE | long类型最大值,由源发送的唯一事件数。 |
1.9 HTTP Source
源通过HTTP POST和GET接受水槽事件。GET只能用于实验。HTTP请求被一个必须实现HTTPSourceHandler接口的可插入“处理程序”转换为flume事件。这个处理程序接受一个HttpServletRequest并返回一个flume事件列表。从一个Http请求处理的所有事件都在一个事务中提交给通道,从而提高了通道(如文件通道)的效率。如果处理程序抛出异常,该源将返回HTTP状态为400。如果通道已满,或源无法向通道追加事件,则源将返回HTTP 503 -暂时不可用状态。
在一个post请求中发送的所有事件被视为一个批处理,并插入到一个事务中的通道中。
配置项名称 | 默认值 | 描述 |
---|---|---|
type | - | 组件类型名称,需要是http |
port | - | 应该绑定到的端口。 |
bind | 0.0.0.0 | 监听的主机名或IP地址 |
handler | org.apache.flume.source.http.JSONHandler | 处理程序类的FQCN。 |
handler.* | - | 处理程序的配置参数 |
selector.type | replicating | 复制或多路复用 |
selector.* | 取决于选择器。类型值 | |
interceptors | 空格分隔的列表的拦截器 | |
interceptors.* | – | |
enableSSL | false | 将属性设置为true,以启用SSL。HTTP源不支持SSLv3。 |
excludeProtocols | SSLv3 | 要排除的SSL/TLS协议的空格分隔列表。SSLv3总是被排除在外。 |
keystore | – | 密钥存储库的位置,包括密钥存储库文件名 |
keystorePassword | Keystore password |
2、Channels 配置项 (常见配置项)
2.1 Memory Channel
Memory Channel是使用内存来存储Event,使用内存的意味着数据传输速率会很快,但是当Agent挂掉后,存储在Channel中的数据将会丢失。
配置项名称 | 默认值 | 描述 |
---|---|---|
type | - | 组件名称,必须为 memory |
capacity | 100 | channel最大能存储的event数量 |
transactionCapacity | 300 | 每次事务中能从source中拉取或下沉到sink的最大event数量 |
keep-alive | 3 | 添加 |
byteCapacityBufferPercentage | 20 | 定义byteCapacityBuffer 的占比,它与 byteCapacity之和为100%,byteCapacity见下栏 |
byteCapacity | see 描述 | 在这个channel中允许存放的最大字节数 这个字节数只计算event body,这也是需要提供 byteCapacityBufferPercentage 配置参数的原因。 默认为JVM可用最大内存的80% (即通过命令行传递的-Xmx值的80%)。 注意,如果一个agent里面包含了多个channel,channel里面又包含了多个相同的events,那么这些events会被重复计算。 将它设为 0 将会导致这个值强制设定为200GB的容量 |
2.2 JDBC Channel
事件存储在由数据库支持的持久存储中。JDBC通道目前支持嵌入式Derby。这是一个持久的通道,对于可恢复性非常重要的流来说非常理想。
配置项名称 | 默认值 | 描述 |
---|---|---|
type | – | 组件类型名需要是jdbc |
db.type | DERBY | 数据库供应商,需要是DERBY。 |
driver.class | org.apache.derby.jdbc.EmbeddedDriver | 用于供应商的JDBC驱动程序的类 |
driver.url | (constructed from other properties) | JDBC连接URL |
db.username | “sa” | 数据库连接的用户id |
db.password | – | db连接密码 |
connection.properties.file | – | JDBC连接属性文件的路径 |
create.schema | true | 如果为真,则创建db模式 |
create.index | true | 创建索引以加速查找 |
create.foreignkey | true | |
transaction.isolation | “READ_COMMITTED” | db会话的隔离级别:READ_UNCOMMITTED, READ_COMMITTED, SERIALIZABLE, REPEATABLE_READ |
maximum.connections | 10 | 允许db的最大连接数 |
maximum.capacity | 0 (unlimited) | 通道中事件的最大数量 |
sysprop.* | 供应商特定属性 | |
sysprop.user.home | – | 存储嵌入式Derby数据库的主路径 |
2.3 kafka Channel
事件存储在Kafka集群中(必须单独安装)。Kafka提供了高可用性和复制,因此在代理或Kafka代理崩溃时,其他接收器可以立即使用这些事件
配置项名称 | 默认值 | 描述 |
---|---|---|
type | - | 组件类型名,需要是org.apache.flume.channel. kafkar . kafkachannel |
kafka.bootstrap.servers | - | 通道使用的Kafka集群中的代理列表这可以是代理列表的一部分,但是我们建议对于HA至少有两个。格式是用逗号分隔的主机名列表:端口 |
kafka.topic | flume-channe | 频道将使用kafka主题 |
kafka.consumer.group.id | flume | 通道用于向Kafka注册的消费者组ID。多个通道必须使用相同的主题和组,以确保当一个代理失败时,另一个代理可以获得数据。注意,具有相同ID的非通道使用者可能会导致数据丢失。 |
parseAsFlumeEvent | true | 期望在通道中使用FlumeEvent模式的Avro datums。如果Flume source写入到该频道,则为true;如果其他生产者写入到该频道使用的主题,则为false。可以使用org.apache.flume.source.avro在Flume外部解析给Kafka的Flume源消息。AvroFlumeEvent flume-ng-sdk提供的工件 |
migrateZookeeperOffsets | true | 当没有找到Kafka存储的偏移量时,在Zookeeper中查找偏移量并将其提交给Kafka。这应该是真实的,以支持无缝Kafka客户端迁移从旧版本的Flume。迁移后可以将其设置为false,但通常不需要这样做。如果没有找到Zookeeper偏移量,则kafkar .consumer.auto.offset。重置配置定义了如何处理偏移量。 |
pollTimeout | 500 | 在使用者的“poll()”调用中等待的时间(以毫秒为单位)。https://kafka.apache.org/090/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html调查(长) |
defaultPartitionId | - | 指定此通道中要发送到的所有事件的Kafka分区ID(整数),除非partitionIdHeader覆盖。默认情况下,如果没有设置此属性,则事件将由Kafka生成器的分词器分发——如果指定,包括按键分发(或者由Kafka .partitioner.class指定的分词器分发)。 |
partitionIdHeader | – | 设置后,生成器将从事件头获取使用此属性值命名的字段的值,并将消息发送到主题的指定分区。如果该值表示无效分区,则通道将不接受该事件。如果头值存在,则此设置将覆盖defaultPartitionId。 |
kafka.consumer.auto.offset.reset | latest | 当没有初始偏移kafka或如果当前偏移量不存在服务器上的任何更多的(例如,因为数据已被删除):最早:自动重置抵消最早抵消最新:自动重置抵消最新抵消没有:抛出异常的消费者如果没有找到以前的抵消消费者集团其他:消费者抛出例外。 |
kafka.producer.security.protocol | PLAINTEXT | SASL_PLAINTEXT, SASL_SSL或SSL如果写信给卡夫卡使用某种程度的安全。参见下面的附加信息安全设置。 |
kafka.consumer.security.protocol | PLAINTEXT | kafka.producer.security一样。协议,但读取/消费从kafka |
more producer/consumer security props | - | 如果使用sasl_明文,则SASL_SSL或SSL引用Kafka安全性来获得需要在生产者/消费者上设置的其他属性。 |
弃用模式
配置项名称 | 默认值 | 描述 |
---|---|---|
brokerList | - | 通道使用的Kafka集群中的代理列表这可以是代理列表的一部分,但是我们建议对于HA至少有两个。格式是用逗号分隔的主机名列表:端口 |
topic | flume-channel | 使用kafka.topic |
groupId | flume | 使用kafka.consumer.group.id |
readSmallestOffset | false | 使用kafka.consumer.auto.offset.reset |
2.4 File Channel
File Channel使用磁盘来存储Event,速率相对于Memory Channel较慢,但数据不会丢失。
配置项名称 | 默认值 | 描述 |
---|---|---|
type | – | 组件名称,必须为 file. |
checkpointDir | ~/.flume/file-channel/checkpoint | checkpoint文件的存储目录 |
useDualCheckpoints | false | 备份checkpoint文件,如果它为 true, backupCheckpointDir 必须 被设置 |
backupCheckpointDir | – | 用于备份的checkpoint目录,它 必须不能 与原checkpoint目录一样 |
dataDirs | ~/.flume/file-channel/data | ‘,’分隔的目录列表,用于存储日志文件。在不同的磁盘上使用多个目录可以提高filechannel的性能 |
transactionCapacity | 10000 | channel支持的最大事务数 |
checkpointInterval | 30000 | checkpoint之间的最大时间间隔 |
maxFileSize | 2146435071 | 单个日志文件最大的字节数 |
minimumRequiredSpace | 524288000 | 最少需要的空闲空间(以字节为单位)。为了避免数据损坏,当空闲空间低于此值时,filechannel将停止接受take/put请求 |
capacity | 1000000 | 单个channel存储的最大容量 |
keep-alive | 3 | 一个put操作执行的最大时间 |
checkpointOnClose | true | 在关闭时是否创建检查点,如果设置为true,可以加速filechannel的后续启动。 |
3、Sink 配置项 (常见配置项)
3.1 Logger Sink
Logger Sink以INFO 级别的日志记录到log日志中,这种方式通常用于测试。
配置项名称 | 默认值 | 描述 |
---|---|---|
channel | – | |
type | – | 类型指定:logger |
maxBytesToLog | 16 | 能够记录的最大Event Body字节数 |
3.2 HDFS Sink
Sink数据到HDFS,目前支持text 和 sequence files两种文件格式,支持压缩,并可以对数据进行分区,分桶存储。’
配置项名称 | 默认值 | 描述 |
---|---|---|
channel | – | |
type | – | 指定类型:hdfs |
hdfs.path | – | HDFS的路径,eg hdfs://namenode/flume/webdata/ |
hdfs.filePrefix | FlumeData | 保存数据文件的前缀名 |
hdfs.fileSuffix | – | 保存数据文件的后缀名 |
hdfs.inUsePrefix | – | 临时写入的文件前缀名 |
hdfs.inUseSuffix | .tmp | 临时写入的文件后缀名 |
hdfs.rollInterval | 30 | 间隔多长将临时文件滚动成最终目标文件,单位:秒, 如果设置成0,则表示不根据时间来滚动文件 |
hdfs.rollSize | 1024 | 当临时文件达到多少(单位:bytes)时,滚动成目标文件, 如果设置成0,则表示不根据临时文件大小来滚动文件 |
hdfs.rollCount | 10 | 当 events 数据达到该数量时候,将临时文件滚动成目标文件,如果设置成0,则表示不根据events数据来滚动文件 |
hdfs.idleTimeout | 0 | 当目前被打开的临时文件在该参数指定的时间(秒)内, 没有任何数据写入,则将该临时文件关闭并重命名成目标文件 |
hdfs.batchSize | 100 | 每个批次刷新到 HDFS 上的 events 数量 |
hdfs.codeC | – | 文件压缩格式,包括:gzip, bzip2, lzo, lzop, snappy |
hdfs.fileType | SequenceFile | 文件格式,包括:SequenceFile, DataStream,CompressedStre, 当使用DataStream时候,文件不会被压缩,不需要设置hdfs.codeC; 当使用CompressedStream时候,必须设置一个正确的hdfs.codeC值; |
hdfs.maxOpenFiles | 5000 | 最大允许打开的HDFS文件数,当打开的文件数达到该值,最早打开的文件将会被关闭 |
hdfs.minBlockReplicas | – | HDFS副本数,写入 HDFS 文件块的最小副本数。 该参数会影响文件的滚动配置,一般将该参数配置成1,才可以按照配置正确滚动文件 |
hdfs.writeFormat | Writable | 写 sequence 文件的格式。包含:Text, Writable(默认) |
hdfs.callTimeout | 10000 | 执行HDFS操作的超时时间(单位:毫秒) |
hdfs.threadsPoolSize | 10 | hdfs sink 启动的操作HDFS的线程数 |
hdfs.rollTimerPoolSize | 1 | hdfs sink 启动的根据时间滚动文件的线程数 |
hdfs.kerberosPrincipal | – | HDFS安全认证kerberos配置 |
hdfs.kerberosKeytab | – | HDFS安全认证kerberos配置 |
hdfs.proxyUser | – | 代理用户 |
hdfs.round | false | 是否启用时间上的”舍弃” |
hdfs.roundValue | 1 | 时间上进行“舍弃”的值 |
hdfs.roundUnit | second | 时间上进行”舍弃”的单位,包含:second,minute,hour |
hdfs.timeZone | Local Time | 时区。 |
hdfs.useLocalTimeStamp | false | 是否使用当地时间 |
hdfs.closeTries 0 | Number | hdfs sink 关闭文件的尝试次数; 如果设置为1,当一次关闭文件失败后,hdfs sink将不会再次尝试关闭文件,这个未关闭的文件将会一直留在那,并且是打开状态; 设置为0,当一次关闭失败后,hdfs sink会继续尝试下一次关闭,直到成功 |
hdfs.retryInterval | 180 | hdfs sink 尝试关闭文件的时间间隔, 如果设置为0,表示不尝试,相当于于将hdfs.closeTries设置成1 |
serializer | TEXT | 序列化类型 |
serializer.* |
3.3 Hive Sink
此接收器将包含分隔文本或JSON数据的事件直接流到Hive表或分区中。事件是使用Hive事务编写的。只要将一组事件提交到Hive,它们就会立即对Hive查询可见。flume将流到的分区既可以预先创建,也可以选择在缺少分区时创建它们。来自传入事件数据的字段被映射到Hive表中的相应列。
配置项名称 | 默认值 | 描述 |
---|---|---|
channel | – | |
type | – | 组件类型名称,需要为hive |
hive.metastore | – | Hive metastore URI(例如thrift://a.b.com:9083) |
hive.database | – | 数据库名称 |
hive.table | – | 表名称 |
hive.partition | – | 逗号分隔标识要写入的分区的分区值列表。可能包含转义序列。E。g:如果表按(continent: string, country:string, time:string)分区,那么’ Asia,India,2014-02-26-01-21 '将表示continent=Asia,country=India,time=2014-02-26-01-21 |
hive.txnsPerBatchAsk | 100 | Hive像Flume一样向流客户端授予一批事务而不是单个事务。此设置配置每个事务批处理所需的事务数量。来自单个批处理的所有事务的数据最终会出现在单个文件中。Flume将在批处理中的每个事务中写入批大小事件的最大值。此设置与batchSize一起提供了对每个文件大小的控制。注意这些文件到最终蜂巢将透明地紧凑的大文件。 |
heartBeatInterval | 240 | 发送到Hive的连续心跳之间的时间间隔(以秒为单位),以防止未使用的事务过期。将此值设置为0可禁用心跳。 |
autoCreatePartitions | true | Flume将自动创建流到的必要的Hive分区 |
batchSize | 15000 | 单个Hive事务中能写入的最大event数量 |
maxOpenConnections | 500 | 只允许此数目的打开连接。如果超过此数字,则关闭最近最少使用的连接。 |
callTimeout | 10000 | (毫秒)Hive & HDFS I/O操作的超时,比如openTxn、写、提交、中止。 |
serializer | Serializer负责从事件中解析出字段,并将它们映射到hive表中的列。序列化器的选择取决于事件中数据的格式。支持序列化器:分隔和JSON | |
roundUnit | minute | 四舍五入值的单位——second, minute 或 hour. |
roundValue | 1 | 四舍五入到该时间的最高倍数(在使用hive.roundUnit配置的单元中),小于当前时间 |
timeZone | Local Time | 用于解析分区中的转义序列的时区名称,例如America/Los_Angeles。 |
useLocalTimeStamp | false | 在替换转义序列时使用本地时间(而不是事件头中的时间戳)。 |
3.4 Avro Sink
发送到此接收器的Flume事件被转换为Avro事件,并发送到配置的主机名/端口对。事件以配置的批大小批次从配置的通道获取。
配置项名称 | 默认值 | 描述 |
---|---|---|
channel | – | |
type | – | 组件类型名,需要是avro。 |
hostname | – | 要绑定到的主机名或IP地址。 |
port | – | 要监听的端口 |
batch-size | 100 | 要一起批处理以发送的事件数目 |
connect-timeout | 20000 | 允许第一次(握手)请求的时间量(ms)。 |
request-timeout | 20000 | 允许第一次请求之后的时间量(ms)。 |
reset-connection-interva | none | 重置到下一跳的连接之前的时间量。这将迫使Avro接收器重新连接到下一跳。这将允许接收在添加新主机时连接到硬件负载均衡器后的主机,而无需重新启动代理。 |
compression-type | none | 这可以是“none”或“deflate”。压缩类型必须与匹配的AvroSource的压缩类型匹配 |
compression-leve | 6 | 压缩事件的压缩级别。0 =无压缩,1-9为压缩。数字越高压缩越多 |
ssl | false | 设置为true为此AvroSink启用SSL。在配置SSL时,您可以选择设置“信任库”、“信任库-密码”、“信任库-类型”,并指定是否设置“信任-所有证书”。 |
trust-all-certs | false | 如果将此设置为true,则不会检查用于远程服务器(Avro源)的SSL服务器证书。不应该在生产环境中使用这种方法,因为它使攻击者更容易执行中间人攻击并“监听”加密连接 |
truststore | – | 自定义Java信任库文件的路径。Flume使用此文件中的证书权威信息来确定是否应该信任远程Avro源的SSL身份验证凭据。如果没有指定,将使用默认的Java JSSE证书权威文件(通常是Oracle JRE中的“jssecacerts”或“cacerts”)。 |
truststore-password | – | 指定信任存储库的密码 |
truststore-type | JKS | Java信任存储的类型。可以是“JKS”或其他受支持的Java信任存储库类型。 |
exclude-protocols | SSLv3 | 要排除的SSL/TLS协议的空格分隔列表。SSLv3总是被排除在外除了指定的协议。 |
maxIoWorkers | 2 * the number of available processors in the machine | I/O工作线程的最大数目。这是在NettyAvroRpcClient NioClientSocketChannelFactory上配置的。 |
3.5 Thrift Sink
通过启用kerberos身份验证,可以将节约接收配置为以安全模式启动。要与在安全模式下启动的节省源通信,节省接收器也应该在安全模式下操作。客户机-主体和客户机-keytab是节省接收器用于对kerberos KDC进行身份验证的属性。服务器主体表示此接收器配置为以安全模式连接的节约源的主体。
配置项名称 | 默认值 | 描述 |
---|---|---|
channe | ||
type | 组件类型名称,需要thrift | |
hostname | – | 要绑定到的主机名或IP地址。 |
port | 要监听的端口#。 | |
batch-size | 100 | 要一起批处理以发送的事件数目。 |
connect-timeout | 20000 | 允许第一次(握手)请求的时间量(ms)。 |
request-timeout | 20000 | 允许第一次请求之后的时间量(ms)。 |
connection-reset-interval | none | 重置到下一跳的连接之前的时间量。这将迫使节俭接收器重新连接到下一跳。这将允许接收在添加新主机时连接到硬件负载均衡器后的主机,而无需重新启动代理。 |
ssl | false | 设置为true为这个ThriftSink启用SSL。在配置SSL时,您可以选择设置“信任库”、“信任库-密码”和“信任库类型” |
truststore | – | 自定义Java信任库文件的路径。Flume使用此文件中的证书权威信息来确定是否应该信任远程节约源的SSL身份验证凭据。如果没有指定,将使用默认的Java JSSE证书权威文件(通常是Oracle JRE中的“jssecacerts”或“cacerts”)。 |
truststore-password | – | 指定信任存储库的密码。 |
truststore-type | JKS | Java信任存储的类型。可以是“JKS”或其他受支持的Java信任存储库类型。 |
exclude-protocols | SSLv3 | 要排除的SSL/TLS协议的空格分隔列表 |
kerberos | false | 设置为true以启用kerberos身份验证。在kerberos模式中,客户机-主体、客户机-keytab和服务器-主体是成功进行身份验证和与启用kerberos的节约源通信所必需的。 |
client-principal | – | 节约接收用于对kerberos KDC进行身份验证的kerberos主体。 |
client-keytab | – | 节约接收器与客户机-主体组合使用的用于对kerberos KDC进行身份验证的keytab位置。 |
server-principal | – | 节省源的kerberos主体,节省接收器被配置连接到该源。 |
3.6 File Roll Sink
在本地文件系统上存储事件。
配置项名称 | 默认值 | 描述 |
---|---|---|
channel | – | |
type | – | 组件类型名需要是file_roll。 |
sink.directory | – | 将存储文件的目录 |
sink.pathManager | DEFAULT | 要使用的PathManager实现。 |
sink.pathManager.extension | – | 如果使用默认的PathManager,则为文件扩展名。 |
sink.pathManager.prefix | – | 如果使用默认的PathManager,要添加到文件名开头的字符串 |
sink.rollInterval | 30 | 每30秒滚动一次文件。指定0将禁用滚动,并导致将所有事件写入单个文件。 |
sink.serializer | TEXT | 其他可能的选项包括avro_event或EventSerializer实现的FQCN。构建器接口。 |
batchSize | 100 |
3.7 HBaseSinks
这个接收器将数据写入HBase。Hbase配置从类路径中遇到的第一个Hbase -site.xml中获取。一个实现由配置指定的HbaseEventSerializer的类用于将事件转换为HBase put和/或增量。然后将这些put和增量写入HBase。这个接收器提供了与HBase相同的一致性保证,HBase目前是行原子性。如果Hbase无法写入某些事件,接收将重播该事务中的所有事件。
HBaseSink支持写入数据来保护HBase。要写入以保护HBase,代理运行的用户必须对接收器配置为写入的表具有写权限。可以在配置中指定用于对KDC进行身份验证的主体和keytab。Flume代理的类路径中的HBase -site.xml必须将身份验证设置为kerberos(有关如何做到这一点的详细信息,请参阅HBase文档)。
为了方便起见,提供了两个带有水槽的序列化器。SimpleHbaseEventSerializer按原样将事件体写入HBase,并可选择在HBase中增加一列。这主要是一个示例实现。RegexHbaseEventSerializer基于给定的正则表达式分解事件体,并将每个部分写入不同的列中。
类型是FQCN: org.apache.flume.sink.hbase.HBaseSink。
3.7.1 HBaseSink
配置项名称 | 默认值 | 描述 |
---|---|---|
channel | – | |
– | – | – |
type | – | 组件类型名,需要是hbase |
table | – | 在Hbase中要写入的表的名称。 |
columnFamily | – | Hbase中要写入的列族。 |
zookeeperQuorum | – | 法定人数规范。这是属性hbase.zookeeper的值。在hbase-site.xml法定人数 |
znodeParent | /hbase | 根区域的znode的基本路径。zookeeper.znode的价值。父母在hbase-site.xml |
batchSize | 100 | 每个txn要写入的事件数。 |
coalesceIncrements | false | 在每个批处理中,接收将多个增量合并到一个单元。如果对有限数量的单元进行多次递增,则可能会获得更好的性能。 |
serializer | org.apache.flume.sink.hbase.SimpleHbaseEventSerializer | 默认增量列= " iCol ",有效负载列= " pCol "。 |
serializer.* | – | 要传递给序列化器的属性。 |
kerberosPrincipal | – | 用于访问安全HBase的Kerberos用户主体 |
kerberosKeytab | – | 用于访问安全HBase的Kerberos keytab |
3.7.2 AsyncHBaseSink
这个接收器使用异步模型将数据写入HBase。使用配置中指定的实现AsyncHbaseEventSerializer的类将事件转换为HBase put和/或增量。然后将这些put和增量写入HBase。这个接收器使用Asynchbase API来写入HBase。这个接收器提供了与HBase相同的一致性保证,HBase目前是行原子性。如果Hbase无法写入某些事件,接收将重播该事务中的所有事件。类型是FQCN: org.apache.flume.sink.hbase.AsyncHBaseSink
配置项名称 | 默认值 | 描述 |
---|---|---|
channel | – | |
type | – | 组件类型名称,需要是asynchbase |
table | - | 在Hbase中要写入的表的名称。 |
zookeeperQuorum | – | 法定人数规范。这是属性hbase.zookeeper的值。在hbase-site.xml法定人数 |
znodeParent | /hbase | 根区域的znode的基本路径。zookeeper.znode的价值。父母在hbase-site.xml |
columnFamily | – | Hbase中要写入的列族。 |
batchSize | 100 | 每个txn要写入的事件数。 |
coalesceIncrements | false | 在每个批处理中,接收将多个增量合并到一个单元。如果对有限数量的单元进行多次递增,则可能会获得更好的性能。 |
timeout | 60000 | 接收为事务中的所有事件从hbase等待ack的时间长度(以毫秒为单位)。 |
serializer | org.apache.flume.sink.hbase.SimpleAsyncHbaseEventSerializer | |
serializer.* | – | 要传递给序列化器的属性。 |
3.8 ElasticSearchSink
这个接收器将数据写入一个elasticsearch集群。默认情况下,事件将被编写,以便Kibana图形界面可以显示它们——就像logstash编写它们一样。
您的环境所需的elasticsearch和lucene-core jar文件必须放在Apache Flume安装的lib目录中。Elasticsearch要求客户端JAR的主版本与服务器的主版本匹配,并且两者都运行相同的JVM小版本。如果不正确,将出现serializationexception。选择所需的版本首先确定elasticsearch和JVM版本的版本目标集群正在运行。然后选择一个与主版本匹配的elasticsearch客户端库。0.19。客户端可以与0.19通话。x集群;0.20。x可以和0.20通话。0.90 x和。x可以0.90.x说话。一旦确定了elasticsearch版本,然后读取pomc .xml文件,以确定要使用的正确lucene-core JAR版本。运行ElasticSearchSink的Flume代理还应该匹配目标集群正在运行的JVM,直到小版本。
事件将每天写入一个新索引。名称将是-yyyy-MM-dd,其中是indexName参数。接收器将在UTC午夜开始写入新索引。
默认情况下,事件由ElasticSearchLogStashEventSerializer为elasticsearch序列化。可以用序列化器参数覆盖此行为。这个参数接受org.apache.flume.sink.elasticsearch的实现。ElasticSearchEventSerializer或org.apache.flume.sink.elasticsearch.ElasticSearchIndexRequestBuilderFactory。实现ElasticSearchEventSerializer被弃用,取而代之的是更强大的ElasticSearchIndexRequestBuilderFactory。
类型是FQCN: org.apache.flume.sink.elasticsearch.ElasticSearchSink
配置项名称 | 默认值 | 描述 |
---|---|---|
channel | – | |
type | – | 组件类型名称,需要是org.apache.flume.sink.elasticsearch.ElasticSearchSink |
hostNames | – | 用逗号分隔的主机名列表:端口,如果端口不存在,将使用默认端口’ 9300 ’ |
indexName | flume | 将添加日期的索引的名称。例如,“flume”->“flume-yyyy- mm -dd”支持任意头替换。%{header}替换为指定事件头的值 |
indexType | logs | 文档索引的类型默认为“log”,支持任意头替换,例如。%{header}替换为指定事件头的值 |
clusterName | elasticsearch | 要连接的ElasticSearch集群的名称 |
batchSize | 100 | 每个txn要写入的事件数。 |
ttl | – | TTL在天,设置时将导致过期的文档被自动删除,如果没有设置文档将永远不会被自动删除。TTL只接受在早些时候的整数形式如a1.sinks.k1。ttl = 5,还限定符女士(毫秒),s(第二),m(分钟),h(小时)、d(天)和w(一周)。a1.sinks.k1示例。ttl = 5d将ttl设置为5天。请访问http://www.elasticsearch.org/guide/reference/mapping/ttl-field/获取更多信息。 |
serializer | org.apache.flume.sink.elasticsearch.ElasticSearchLogStashEventSerializer | 使用的ElasticSearchIndexRequestBuilderFactory或ElasticSearchEventSerializer。这两个类的实现都被接受,但是ElasticSearchIndexRequestBuilderFactory是首选。 |
serializer.* | – | 要传递给序列化器的属性。 |
注意,头替换可以方便地使用事件头的值来动态决定存储事件时要使用的indexName和indexType。在使用此特性时应谨慎,因为事件提交者现在已经控制了indexName和indexType。此外,如果使用了elasticsearch REST客户端,那么事件提交者就可以控制所使用的URL路径。
3.9 Kafka Sink
这是一个水槽实现,可以将数据发布到Kafka主题。目标之一是将水槽与Kafka集成,这样基于拉的处理系统就可以处理来自各种水槽源的数据。它目前支持Kafka 0.9。x系列发布。
这个版本的Flume(1.7.0)不再支持Kafka的旧版本(0.8.x)。
配置项名称 | 默认值 | 描述 |
---|---|---|
type | – | 必须设置为org.apache.flume.sink.kafka.KafkaSink |
kafka.bootstrap.servers | – | Kafka-Sink将连接到的代理列表,为了获得主题分区的列表,这可以是代理列表的一部分,但是我们建议对于HA至少要有两个。格式是用逗号分隔的主机名列表:端口 |
kafka.topic | default-flume-topic | 在kafka中,信息将被发布的主题。如果配置了此参数,则消息将发布到此主题。如果事件标头包含“topic”字段,则该事件将发布到该主题,覆盖此处配置的主题。 |
flumeBatchSize | 100 | 在一个批处理中要处理的消息数量。更大的批在增加延迟的同时提高吞吐量。 |
kafka.producer.acks | 1 | 在消息被认为成功写入之前,必须确认多少个副本。可接受的值为0 (Never wait for acknowledgement)、1 (wait for leader only)、-1 (wait for all副本)。将这个值设置为-1,以避免在某些leader失败的情况下丢失数据。 |
useFlumeEventFormat | false | 默认情况下,事件作为字节直接从事件体放到Kafka主题中。设置为true将事件存储为Flume Avro二进制格式。与KafkaSource上的相同属性或与Kafka通道上的parseAsFlumeEvent属性一起使用,这将为生产方保留所有水槽头。 |
defaultPartitionId | – | 指定此通道中要发送到的所有事件的Kafka分区ID(整数),除非partitionIdHeader覆盖。默认情况下,如果没有设置此属性,则事件将由Kafka生成器的分词器分发——如果指定,包括按键分发(或者由Kafka .partitioner.class指定的分词器分发)。 |
partitionIdHeader | – | 设置后,接收器将从事件头获取使用此属性值命名的字段的值,并将消息发送到主题的指定分区。如果该值表示一个无效的分区,则将抛出一个EventDeliveryException。如果头值存在,则此设置将覆盖defaultPartitionId |
kafka.producer.security.protocol | PLAINTEXT | 设置为sasl_明文,SASL_SSL或SSL(如果使用某种安全级别写入Kafka)。有关安全设置的更多信息,请参见下面。 |
more producer security props | 如果使用sasl_明文,则SASL_SSL或SSL引用Kafka安全性来获得需要在producer上设置的其他属性。 | |
Other Kafka Producer Properties | – | 这些属性用于配置Kafka生成器。可以使用Kafka支持的任何生成器属性。惟一的要求是在属性名前加上前缀kafka.producer。例如:kafka.producer.linger.ms |
注意,Kafka Sink使用来自FlumeEvent头部的主题和键属性将事件发送给Kafka。如果标题中存在主题,则事件将发送到该特定主题,覆盖为接收配置的主题。如果密钥存在于标题中,Kafka将使用该密钥在主题分区之间划分数据。具有相同键的事件将被发送到相同的分区。如果键为null,事件将被发送到随机分区。
Kafka接收器还为key.serializer和value.serializer提供了默认值。不建议修改这些参数。
弃用属性
配置项名称 | 默认值 | 描述 |
---|---|---|
brokerList | – | 使用kafka.bootstrap.servers |
topic | default-flume-topic | 使用kafka.topic |
batchSize | 100 | 使用kafka.flumeBatchSize |
requiredAcks | 1 | 使用kafka.producer.acks |