Flume的概念、组成架构及安装部署教程(附安装包下载地址)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wx1528159409

目录

一、Flume是什么

二、 Flume的组成架构

(1)Agent

(2)Source

(3)Channel

(4)Sink

(5)Event

三、Flume的下载与安装

1. Flume官网链接

2. Flume安装包下载地址

3. 安装Flume步骤(以apache-flume-1.7.0为例)


一、Flume是什么

官方定义:Flume是Cloudera提供的一个高可用、高可靠的,分布式的海量日志采集、聚合和传输系统。

个人理解Flume是用于日志采集和传输的一个框架,相对应于liunx中的 -put命令

但Flume相比-put命令传输日志数据的缺点而言:

1. -put命令上传的都是静态数据,而Flume可以传输动态数据

2. -put命令上传大量数据时,读的时间长,写的时间短,会造成内存溢出、数据丢失等后果,而Flume有缓冲机制,实现读写一致

总体来看,Flume是一个采集数据框架,它并不存储数据,Flume就是实时读取服务器本地磁盘的数据,并将数据写入到HDFS、kafka、Hbase等终端中的。

二、 Flume的组成架构

借用网上的一张Flume组织架构示意图:

(1)Agent

Agent是一个Flume进程,是Flume数据传输的基本单元,Agent分为Source、Channel和Sink三部分。

(2)Source

Source用于接收处理不同类型、不同格式的日志数据,它有两个作用:

a. 接收客户端数据到Agent中

b. 把数据封装成event形式,然后传递给Channel

常见的日志数据格式有:

avro:是一个第三方框架,主要作用是将数据序列化和反序列化;

           两个Flume串联时,前一个Flume的Sink和后一个Flume的Source,用的就是avro类型的数据;

exec:即execute,执行一段linux命令,对文件进行修改,文件类型的数据;

spooling directory:文件夹类型的数据;

netcat:第三方工具,主要作用:1. 监控主机指定端口生成的数据并传输数据

                                                     2. 占用指定主机端口,并向其他端口发送数据(使用-nc命令)

此外还有syslog、sequence generator、http、legacy、thrift等类型的日志数据。

(3)Channel

位于Source和Sink之间的缓冲区,用于缓存数据,存储event;

Channel线程安全,可以同时处理多个Source的写入操作和多个Sink的读取操作。

Flume自带的两种Channel:

Memory Channel:基于内存缓存,优点是速度快,缺点是容易丢失数据;

File Channel:将数据序列化到本地磁盘,优点是数据安全,缺点是速度慢;

企业开发中更常用Memory Channel。

(4)Sink

Channel将数据批量导入缓冲区takeList中,Sink主动去缓冲区批量获取数据,并将这些事件批量写入到存储或索引系统,或另一个Flume Agent中;

Sink如果将批量事件发送成功,Channel会从内部缓冲区takeList中删除事件;

Sink如果发送数据异常,takeList会将数据回滚到Channel,重新批量导入数据事件。

Sink的目的地包括:HDFS、Kafka、HBase、logger、avro、thrift、ipc、file、null、solr、自定义

(5)Event

Flume数据传输的基本单元,事件形式,传输要么全部成功,要么全部失败;

Event由可选的header和载有数据的byte array组成:

header是容纳key-value键值对的HashMap,一般是空的;byte array是装载数据的字节数组。

三、Flume的下载与安装

1. Flume官网链接

2. Flume安装包下载地址

3. 安装Flume步骤(以apache-flume-1.7.0为例)

(1)将apache-flume-1.7.0-bin.tar.gz上传到linux的/opt/software目录下;

(2)解压apache-flume-1.7.0-bin.tar.gz到/opt/module/目录下;

[kevin@hadoop100 software]$ tar -zxf apache-flume-1.7.0-bin.tar.gz -C /opt/module/

(3)修改apache-flume-1.7.0-bin的名称为flume

[kevin@hadoop100 module]$ mv apache-flume-1.7.0-bin flume

(4)将flume/conf下的flume-env.sh.template文件修改为flume-env.sh

[kevin@hadoop100 conf]$ mv flume-env.sh.template flume-env.sh

(5)配置文件flume-env.sh,写入自己的JDK安装路径

[kevin@hadoop100 conf]$ vi flume-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144

猜你喜欢

转载自blog.csdn.net/wx1528159409/article/details/84960986