1 Flume概述
Flume是一个Cloudera提供的分布式、高可用、高可靠的海量日志采集、聚合、传输的系统。
Flume的主要作用是:实时读取服务器本地磁盘的数据,将数据写入到HDFS。
1.1 Flume基本架构
①Agent
agent是一个jvm进程,以事件的形式将数据从源头送到目的地。
Agent由三个部分组成:Source、Channel、Sink
②Source
Source主要是负责接收数据到Flume Agent的组件。
https://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#flume-sources
avro、exec、spooling directory、netcat、 taildir
③Channel
Channel是位于Source和Sink之间的缓冲区。
Flume自带两种Channel:Memory Channel和File Channel。
Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。
File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。
④Sink
Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。
hdfs、logger、avro、file、HBase
⑤Event
传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。Event由Header和Body两部分组成,Header用来存放该event的一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组。
2 Flume的安装部署
步骤1:上传到/opt/software
步骤2:解压到/opt/module下
tar -zxvf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/
# 修改名称为flume
mv /opt/module/apache-flume-1.9.0-bin /opt/module/flume
步骤3:删除/opt/module/flume/lib文件夹下的guava-11.0.2.jar,兼容hadoop-3.1.3版本的guava
rm -f /opt/module/flume/lib/guava-11.0.2.jar
步骤4:配置环境变量
sudo vim /etc/profile.d/my_env.sh
#FLUME_HOME
export FLUME_HOME=/opt/module/flume
export PATH=$PATH:$FLUME_HOME/bin