- Flume定义
- Flume是分布式,高可用,基于流式计算的,用于收集、聚合、移动大量日志数据的框架。
- Flume模型
- Source用于采集数据源的数据,然后封装成Event传输给Channel管道,期间也可以设置过滤器
- Chanel接受来自Source传输过来的Event数据
- Sink在Channel中拉取Event数据并将数输出,将数据写入存储设备上。
- Event:有可以选的Header和载有数据的ByteAarry组成,Header是容纳了Key-value字符串对的无序集合,key在集合内是唯一的。Header可以在上线文路由中扩展。
- Flume优点
- 可以和任何中央数据库集中式集成
- 起到缓冲的作用,减轻存储设备的压力
- 提供了数据流的路线
- 事物基于channel,保证了数据的可靠性
- 高效收集日志
- 支持水平拓展支持多级跳跃。
- Flume的使用
- 下载Flume:http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.7.0.tar.gz
- 解压
配置
${FLUME_HOME}/conf/flume-env.sh
配置Java环境
运行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的三大组件
Source,其中红框里的最常用也是最重要的
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 无 密钥密码
Sink,红框内的比较常用
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.* 无 要传递给序列化器的属性。
Channel,红框内的比较常用
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数据库