最全Flume常用配置文件详情解析

最全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

你可能感兴趣的:(Flume,flume,大数据)