Flume学习总结

- Flume定义

  1. Flume是分布式,高可用,基于流式计算的,用于收集、聚合、移动大量日志数据的框架。

- Flume模型
这里写图片描述

  1. Source用于采集数据源的数据,然后封装成Event传输给Channel管道,期间也可以设置过滤器
  2. Chanel接受来自Source传输过来的Event数据
  3. Sink在Channel中拉取Event数据并将数输出,将数据写入存储设备上。
  4. Event:有可以选的Header和载有数据的ByteAarry组成,Header是容纳了Key-value字符串对的无序集合,key在集合内是唯一的。Header可以在上线文路由中扩展。

- Flume优点

  1. 可以和任何中央数据库集中式集成
  2. 起到缓冲的作用,减轻存储设备的压力
  3. 提供了数据流的路线
  4. 事物基于channel,保证了数据的可靠性
  5. 高效收集日志
  6. 支持水平拓展支持多级跳跃。

- Flume的使用

  1. 下载Flume:http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.7.0.tar.gz
  2. 解压
  3. 配置${FLUME_HOME}/conf/flume-env.sh 配置Java环境
    这里写图片描述

  4. 运行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的连接
  5. 在source监控的地址的机器上运行telnet xx.xxx.xxx.xxx 44444,然后随便数据数据就可以在Flume的agent的机器的控制台上出现输入的数据
    这里写图片描述
    这里写图片描述


- Flume的三大组件

  1. Source,其中红框里的最常用也是最重要的
    这里写图片描述

    1. 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调用
      restartThrottle10000在尝试重新启动之前等待的时间(以millis为单位)
      restartfalse如果执行的cmd死了,是否应该重新启动它
      logStdErrfalse是否记录命令的标准输出
      batchSize20每次读取和发送给channel的最大行数
      batchTimeout3000如果没有达到缓冲区的大小,等待多久将数据push到channel里
      selector.typereplicating复制或多路复用。复制就是把一个完整的事件发送到不同的channel中,多路复用就是根据不同的条件将同一个事件拆分成多个条目发送到channel中
      selector.*取决于selector.type的值
      interceptors空格分隔的列表的拦截器
      interceptors.*
    2. 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文件读取完毕以后给完成文件添加的标记后缀
      deletePolicynever是否删除读取完毕的文件,默认是”never”,就是不删除,目前只支持”never”和“IMMEDIATE”;
      fileHeaderfalse是否在event的Header中添加文件名,boolean类型
      fileHeaderKeyfile这是event的Header中的key,value是文件名
      basenameHeaderfalse是否添加一个存储文件的basename的Header
      basenameHeaderKeybasename将文件的basename添加到事件头时使用的头文件键。
      includePattern^.*$指定要包含哪些文件的正则表达式。它可以与ignorePattern一起使用。如果一个文件同时匹配ignorePattern和includePattern regex,该文件将被忽略。
      ignorePattern^$正则表达式指定被忽略的文件,如果一个文件同时匹配ignorePattern和includePattern regex,该文件将被忽略。
      trackerDir.flumespool目录来存储与文件处理相关的元数据。如果该路径不是绝对路径,则将指定spoolDir。
      pollDelay500轮询新文件的时候使用的延迟时间
      recursiveDirectorySearchfalse是否监视要读取的新文件的子目录
      maxBackoff4000如果通道满了以后,连续尝试向通道里写入数据的最大的等待时间,毫秒为单位
      batchSize100批量向channle传输event的大小
      inputCharsetUTF-8编码方式,默认是”UTF-8”
      decodeErrorPolicyFAILFAIL:抛出异常并解析文件失败。REPLACE:将不可解析字符替换为“替换字符”字符,通常是Unicode U+FFFD。IGNORE:删除不可解析的字符序列。
      deserializerLINE指定用于将文件解析为事件的反序列化器。默认情况下,将每一行解析为一个事件。指定的类必须实现eventdeserizer.builder。
      selector.typereplicating复制或多路复用。复制就是把一个完整的事件发送到不同的channel中,多路复用就是根据不同的条件将同一个事件拆分成多个条目发送到channel中
      selector.*取决于selector.type的值
      interceptors空格分隔的列表的拦截器
      interceptors.*
    3. 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.serverskafka集群的地址,如localhost:9092
      kafka.topicsKafka集群的主题,多个用逗号隔开
      kafka.topics.regex正则匹配的主题集,他比kafka.topics优先级高,如果kafka.topics存在,那么就会覆盖kafka.topics的值
      kafka.consumer.group.idflume消费者群体的唯一标识。在多个源或代理中设置相同的id表明它们属于同一个消费者组
      batchSize1000一个批次向channel中写入的最大的消息的数量
      batchDurationMillis1000在将批处理写入通道之前的最大时间(以ms为单位)
      backoffSleepIncrement1000当Kafka主题为空时触发的初始和增量等待时间。这个值尽可能的低
      maxBackoffSleep5000当Kafka主题看起来为空时触发的最大等待时间,这个值尽可能的低
      useFlumeEventFormatfalse默认情况下,事件作为字节从Kafka主题直接带到事件主体中。设置为true以Avro二进制格式读取事件。与KafkaSink上的相同属性或Kafka通道上的parseAsFlumeEvent属性一起使用,这将保留在生产端发送的所有Flume头。
      setTopicHeadertrue当设置为true时,将检索到的消息的主题存储到一个header中,由topicHeader属性定义。
      topicHeadertopic如果setTopicHeader属性设置为true,则定义用于存储接收消息的主题的标题的名称。如果与Kafka Sink topicHeader属性结合,应该要小心,以免在循环中将消息发送回相同的主题。
      migrateZookeeperOffsetstrue
    4. Syslog Sources:读取Syslog数据转转换成Event。

      1. 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监听的端口号
        eventSize2500单个事件行的最大大小,以字节为单位
        selector.typereplicating复制或多路复用。复制就是把一个完整的事件发送到不同的channel中,多路复用就是根据不同的条件将同一个事件拆分成多个条目发送到channel中
        selector.*取决于selector.type的值
        interceptors空格分隔的列表的拦截器
        interceptors.*
      2. 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如果指定,端口号将使用这里指定的头名存储在每个事件的头中。这允许拦截器和通道选择器根据传入的端口自定义路由逻辑。
        eventSize2500单个事件行的最大大小,以字节为单位
        charset.defaultUTF-8将syslog事件解析为字符串时使用的默认字符集。
        charset.port.《port》设置对应端口的字符集
        batchSize100尝试处理每个请求循环的最大事件数。使用默认值通常是可以的。
        readBufferSize1024内部Mina读取缓冲区的大小。提供性能调优。使用默认值通常是可以的。
        selector.typereplicating复制或多路复用。复制就是把一个完整的事件发送到不同的channel中,多路复用就是根据不同的条件将同一个事件拆分成多个条目发送到channel中
        selector.*取决于selector.type的值
        interceptors空格分隔的列表的拦截器
        interceptors.*
      3. 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.typereplicating复制或多路复用。复制就是把一个完整的事件发送到不同的channel中,多路复用就是根据不同的条件将同一个事件拆分成多个条目发送到channel中
        selector.*取决于selector.type的值
        interceptors空格分隔的列表的拦截器
        interceptors.*
    5. 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监听的端口号
      bind0.0.0.0监听的主机名或者ip地址
      handlerorg.apache.flume.source.http.JSONHandler处理程序类
      handler.*处理程序类的配置参数
      selector.typereplicating复制或多路复用。复制就是把一个完整的事件发送到不同的channel中,多路复用就是根据不同的条件将同一个事件拆分成多个条目发送到channel中
      selector.*取决于selector.type的值
      interceptors空格分隔的列表的拦截器
      interceptors.*
      enableSSLfalse将属性设置为true,以启用SSL。HTTP源不支持SSLv3。
      excludeProtocolsSSLv3要排除的SSL/TLS协议的空格分隔列表。SSLv3总是被排除在外。
      keystore密钥存储库的位置包括密钥存储库文件名
      keystorePassword Keystore password密钥密码
  2. Sink,红框内的比较常用
    这里写图片描述

    1. 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.pathHDFS目录路径
      hdfs.filePrefixFlumeDataHDFS上前缀标识的为Flume创建的文件
      hdfs.fileSuffixHDFS上后缀标识的为Flume创建的文件
      hdfs.inUsePrefix用于flume主动写入的临时文件的前缀
      hdfs.inUseSuffix.tmp用于flume主动写入的临时文件的后缀
      hdfs.rollInterval30间隔多少秒数触发滚动当前文件(0 =从不基于时间间隔滚动)
      hdfs.rollSize1024文件的触发滚动当前文件 单位为bytes(0=从不基于大小滚动)
      hdfs.rollCount10事件的条目数触发滚动当前文件(0 =从不滚动基于事件数)
      hdfs.idleTimeout0超时后关闭非活跃文件(0 =禁用自动关闭空闲文件)
      hdfs.batchSize100一个批次向HDFS写入的事件数
      hdfs.codeC指定压缩格式。gzip, bzip2, lzo, lzop, snappy
      hdfs.fileTypeSequenceFile文件格式:当前SequenceFile、DataStream或CompressedStream (1)DataStream不会压缩输出文件,请不要设置压缩格式(2)CompressedStream必须设置hdfs.codeC的压缩格式
      hdfs.maxOpenFiles5000只允许打开这个数目的文件。如果超过这个数字,就会关闭最老的文件
      hdfs.minBlockReplicas指定每个HDFS块的最小复制数。如果没有指定,它来自类路径中的默认Hadoop配置。
      hdfs.writeFormatWritable向DFS文件里写的格式,要么是Text或者Writable,在使用Flume创建数据文件之前,将这些文件设置为Text,否则Apache Impala或Apache Hive都无法读取这些文件
      hdfs.callTimeout10000用于HDFS操作的毫秒数,如打开、写入、刷新、关闭。如果发生许多HDFS超时操作,则应该增加这个数字。
      hdfs.threadsPoolSize10HDFS IO操作的每个HDFS接收器的线程数
      hdfs.rollTimerPoolSize1用于调度定时文件滚动的每个HDFS接收器的线程数
      hdfs.kerberosPrincipal用于访问安全HDFS的Kerberos用户主体
      hdfs.kerberosKeytab用于访问安全HDFS的Kerberos keytab
      hdfs.roundfalse是否时间戳被四舍五入
      hdfs.roundValue1四舍五入到最高倍数(在使用hdfs.roundUnit配置的单元中),小于当前时间
      hdfs.roundUnitsecond事件四舍五入的最小单位- second, minute or hour.
      hdfs.timeZoneLocal Time用于解析目录路径的时区的名称,例如America/Los_Angeles。
      hdfs.useLocalTimeStampfalse在替换转义序列时,使用本地时间(而不是事件头部的时间戳)。
    2. 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.metastoreMetaStore服务,例如thrift://localhost:9083
      hive.databasehive数据库
      hive.tablehive表
      hive.partition逗号分隔的分区值列表,标识要写入的分区
      hive.txnsPerBatchAsk100Hive授予一批事务,而不是像Flume这样的流客户端的单个事务
      heartBeatInterval240心跳间隔,防止hive的事物过期,将此值设置为0以禁用心跳。秒为单位
      autoCreatePartitionstrue是否开启自动创建分区
      batchSize15000一个单独的hive事物一次的批处理的条数
      maxOpenConnections500只允许打开这个数目的连接。如果超过这个数字,则关闭最近最少使用的连接。
      hdfs.callTimeout10000(以毫秒为单位)Hive & HDFS I/O操作的超时,比如openTxn、write、commit、abort。
      serializer序列化器解根据什么规则解析事件映射到hive表中
      hdfs.roundfalse是否时间戳被四舍五入
      hdfs.roundValue1四舍五入到最高倍数(在使用hdfs.roundUnit配置的单元中),小于当前时间
      hdfs.roundUnitsecond事件四舍五入的最小单位- second, minute or hour.
      hdfs.timeZoneLocal Time用于解析目录路径的时区的名称,例如America/Los_Angeles。
      hdfs.useLocalTimeStampfalse在替换转义序列时,使用本地时间(而不是事件头部的时间戳)。
    3. Hbase Sinks:将数据写到Hbase中

      1. 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/hbaseHbase数据存储的根路径,跟hbase.site.xml里的值一致
        batchSize100一次写入的条数
        coalesceIncrementsfalse如果sink合并多个增量到一个Cell中,如果多个增量合并到一个限定数量的cell中,那么就会有更好的性能
        serializerorg.apache.flume.sink.hbase.SimpleHbaseEventSerializerDefault increment column = “iCol”, payload column = “pCol”.
        serializer.*要传递给序列化器的属性。
        kerberosPrincipal用于访问安全HBase的Kerberos用户
        kerberosKeytab用于访问安全HBase的Kerberos keytab
      2. 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/hbaseHbase数据存储的根路径,跟hbase.site.xml里的值一致
        batchSize100一次写入的条数
        timeout60000
        coalesceIncrementsfalse如果sink合并多个增量到一个Cell中,如果多个增量合并到一个限定数量的cell中,那么就会有更好的性能
        serializerorg.apache.flume.sink.hbase.SimpleHbaseEventSerializerDefault increment column = “iCol”, payload column = “pCol”.
        serializer.*要传递给序列化器的属性。
    4. 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
      indexNameflume索引名称,默认是flume
      indexTypelogs索引类型,默认是logs
      clusterNameelasticsearch集群的名称,默认是elasticsearch
      batchSize100批处理的大小
      ttl设置过期时间以后文档将会删除,ms(毫秒),s(秒),m(分钟),h(小时),d(天)和w(周)
      serializerorg.apache.flume.sink.hbase.SimpleHbaseEventSerializerDefault increment column = “iCol”, payload column = “pCol”.
      serializer.*要传递给序列化器的属性。
  3. Channel,红框内的比较常用
    这里写图片描述

    1. 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
      capacity100存储在channel中的最大事件数
      transactionCapacity100接受最大的事件数
      keep-alive3增加或者删除一个事件的超时时间
    2. JDBC Channel:channel数据存储在数据库中

      a1.channels = c1
      a1.channels.c1.type = jdbc
      属性名默认值属性名解释
      type该组件的类型名称,必须是jdbc
      db.typeDERBY数据库类型
      driver.classorg.apache.derby.jdbc.EmbeddedDriverjdbc驱动
      driver.url(constructed from other properties)jdbc连接url
      db.username“sa”用户名
      db.password用户密码
      connection.properties.filejdbc连接属性文件的路径
      create.schematrue(如果为真),则创建db模式(如果不为真不创建)
      create.indextrue创建索引加快查找速度
      create.foreignkeytrue
      transaction.isolation“READ_COMMITTED”I数据隔离级别 READ_UNCOMMITTED, READ_COMMITTED, SERIALIZABLE, REPEATABLE_READ
      maximum.connections10最大连接数
      maximum.capacity0 (unlimited)channel中最大的事件数
      sysprop.*DB Vendor specific properties
      sysprop.user.homeHome路径来存储嵌入式Derby数据库
  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值