flume是什么

  • 可靠的,可扩展的大数据搬运系统,从数据生产者到数据最终目的地之间充当缓冲的角色,平衡数据生产者和消费者,提供稳定的流状态。

  • 主要的目的地以hdsf以及hbase为主。

  • 类似的有apache kafka以及facebook的scribe。

为什么要使用flume

  • 把数据存储到hdfs或者hbase并不是简单地调用api那样简单,这里得考虑各种复杂的场景,比如并发写入的量以及hdfs及hbase的系统压力,网络延迟等等问题。

  • flume设计为灵活的分布式系统,提供可定制化的管道,保证不会丢失数据,提供持久的channel

flume的构成

agent为其基本单元(每个agent包括source、channel、sink三大部分)

图片描述

source,负责捕获数据到agent

  • source拦截器,修改或删除事件

Avro Source
Exec Source
Spooling Directory Source
NetCat Source
Sequence Generator Source
Syslog Sources
Syslog TCP Source
Multiport Syslog TCP Source
Syslog UDP Source
HTTP Source

channel,一个缓冲区,负责在成功写入数据到sink之前,保存source已经接收的数据

  • channel过滤器/选择器(对事件应用过滤条件,决定事件应该写入到哪个source附带的channel中)

  • 内置channel

Memory Channel
File Channel
JDBC Channel

  • channel处理器(处理事件写入channel)

    图片描述

sink,负责从channel移走数据到目的地或下一个agent

  • sink运行器(事件处理分发)

  • sink组(包含多个sink)

  • sink处理器(从channel取数据写入到目的地)
    图片描述

  • 内置sink

HDFS Sink
Logger Sink
Avro Sink
IRC Sink
File Roll Sink
Null Sink
HBaseSinks
ElasticSearchSink

事件

flume把数据表示为事件,事件包括byte数组的主体以及map形式的报头(路由信息)
图片描述

拦截器

图片描述

  • 内置拦截器

Timestamp Interceptor
Host Interceptor
Static Interceptor
UUID Interceptor
Morpline Interceptor
Regex Filtering Interceptor
Regex Extractor Interceptor

适用场景

  • 数据可以表示为多个独立记录

  • 实时推送持续而且量级很大的数据流(如果每几个小时有几G的数据,不损害hdfs,没必要部署flume)


codecraft
11.9k 声望2k 粉丝

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很自豪告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅,那是个很疯狂的时代,我在一波波的浪潮上留下...


引用和评论

0 条评论