- Flume定义
- Flume优点
- Flume的使用
运行Flume,在${FLUME_HOME}/bin 下运行
./flume-ng agent -n a1 -c conf -f ../conf/example.conf -Dflume.root.logger=INFO,console
#agent 必须写的没有疑问
# -n a1 :指定agent的名字
# -c conf 指定配置目录
# -f 执行agent具体的的配置文件
# Dflume.root.logger=INFO,console:接收数据打印到控制台
# example.conf:配置文件。需要自己根据flume的语法创建
#example.conf,基础的测试案例
a1.sources = r1 #设置source名字
a1.sinks = k1 #设置sink名字,可以有多个,用逗号隔开
a1.channels = c1 #设置channel名字,可以有多个,用逗号隔开
a1.sources.r1.type = netcat #设置source监控的数据类型
a1.sources.r1.bind = hadoop001 #设置source监控的地址
a1.sources.r1.port = 44444 #设置source的监控端口
a1.channels.c1.type = memory #设置channel的类型
a1.sources.r1.channels = c1 #设置source与channel的连接
a1.sinks.k1.channel = c1 #设置sink与channel的连接
在source监控的地址的机器上运行telnet xx.xxx.xxx.xxx 44444
,然后随便数据数据就可以在Flume的agent的机器的控制台上出现输入的数据
- Flume的三大组件
Exec Soufce,通过linux的指令来监控数据,以下是基本配置,想看详细配置请点击该链接http://flume.apache.org/FlumeUserGuide.html#exec-source
a1.sources = r1 #定义source的名字,多个用逗号隔开
a1.channels = c1 #定义channel的名字,多个用逗号隔开
a1.sources.r1.type = exec #定义source的类型
a1.sources.r1.command = tail -F /var/log/secure #利用指令监控日志
a1.sources.r1.channels = c1
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,该值必须是exec |
command | 无 | 执行的命令,例如:tail -F /var/log/secure |
shell | 无 | 用于运行命令的shell调用 |
restartThrottle | 10000 | 在尝试重新启动之前等待的时间(以millis为单位) |
restart | false | 如果执行的cmd死了,是否应该重新启动它 |
logStdErr | false | 是否记录命令的标准输出 |
batchSize | 20 | 每次读取和发送给channel的最大行数 |
batchTimeout | 3000 | 如果没有达到缓冲区的大小,等待多久将数据push到channel里 |
selector.type | replicating | 复制或多路复用。复制就是把一个完整的事件发送到不同的channel中,多路复用就是根据不同的条件将同一个事件拆分成多个条目发送到channel中 |
selector.* | 无 | 取决于selector.type的值 |
interceptors | 无 | 空格分隔的列表的拦截器 |
interceptors.* |
SpoolDirectorySource:这个源支持从磁盘中某文件夹获取文件数据。不同于其他异步源,这个源能够避免重启或者发送失败后数据丢失。flume可以监控文件夹,当出现新文件时会读取该文件并获取数据。当一个给定的文件被全部读入到通道中时,该文件会被重命名以标志已经完成。同时,该源需要一个清理进程来定期移除完成的文件,一下是最基本的配置,想看详细配置请点击该链接http://flume.apache.org/FlumeUserGuide.html#spooling-directory-source
a1.channels = ch-1
a1.sources = src-1
a1.sources.src-1.type = spooldir
a1.sources.src-1.channels = ch-1
a1.sources.src-1.spoolDir = /var/log/apache/flumeSpool
a1.sources.src-1.fileHeader = true
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,必须是spooldir |
spoolDir | 无 | 自己定义的spooldir的文件目录 |
fileSuffix | .COMPLETED | 文件读取完毕以后给完成文件添加的标记后缀 |
deletePolicy | never | 是否删除读取完毕的文件,默认是”never”,就是不删除,目前只支持”never”和“IMMEDIATE”; |
fileHeader | false | 是否在event的Header中添加文件名,boolean类型 |
fileHeaderKey | file | 这是event的Header中的key,value是文件名 |
basenameHeader | false | 是否添加一个存储文件的basename的Header |
basenameHeaderKey | basename | 将文件的basename添加到事件头时使用的头文件键。 |
includePattern | ^.*$ | 指定要包含哪些文件的正则表达式。它可以与ignorePattern一起使用。如果一个文件同时匹配ignorePattern和includePattern regex,该文件将被忽略。 |
ignorePattern | ^$ | 正则表达式指定被忽略的文件,如果一个文件同时匹配ignorePattern和includePattern regex,该文件将被忽略。 |
trackerDir | .flumespool | 目录来存储与文件处理相关的元数据。如果该路径不是绝对路径,则将指定spoolDir。 |
pollDelay | 500 | 轮询新文件的时候使用的延迟时间 |
recursiveDirectorySearch | false | 是否监视要读取的新文件的子目录 |
maxBackoff | 4000 | 如果通道满了以后,连续尝试向通道里写入数据的最大的等待时间,毫秒为单位 |
batchSize | 100 | 批量向channle传输event的大小 |
inputCharset | UTF-8 | 编码方式,默认是”UTF-8” |
decodeErrorPolicy | FAIL | FAIL:抛出异常并解析文件失败。REPLACE:将不可解析字符替换为“替换字符”字符,通常是Unicode U+FFFD。IGNORE:删除不可解析的字符序列。 |
deserializer | LINE | 指定用于将文件解析为事件的反序列化器。默认情况下,将每一行解析为一个事件。指定的类必须实现eventdeserizer.builder。 |
selector.type | replicating | 复制或多路复用。复制就是把一个完整的事件发送到不同的channel中,多路复用就是根据不同的条件将同一个事件拆分成多个条目发送到channel中 |
selector.* | 无 | 取决于selector.type的值 |
interceptors | 无 | 空格分隔的列表的拦截器 |
interceptors.* |
Kafka Source:是一个从Kafka的 Topic中读取消息的Apache Kafka消费者。 如果您有多个Kafka source运行,您可以使用相同的Consumer Group配置它们,因此每个将读取topic中一组唯一的分区。以下是基本配置,想看详细配置请点击该链接http://flume.apache.org/FlumeUserGuide.html#kafka-source
tier1.sources.source1.type = org.apache.flume.source.kafka.KafkaSource #指定source的类型为kafka
tier1.sources.source1.channels = channel1
tier1.sources.source1.batchSize = 5000 #在一个批处理中写入通道的最大消息数
tier1.sources.source1.batchDurationMillis = 2000 #在将批处理写入通道之前的最大时间(以ms为单位)
tier1.sources.source1.kafka.bootstrap.servers = localhost:9092 #kafka地址
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 #指定source的类型为kafka
tier1.sources.source1.channels = channel1
tier1.sources.source1.kafka.bootstrap.servers = localhost:9092 #kafka地址
tier1.sources.source1.kafka.topics.regex = ^topic[0-9]$ #正则匹配消费哪些主题
# the default kafka.consumer.group.id=flume is used
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,必须是org.apache.flume.source.kafka.KafkaSource |
kafka.bootstrap.servers | 无 | kafka集群的地址,如localhost:9092 |
kafka.topics | 无 | Kafka集群的主题,多个用逗号隔开 |
kafka.topics.regex | 无 | 正则匹配的主题集,他比kafka.topics优先级高,如果kafka.topics存在,那么就会覆盖kafka.topics的值 |
kafka.consumer.group.id | flume | 消费者群体的唯一标识。在多个源或代理中设置相同的id表明它们属于同一个消费者组 |
batchSize | 1000 | 一个批次向channel中写入的最大的消息的数量 |
batchDurationMillis | 1000 | 在将批处理写入通道之前的最大时间(以ms为单位) |
backoffSleepIncrement | 1000 | 当Kafka主题为空时触发的初始和增量等待时间。这个值尽可能的低 |
maxBackoffSleep | 5000 | 当Kafka主题看起来为空时触发的最大等待时间,这个值尽可能的低 |
useFlumeEventFormat | false | 默认情况下,事件作为字节从Kafka主题直接带到事件主体中。设置为true以Avro二进制格式读取事件。与KafkaSink上的相同属性或Kafka通道上的parseAsFlumeEvent属性一起使用,这将保留在生产端发送的所有Flume头。 |
setTopicHeader | true | 当设置为true时,将检索到的消息的主题存储到一个header中,由topicHeader属性定义。 |
topicHeader | topic | 如果setTopicHeader属性设置为true,则定义用于存储接收消息的主题的标题的名称。如果与Kafka Sink topicHeader属性结合,应该要小心,以免在循环中将消息发送回相同的主题。 |
migrateZookeeperOffsets | true |
Syslog Sources:读取Syslog数据转转换成Event。
Syslog TCP Source:通过单个监听端口来接受数据转换成Event
a1.sources = r1 #source名称
a1.channels = c1 #channel的名称
a1.sources.r1.type = syslogtcp #source类型为syslogtcp
a1.sources.r1.port = 5140 #source监控的端口号
a1.sources.r1.host = localhost #监控的机器地址
a1.sources.r1.channels = c1 #定义source与channel的连接
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,必须是syslogtcp |
host | 无 | 主机名或IP地址 |
port | 无 | 监听的端口号 |
eventSize | 2500 | 单个事件行的最大大小,以字节为单位 |
selector.type | replicating | 复制或多路复用。复制就是把一个完整的事件发送到不同的channel中,多路复用就是根据不同的条件将同一个事件拆分成多个条目发送到channel中 |
selector.* | 无 | 取决于selector.type的值 |
interceptors | 无 | 空格分隔的列表的拦截器 |
interceptors.* |
Multiport Syslog TCP Source:通过监听多个端口开始先数据转换成Event
a1.sources = r1 #定义的source
a1.channels = c1 #定义channel
a1.sources.r1.type = multiport_syslogtcp #指定source类型为多端口监控
a1.sources.r1.channels = c1
a1.sources.r1.host = 0.0.0.0 #指定监控端口的所在的机器
a1.sources.r1.ports = 10001 10002 10003 #监控多个端口用空格开
a1.sources.r1.portHeader = port #监控的是端口
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,必须是multiport_syslogtcp |
host | 无 | 主机名或IP地址 |
ports | 无 | 监听的端口号,多个用空格隔开 |
portHeader | 无 | 如果指定,端口号将使用这里指定的头名存储在每个事件的头中。这允许拦截器和通道选择器根据传入的端口自定义路由逻辑。 |
eventSize | 2500 | 单个事件行的最大大小,以字节为单位 |
charset.default | UTF-8 | 将syslog事件解析为字符串时使用的默认字符集。 |
charset.port.《port》 | 无 | 设置对应端口的字符集 |
batchSize | 100 | 尝试处理每个请求循环的最大事件数。使用默认值通常是可以的。 |
readBufferSize | 1024 | 内部Mina读取缓冲区的大小。提供性能调优。使用默认值通常是可以的。 |
selector.type | replicating | 复制或多路复用。复制就是把一个完整的事件发送到不同的channel中,多路复用就是根据不同的条件将同一个事件拆分成多个条目发送到channel中 |
selector.* | 无 | 取决于selector.type的值 |
interceptors | 无 | 空格分隔的列表的拦截器 |
interceptors.* |
Syslog UDP Source¶:通过监听UDP协议的端口来实现数据转换成Event,以下是具体的必须配置项,如果想查看更加详细的配置请点击该链接http://flume.apache.org/FlumeUserGuide.html#syslog-udp-source
a1.sources = r1
a1.channels = c1
a1.sources.r1.type = syslogudp #指定source类型为syslogUdp
a1.sources.r1.port = 5140 #指定监控的端口
a1.sources.r1.host = localhost
a1.sources.r1.channels = c1
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,必须是syslogudp |
host | 无 | 主机名或IP地址 |
port | 无 | 监听的端口号 |
selector.type | replicating | 复制或多路复用。复制就是把一个完整的事件发送到不同的channel中,多路复用就是根据不同的条件将同一个事件拆分成多个条目发送到channel中 |
selector.* | 无 | 取决于selector.type的值 |
interceptors | 无 | 空格分隔的列表的拦截器 |
interceptors.* |
HTTP Source:用于接受Http的Post或者Get请求,但是Get请求一般用在实验环境中,以下是最基本的配置,如果想查看更加详细的配置请点击该链接http://flume.apache.org/FlumeUserGuide.html#http-source
a1.sources = r1
a1.channels = c1
a1.sources.r1.type = http #指定source的类型为http
a1.sources.r1.port = 5140 #指定监控的端口
a1.sources.r1.channels = c1
a1.sources.r1.handler = org.example.rest.RestHandler #指定绑定的处理程序,如果自己定义这个处理程序需要需要定义一个实现了HTTPSourceHandler接口的类,然后打包放到Flume的lib目录下。
a1.sources.r1.handler.nickname = random props #配置处理程序的参数
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,必须是http |
port | 无 | 监听的端口号 |
bind | 0.0.0.0 | 监听的主机名或者ip地址 |
handler | org.apache.flume.source.http.JSONHandler | 处理程序类 |
handler.* | 无 | 处理程序类的配置参数 |
selector.type | replicating | 复制或多路复用。复制就是把一个完整的事件发送到不同的channel中,多路复用就是根据不同的条件将同一个事件拆分成多个条目发送到channel中 |
selector.* | 无 | 取决于selector.type的值 |
interceptors | 无 | 空格分隔的列表的拦截器 |
interceptors.* | ||
enableSSL | false | 将属性设置为true,以启用SSL。HTTP源不支持SSLv3。 |
excludeProtocols | SSLv3 | 要排除的SSL/TLS协议的空格分隔列表。SSLv3总是被排除在外。 |
keystore | 密钥存储库的位置包括密钥存储库文件名 | |
keystorePassword Keystore password | 无 | 密钥密码 |
HDFS Sink:输出时间到HDFS中,以下是基本配置,如果想查看详细配置请点击该链接http://flume.apache.org/FlumeUserGuide.html#flume-sinks
a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = hdfs #执行sink输出的类型为HDFS
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = hdfs://hadoop001:8020/flume/events/%y-%m-%d/%H%M/%S #指定Sink写入HDFS的路径
a1.sinks.k1.hdfs.filePrefix = events- #指定sink写入HDFS文件的前缀名
a1.sinks.k1.hdfs.round = true #是否开启时间戳的四舍五入
a1.sinks.k1.hdfs.roundValue = 10 #舍弃十分钟,也就是该目录每十分钟生成一个
a1.sinks.k1.hdfs.roundUnit = minute #四舍五入的最小单位
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,必须是hdfs |
hdfs.path | 无 | HDFS目录路径 |
hdfs.filePrefix | FlumeData | HDFS上前缀标识的为Flume创建的文件 |
hdfs.fileSuffix | 无 | HDFS上后缀标识的为Flume创建的文件 |
hdfs.inUsePrefix | 无 | 用于flume主动写入的临时文件的前缀 |
hdfs.inUseSuffix | .tmp | 用于flume主动写入的临时文件的后缀 |
hdfs.rollInterval | 30 | 间隔多少秒数触发滚动当前文件(0 =从不基于时间间隔滚动) |
hdfs.rollSize | 1024 | 文件的触发滚动当前文件 单位为bytes(0=从不基于大小滚动) |
hdfs.rollCount | 10 | 事件的条目数触发滚动当前文件(0 =从不滚动基于事件数) |
hdfs.idleTimeout | 0 | 超时后关闭非活跃文件(0 =禁用自动关闭空闲文件) |
hdfs.batchSize | 100 | 一个批次向HDFS写入的事件数 |
hdfs.codeC | 无 | 指定压缩格式。gzip, bzip2, lzo, lzop, snappy |
hdfs.fileType | SequenceFile | 文件格式:当前SequenceFile、DataStream或CompressedStream (1)DataStream不会压缩输出文件,请不要设置压缩格式(2)CompressedStream必须设置hdfs.codeC的压缩格式 |
hdfs.maxOpenFiles | 5000 | 只允许打开这个数目的文件。如果超过这个数字,就会关闭最老的文件 |
hdfs.minBlockReplicas | 无 | 指定每个HDFS块的最小复制数。如果没有指定,它来自类路径中的默认Hadoop配置。 |
hdfs.writeFormat | Writable | 向DFS文件里写的格式,要么是Text或者Writable,在使用Flume创建数据文件之前,将这些文件设置为Text,否则Apache Impala或Apache Hive都无法读取这些文件 |
hdfs.callTimeout | 10000 | 用于HDFS操作的毫秒数,如打开、写入、刷新、关闭。如果发生许多HDFS超时操作,则应该增加这个数字。 |
hdfs.threadsPoolSize | 10 | HDFS IO操作的每个HDFS接收器的线程数 |
hdfs.rollTimerPoolSize | 1 | 用于调度定时文件滚动的每个HDFS接收器的线程数 |
hdfs.kerberosPrincipal | 无 | 用于访问安全HDFS的Kerberos用户主体 |
hdfs.kerberosKeytab | 无 | 用于访问安全HDFS的Kerberos keytab |
hdfs.round | false | 是否时间戳被四舍五入 |
hdfs.roundValue | 1 | 四舍五入到最高倍数(在使用hdfs.roundUnit配置的单元中),小于当前时间 |
hdfs.roundUnit | second | 事件四舍五入的最小单位- second, minute or hour. |
hdfs.timeZone | Local Time | 用于解析目录路径的时区的名称,例如America/Los_Angeles。 |
hdfs.useLocalTimeStamp | false | 在替换转义序列时,使用本地时间(而不是事件头部的时间戳)。 |
Hive Sink:该接收器将包含分隔文本或JSON数据的事件直接写到到Hive表或分区中。事件是使用Hive事务来编写的。一旦一组事件被提交到Hive中,它们就会立即出现在Hive查询中。flume要写入到的分区可以是预先创建好的,也可以是没创建好的,如果没有创建好这些分区,flume可以创建它们。事件数据的字段被映射到Hive表中的相应列。以下是基本的配置,如果想要查看更详细的配置,请查看下边对应的表格
a1.channels = c1
a1.channels.c1.type = memory
a1.sinks = k1 #定义sink的名字,多个可以用逗号隔开
a1.sinks.k1.type = hive #定义sink类型为Hive
a1.sinks.k1.channel = c1
a1.sinks.k1.hive.metastore = thrift://127.0.0.1:9083 #连接MetaStore服务的地址
a1.sinks.k1.hive.database = logsdb #写入的Hive的数据库
a1.sinks.k1.hive.table = weblogs #写入的hive表
a1.sinks.k1.hive.partition = asia,%{country},%y-%m-%d-%H-%M #指定分区
a1.sinks.k1.useLocalTimeStamp = #false 是否使用本地时间戳
a1.sinks.k1.round = true #是否开启时间的四舍五入
a1.sinks.k1.roundValue = 10 #时间的四舍五入的最高倍数
a1.sinks.k1.roundUnit = minute #时间的四舍五入的最小单位
a1.sinks.k1.serializer = DELIMITED #设定序列化器为分割
a1.sinks.k1.serializer.delimiter = "\t" #设定分割符号
a1.sinks.k1.serializer.serdeSeparator = '\t'
a1.sinks.k1.serializer.fieldnames =id,msg # #字段名称,","分隔,不能有空格
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,必须是hive |
hive.metastore | 无 | MetaStore服务,例如thrift://localhost:9083 |
hive.database | 无 | hive数据库 |
hive.table | 无 | hive表 |
hive.partition | 无 | 逗号分隔的分区值列表,标识要写入的分区 |
hive.txnsPerBatchAsk | 100 | Hive授予一批事务,而不是像Flume这样的流客户端的单个事务 |
heartBeatInterval | 240 | 心跳间隔,防止hive的事物过期,将此值设置为0以禁用心跳。秒为单位 |
autoCreatePartitions | true | 是否开启自动创建分区 |
batchSize | 15000 | 一个单独的hive事物一次的批处理的条数 |
maxOpenConnections | 500 | 只允许打开这个数目的连接。如果超过这个数字,则关闭最近最少使用的连接。 |
hdfs.callTimeout | 10000 | (以毫秒为单位)Hive & HDFS I/O操作的超时,比如openTxn、write、commit、abort。 |
serializer | 无 | 序列化器解根据什么规则解析事件映射到hive表中 |
hdfs.round | false | 是否时间戳被四舍五入 |
hdfs.roundValue | 1 | 四舍五入到最高倍数(在使用hdfs.roundUnit配置的单元中),小于当前时间 |
hdfs.roundUnit | second | 事件四舍五入的最小单位- second, minute or hour. |
hdfs.timeZone | Local Time | 用于解析目录路径的时区的名称,例如America/Los_Angeles。 |
hdfs.useLocalTimeStamp | false | 在替换转义序列时,使用本地时间(而不是事件头部的时间戳)。 |
Hbase Sinks:将数据写到Hbase中
HBase Sink
a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = hbase #sink类型 ,必须为hbase
a1.sinks.k1.table = foo_table #Hbase的表名
a1.sinks.k1.columnFamily = bar_cf #Hbase列簇
a1.sinks.k1.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer #序列化解析器解析事件映射成Bhase中的字段
a1.sinks.k1.channel = c1
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,必须是hbase |
table | 无 | 指定将需要虚入数据的hbase的表 |
columnFamily | 无 | 指定数据写入的列簇 |
zookeeperQuorum | 无 | 指定zookeeper的链接地址,需要跟hbase.site.xml里的值一致 |
znodeParent | /hbase | Hbase数据存储的根路径,跟hbase.site.xml里的值一致 |
batchSize | 100 | 一次写入的条数 |
coalesceIncrements | false | 如果sink合并多个增量到一个Cell中,如果多个增量合并到一个限定数量的cell中,那么就会有更好的性能 |
serializer | org.apache.flume.sink.hbase.SimpleHbaseEventSerializer | Default increment column = “iCol”, payload column = “pCol”. |
serializer.* | 无 | 要传递给序列化器的属性。 |
kerberosPrincipal | 无 | 用于访问安全HBase的Kerberos用户 |
kerberosKeytab | 无 | 用于访问安全HBase的Kerberos keytab |
AsyncHBaseSink:异步写入数据到Hbase中的sink
a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = asynchbase #指定异步类型
a1.sinks.k1.table = foo_table
a1.sinks.k1.columnFamily = bar_cf
a1.sinks.k1.serializer = org.apache.flume.sink.hbase.SimpleAsyncHbaseEventSerializer #异步序列化器
a1.sinks.k1.channel = c1
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,必须是hbase |
table | 无 | 指定将需要虚入数据的hbase的表 |
columnFamily | 无 | 指定数据写入的列簇 |
zookeeperQuorum | 无 | 指定zookeeper的链接地址,需要跟hbase.site.xml里的值一致 |
znodeParent | /hbase | Hbase数据存储的根路径,跟hbase.site.xml里的值一致 |
batchSize | 100 | 一次写入的条数 |
timeout | 60000 | |
coalesceIncrements | false | 如果sink合并多个增量到一个Cell中,如果多个增量合并到一个限定数量的cell中,那么就会有更好的性能 |
serializer | org.apache.flume.sink.hbase.SimpleHbaseEventSerializer | Default increment column = “iCol”, payload column = “pCol”. |
serializer.* | 无 | 要传递给序列化器的属性。 |
ElasticSearchSink
a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = elasticsearch #指定sink类型为elasticsearch
a1.sinks.k1.hostNames = 127.0.0.1:9200,127.0.0.2:9300 #es集群地址
a1.sinks.k1.indexName = foo_index #索引名
a1.sinks.k1.indexType = bar_type #索引类型
a1.sinks.k1.clusterName = foobar_cluster #集群的名字
a1.sinks.k1.batchSize = 500 #批处理的大小
a1.sinks.k1.ttl = 5d
a1.sinks.k1.serializer = org.apache.flume.sink.elasticsearch.ElasticSearchDynamicSerializer #使用的序列化器
a1.sinks.k1.channel = c1
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,必须是elasticsearch |
indexName | flume | 索引名称,默认是flume |
indexType | logs | 索引类型,默认是logs |
clusterName | elasticsearch | 集群的名称,默认是elasticsearch |
batchSize | 100 | 批处理的大小 |
ttl | 无 | 设置过期时间以后文档将会删除,ms(毫秒),s(秒),m(分钟),h(小时),d(天)和w(周) |
serializer | org.apache.flume.sink.hbase.SimpleHbaseEventSerializer | Default increment column = “iCol”, payload column = “pCol”. |
serializer.* | 无 | 要传递给序列化器的属性。 |
Memory Channel:事件存储在内存当中
a1.channels = c1
a1.channels.c1.type = memory #指定channel的类型为内存
a1.channels.c1.capacity = 10000 #存储事件的最大数量
a1.channels.c1.transactionCapacity = 10000 #接受的最大数量
a1.channels.c1.byteCapacityBufferPercentage = 20
a1.channels.c1.byteCapacity = 800000
属性名 | 默认值 | 属性名解释 |
---|---|---|
channels | 无 | 连接channel |
type | 无 | 该组件的类型名称,必须是memory |
capacity | 100 | 存储在channel中的最大事件数 |
transactionCapacity | 100 | 接受最大的事件数 |
keep-alive | 3 | 增加或者删除一个事件的超时时间 |
JDBC Channel:channel数据存储在数据库中
a1.channels = c1
a1.channels.c1.type = jdbc
属性名 | 默认值 | 属性名解释 |
---|---|---|
type | 无 | 该组件的类型名称,必须是jdbc |
db.type | DERBY | 数据库类型 |
driver.class | org.apache.derby.jdbc.EmbeddedDriver | jdbc驱动 |
driver.url | (constructed from other properties) | jdbc连接url |
db.username | “sa” | 用户名 |
db.password | – | 用户密码 |
connection.properties.file | – | jdbc连接属性文件的路径 |
create.schema | true | (如果为真),则创建db模式(如果不为真不创建) |
create.index | true | 创建索引加快查找速度 |
create.foreignkey | true | |
transaction.isolation | “READ_COMMITTED” | I数据隔离级别 READ_UNCOMMITTED, READ_COMMITTED, SERIALIZABLE, REPEATABLE_READ |
maximum.connections | 10 | 最大连接数 |
maximum.capacity | 0 (unlimited) | channel中最大的事件数 |
sysprop.* | DB Vendor specific properties | |
sysprop.user.home | Home路径来存储嵌入式Derby数据库 |