Flume学习总结

- Flume定义

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

- Flume模型
Flume学习总结_第1张图片

  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环境
    Flume学习总结_第2张图片

  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学习总结_第3张图片
    这里写图片描述


- Flume的三大组件

  1. Source,其中红框里的最常用也是最重要的
    Flume学习总结_第4张图片

    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调用
      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.*
    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 文件读取完毕以后给完成文件添加的标记后缀
      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.*
    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.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
    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 监听的端口号
        eventSize 2500 单个事件行的最大大小,以字节为单位
        selector.type replicating 复制或多路复用。复制就是把一个完整的事件发送到不同的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 如果指定,端口号将使用这里指定的头名存储在每个事件的头中。这允许拦截器和通道选择器根据传入的端口自定义路由逻辑。
        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.*
      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.type replicating 复制或多路复用。复制就是把一个完整的事件发送到不同的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 监听的端口号
      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 密钥密码
  2. Sink,红框内的比较常用
    Flume学习总结_第5张图片

    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.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 在替换转义序列时,使用本地时间(而不是事件头部的时间戳)。
    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.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 在替换转义序列时,使用本地时间(而不是事件头部的时间戳)。
    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 /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
      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 /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.* 要传递给序列化器的属性。
    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
      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.* 要传递给序列化器的属性。
  3. Channel,红框内的比较常用
    Flume学习总结_第6张图片

    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
      capacity 100 存储在channel中的最大事件数
      transactionCapacity 100 接受最大的事件数
      keep-alive 3 增加或者删除一个事件的超时时间
    2. 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数据库

你可能感兴趣的:(Flume学习总结)