目录
Flume 概述
Flume 定义
Flume 是 Cloudera 提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统。Flume 基于流式架构,灵活简单。
为什么选用 Flume
- Python爬虫数据
- Java后台日志数据
- 服务器本地磁盘文件
- HDFS 文件夹
- Kafka 网络端口数据
Flume 最主要的作用就是实时读取服务器本地磁盘的数据,并将数据写入到 HDFS。
Flume 基础架构
Flume 的组成架构如下图所示。
Agent
Agent 是一个 JVM 进程,它以事件的形式将数据从源头送至目的。Agent 主要有 3 个部分组成:Source、Channel、Sink。
Source
Source 是负责接收数据到 Flume Agent 的组件。Source 组件可以处理各种类型、各种格式的日志数据,包括但不限于:
- Avro
- Thrift
- Exec
- JMS
- Spooling Directory
- Netcat
- Taildir
- Sequence Generator
- Syslog
- HTTP
- Legacy
Sink
Sink 不断地轮询 Channel 中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统,或者被发送到另一个 Flume Agent。Sink 组件的目的地包括但不限于:
- HDFS
- Logger
- Avro
- Thrift
- IPC
- File
- HBase
- Solr
- 自定义
Channel
Channel 是位于 Source 和 Sink 之间的缓冲区。因此,Channel 允许 Source 和 Sink 运作在不同的速率上。Channel 是线程安全的,可以同时处理几个 Source 的写入操作和几个 Sink 的读取操作。
Flume 自带两种 Channel:
- Memory Channel:内存中的队列。Memory Channel 在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么 Memory Channel 就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。
- File Channel:将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。
Event
传输单元,Flume 数据传输的基本单元,以 Event 的形式将数据从源头送至目的地。Event 由 Header 和 Body 两部分组成:
- Header:用来存放该 event 的一些属性,为 K-V 结构。
- Body:用来存放该条数据,形式为字节数组。
Flume 安装
Flume 安装部署
安装地址
- Flume 官网地址:Welcome to Apache Flume — Apache Flume
- 文档查看地址:Flume 1.11.0 User Guide — Apache Flume
- 下载地址:Index of /dist/flume
安装部署
-
上传安装包到 Linux
将
apache-flume-1.9.0-bin.tar.gz
上传到 Linux 的/opt/software
目录下。 -
解压安装包
[lzl@hadoop12 software]$ tar -zxf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/
-
重命名安装目录
[lzl@hadoop12 module]$ mv /opt/module/apache-flume-1.9.0-bin /opt/module/flume
-
删除不兼容的 jar 包
为了兼容 Hadoop 3.1.3,需要删除
flume
目录下lib
文件夹中的guava-11.0.2.jar
文件。[lzl@hadoop12 lib]$ rm /opt/module/flume/lib/guava-11.0.2.jar