1.Apache Flume 简介

来源:互联网 发布:做微商最常用的软件 编辑:程序博客网 时间:2024/05/20 02:24

一.简介

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


image.png

系统要求

java运行时环境java 1.7或更高版本

内存:源、信道或接收器使用的配置的足够内存

磁盘空间-用于信道或接收器配置的足够磁盘空间

目录权限-代理使用的目录的读/写权限

二.主要功能

1.日志收集
Flume最早是Cloudera提供的日志收集系统,目前是Apache下的一个孵化项目,Flume支持在日志系统中定制各类数据发送方,用于收集数据。

2.数据处理
Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力 Flume提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统,支持TCP和UDP等2种模式),exec(命令执行)等数据源上收集数据的能力。

工作原理

flume的核心是把数据从数据源(source)收集过来,在将收集到的数据送到指定的目的地(sink)。

为了保证输送的过程一定成功,在送到目的地(sink)之前,会先缓存数据(channel),待数据真正到达目的地(sink)后,flume在删除自己缓存的数据。

在整个数据的传输的过程中,流动的是event,即事务保证是在event级别进行的。

那么什么是event呢?

event将传输的数据进行封装,是flume传输数据的基本单位。如果是文本文件,通常是一行记录,event也是事务的基本单位。event从source,流向channel,再到sink,本身为一个字节数组,并可携带headers(头信息)信息。event代表着一个数据的最小完整单元,从外部数据源来,向外部的目的地去。


image.png

三.Flume架构

Flume使用agent来收集日志,agent包括三个组成部分:

  • source:收集数据
  • channel:存储数据
  • sink :输出数据
    Flume使用source接收日志,然后缓存到channel中,最后通过sink将数据输出到目的地。只有在sink将channel中的数据成功发送出去之后,channel才会将临时数据进行删除,这种机制保证了数据传输的可靠性与安全性。

Flume支持agent串联操作,也就是说可以将上一个agent的sink输出到作为下一个agent的source的输入。

source还支持接受多个输入,sink也可以将数据输出到多个目的地中。


原创粉丝点击