美文网首页
冰解的破-Flume

冰解的破-Flume

作者: 大佛爱读书 | 来源:发表于2018-07-04 16:03 被阅读0次
    flume

    Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

    当前Flume有两个版本Flume 0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。

    学习整理:

    • flume-NG和flume区别与联系?

    flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用。Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 cloudera。
      但随着 FLume 功能的扩展,Flume OG 代码工程臃肿、核心组件设计不合理、核心配置不标准等缺点暴露出来,尤其是在 Flume OG 的最后一个发行版本 0.9.4. 中,日
      志传输不稳定的现象尤为严重,为了解决这些问题,2011 年 10 月 22 号,cloudera 完成了 Flume-728,对 Flume 进行了里程碑式的改动:重构核心组件、核心配置以及代码架构,重构后的版本统称为 Flume NG(next generation);改动的另一原因是将 Flume 纳入 apache 旗下,cloudera Flume 改名为 Apache Flume。


    flume结构
    • flume组件中channel有哪些类型?
    1. Memory Channel(内存Channels)
      events存储在配置最大大小的内存队列中。对于流量较高和由于agent故障而准备丢失数据的流程来说,这是一个理想的选择。
    a1.channels = c1
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 10000
    a1.channels.c1.transactionCapacity = 10000
    a1.channels.c1.byteCapacityBufferPercentage = 20
    a1.channels.c1.byteCapacity = 800000
    
    1. JDBC Channel
      events存储在持久化存储库中(其背后是一个数据库)。JDBC channel目前支持嵌入式Derby。这是一个持续的channel,对于可恢复性非常重要的流程来说是理想的选择。
    a1.channels = c1
    a1.channels.c1.type = jdbc
    
    1. Kafka Channel
      events存储在Kafka集群中。Kafka提供高可用性和高可靠性,所以当agent或者kafka broker 崩溃时,events能马上被其他sinks可用。

    Kafka channel可以被多个场景使用:

    • Flume source和sink - 它为events提供可靠和高可用的channel
    • Flume source和interceptor,但是没sink - 它允许写Flume evnets到Kafka topic
    • Flume sink,但是没source - 这是一种低延迟,容错的方式从Kafka发送events到Flume sinks 例如 HDFS, HBase或者Solr
    a1.channels.channel1.type = org.apache.flume.channel.kafka.KafkaChannel
    a1.channels.channel1.kafka.bootstrap.servers = kafka-1:9092,kafka-2:9092,kafka-3:9092
    a1.channels.channel1.kafka.topic = channel1
    a1.channels.channel1.kafka.consumer.group.id = flume-consumer
    
    1. File Channel
      在磁盘上指定一个目录用于存放event,同时也可以指定目录的大小。优点是数据可恢复,相对于memory channel来说缺点是要频繁的读取磁盘,速度较慢。
    a1.channels = c1
    a1.channels.c1.type = file
    a1.channels.c1.checkpointDir = /mnt/flume/checkpoint
    a1.channels.c1.dataDirs = /mnt/flume/data
    
    1. Spillable Memory Channel
      event存放在内存和磁盘上,内存作为主要存储,当内存达到一定临界点的时候会溢写到磁盘上。其中和了memory channel和File channel的优缺点。该channel目前正在试验中,不要求在生产环境中使用。
    a1.channels = c1
    a1.channels.c1.type = SPILLABLEMEMORY
    a1.channels.c1.memoryCapacity = 10000
    a1.channels.c1.overflowCapacity = 1000000
    a1.channels.c1.byteCapacity = 800000
    a1.channels.c1.checkpointDir = /mnt/flume/checkpoint
    a1.channels.c1.dataDirs = /mnt/flume/data
    
    1. Pseudo Transaction Channel
      只用于单元测试,不用于生产环境使用
    2. Custom Channel
      自定义channel是你实现Channel接口。当Flume agent启动时,一个自定义channel类和它依赖项必须包含在agent的classpath。
    a1.channels = c1
    a1.channels.c1.type = org.example.MyChannel
    

    另外介绍Flume Channel Selectors

    1. Replicating Channel Selector(default) (复制channel选择器)
    a1.sources = r1
    a1.channels = c1 c2 c3
    a1.sources.r1.selector.type = replicating
    a1.sources.r1.channels = c1 c2 c3
    a1.sources.r1.selector.optional = c3
    
    1. Multiplexing Channel Selector (多路复用Channel选择器)
    a1.sources = r1
    a1.channels = c1 c2 c3 c4
    a1.sources.r1.selector.type = multiplexing
    a1.sources.r1.selector.header = state
    a1.sources.r1.selector.mapping.CZ = c1
    a1.sources.r1.selector.mapping.US = c2 c3
    a1.sources.r1.selector.default = c4
    
    1. Custom Channel Selector (自定义Channel选择器)
      一个自定义channel选择器(selector)是实现ChannelSelector的接口。当Flume agent启动时,一个自定义channel selector类和它依赖项必须包含在agent的classpath。
    a1.sources = r1
    a1.channels = c1
    a1.sources.r1.selector.type = org.example.MyChannelSelector
    

    参见:
    flume1.8 Channel类型介绍(四):
    https://www.cnblogs.com/swordfall/p/8169554.html

    TO BE CONTINUED ......

    相关文章

      网友评论

          本文标题:冰解的破-Flume

          本文链接:https://www.haomeiwen.com/subject/jgneuftx.html