Flume构成

目录

Source:

        1: taildir source:

        2: avro source

        3: exec source

        4: kafka source

Channel:

        1: memory channel

        2: jdbc channel

        3: file channel

        4: spillable memory channel

Sink:

        1: hdfs sink

        2: hive sink

        3: logger sink

        4: avro sink

        5: thrift sink

        6: irc sink

        7: null sink

        8: hbase sink

        9: async hbase sink

      10: morphlinesolr sink

      11: elasticsearch sink

      12: kafka sink

Interceptor:

        自定义拦截器


Source:

        Source用于对接各种数据源,将收集到的事件发送到临时存储Channel中。

        1: taildir source:

断点续传,多目录,不会丢数据
重复数据生产环境一般不处理,出现重复的概率比较低,处理会影响传输效率
如果处理重复数据一般分为两种情况
1.自身在taildir source里面增加自定义事务,但会影响效率
2.在下一级程序中处理使用去重数段

        2: avro source

支持avro协议,接收RPC事件请求.avro source通过监听avro端口接收外部avro客户端流事件(event),在flume的多层架构中经常被使用接受上游sink发送的event.

        3: exec source

支持linux命令,收集标准输出数据或者通过tail -f file的方式监听指定指定文件.exec source可以实现实时的消息传输,但是它不记录已经读取文件的位置,不支持断点续传,如果exec source重启或者怪掉都会造成后续增加的消息丢失,建议只是在测试环境使用

        4: kafka source

对接分布式消息队列kafka,作为kafka的消费者持续从kafka中拉取数据,如果多个kafka source同时消费kafka中同一个topic,则kafka source的kafka.consumer.group.id 应该设置成相同的组id,多个kafka source之间不会消费重复的数据,每一个source都会拉取topic下的不同主题

Channel:

       Channel可以理解为一种临时的存储,source将event放入channel ,sink取走它。

        1: memory channel

基于内存的channel,实际就是将event存放于内存中一个固定大小的队列里,优点就是速度快,缺点是可能丢失数据

        2: jdbc channel

将event存放于一个支持jdbc链接的数据库中,目前官方推荐的是Derby库,优点是数据可以恢复

        3: file channel

在磁盘上指定一个目录用于存放event,同时也可以指定目录的大小.优点是数据可以恢复,缺点是相对于memory channe来说缺点是要频繁的读取磁盘,速度较慢

        4: spillable memory channel

event存放在内存和磁盘上,内存作为主要存储,当内存达到一定临界点的时候会溢写到磁盘上.其中和了memory channel和file channel的优缺点

Sink:

        Sink组件是用于把数据发送到目的地的组件。

        1: hdfs sink

该sink把event写进hadoop分布式文件系统HDFS中,它目前支持创建文本和序列文件,它支持在两种文件类型压缩.文件可以基于数据的经过时间或者大小或者事件的数量周期性地滚动,它还通过属性把数据划分为桶或区

        2: hive sink

该sink streams将包含分割文本或者JSON数据的events直接传送到hive表或者分区中.使用hive事务写events,当一系列events提交到hive时,它们马上可以被hivve查询到.

        3: logger sink

loggs event在info水平,典型用法是测试或者调试

        4: avro sink

这种场景比较常用 web日志通过本地flume 采集 采用 avro sink 发送到 cdh集群的落盘机,这个机子采用avro source 把数据写入hdfs或kafka

        5: thrift sink

使用Thrift协议将数据写出给Thrift Source|Thrift 服务器.从配置好的channel按照配置好的批量好的批量大小批量获取events

        6: irc sink

irc sink从链接的channel获取消息和推送消息到配置的irc目的地

        7: null sink

当接收到channel时丢弃所有events

        8: hbase sink

该sink写数据到hbase

        9: async hbase sink

该sink采用异步模式写到hbase

      10: morphlinesolr sink

该sink从lfume events提取数据并转换,在apache solr服务端实时加载,apache sole servers为最终用户或者搜索应用程序提供查询服务

      11: elasticsearch sink

该sink写数据到elasticsearch集群

      12: kafka sink

flume sink实现可以导出数据到一个kafkatopic

Interceptor:

        flume拦截器介绍拦截器是简单的插件式组件,设置在source和channel之间.source接收到的事件event,在写入channel之前,拦截器都可以进行转换或者删除这些事件.

        自定义拦截器

        实现Interceptor
        重写4个方法
        initialize 初始化
        public Event intercept(Event event) 处理单个Event
        public List<Event> intercept(List<Event> events) 处理多个Event
        close 方法
        静态内部类,实现Interceptor.Builder

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值