Flume的简单介绍

Flume是Apache基金会组织提供的高可用的,高可靠的,分布式的,海量日志采集,聚合和传输的系统,flume支持在日志系统中定制各类数据发送方,用于收集数据,同时,flume提供对数据的简单处理,并写到各种接收方的能力。
当前Flume有两个版本,Flume0.9X版本之前的统称为Flume-og,
Flume1.X版本被称为Flume-ng。
主要区别如下:

  1. Flume-og中采用master结构,为了保证数据的一致性,引入zookeeper进行管理,此时的Flume是一个集群结构的软件.Flume-ng中取消了集中master机制和zookeeper管理机制,变成了一个纯粹的传输工具。

  2. Flume-ng中才用不同的线程进行数据的读写操作,在Flume-og读数据和写数据是有同一个线程操作的,如果写出比较慢的话,可能阻塞flume的读写的能力。
    Flume结构
    Flume中以Agent为基础单位,一个Agen可以包括source、channel、sink,三种组件都可以有多个。其中source组件主要功能是接受外部数据,并将数据传递到channel中;sink组件的主要功能是发送flume接收到的数据到目的地;channel的主要作用就是数据传输和保存的一个作用

    Flume主要分成三类结构:单Agent结构,多Agent链式结构和多路复用Agent结构

Flume的传输过程是以event为基础单位的,流动的是event,所以事务保证也是event级别的。同时Flume也支持多级Agent结构,支持扇入(fan-in)和扇出(fan-out),扇入其实指的是一个agent的source有多个上一级的agent的数据输入,扇出是指一个agent有多个sink来发送数据。
单Agent结构
Flume的简单介绍_第1张图片
多Agent链式结构
Flume的简单介绍_第2张图片
多路复用agent结构
Flume的简单介绍_第3张图片
Source介绍
Source的主要作用是接受客户端发送的数据,并将数据发送到channel 中,source和channel之间的关系是多对多关系,不过一般情况下使用一个source对应多个channel。通过名字区分不同的source。
Channel介绍
Channel的主要作用是提供一个数据传输通道,提供数据传输和数据存储(可选)等功能。Source将数据放到channel中,sink从channel中那数据。通过不同的名字来区分channel。

Sink介绍
Sink的主要作用是定义数据的写出方式,一般情况下sink中channel中获取数据,然后将数据写出到file、hdfs或网络上。Channel和sink之间的关系是一对多的关系,通过不同的名称来区分sink。
Flume优点

1.支持广泛的中央化存储(hdfs|hbase)

2.当传入数据的速率超过可以将数据写入目的地的速率时,

Flume充当数据生成器和集中存储之间的中介器,

并在数据生成器和集中存储之间提供稳定的数据流。

3.Flume提供了上下文路由的功能

4.Flume中的交易是基于渠道的,其中为每个消息维护两个交易(一个发送者和一个接收者)。

它保证可靠的消息传递。

5、flume是可靠的,容错的,可扩展的,可管理的和可定制的。

你可能感兴趣的:(apache)