Flume:简介

Flume定义

  1. Flume官网地址:http://flume.apache.org/
  2. 文档查看地址:http://flume.apache.org/FlumeUserGuide.html
  3. 下载地址:http://archive.apache.org/dist/flume/

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。
Flume基于流式架构,灵活简单。
在这里插入图片描述

Flume基础架构

在这里插入图片描述

Agent

  1. Agent:Flume的部署单元,本质是一个JVM进程,Agent内部是以事件的形式将数据从源头送至目的。
  2. 组成:Agent主要有3个部分组成,Source、Channel、Sink。

Source

  1. Source:是负责接收数据到Flume Agent的组件。
  2. 特点:Source组件可以处理各种类型、各种格式的日志数据,
  3. Source组件类型:
    ① avro:本质是RPC框架,支持跨语言、跨平台的数据传输,avro Source在flume中多用于Agent的连接。
    ② netcat:本质是Linux下的端口类工具,netcat Source在Flume中用于采集端口传输的数据。
    ③ exec:支持执行命令的,并将命令执行后的标准输出作为数据采集,多用于采集一个可追加文件。
    ④ spooling directory:支持对一个目录进行监听,采集目录中一个或多个新生成的文件数据。
    ⑤ taildir:支持对多个目录进行监听,采集一个或多个目录下的一个或多个可追加文件,支持断点续传。
    除此之外还有:thrift、jms、sequence generator、syslog、http、自定义Source。

Sink

  1. Sink:是负责发送数据到外部系统的Flume Agent的组件。
  2. 特点:Sink组件不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量的、事务的写入到存储或索引系统、或者被发送到另一个Flume Agent。
  3. Sink组件类型:
    ①logger:logger Sink组件则是将数据写到成Flume框架的运行日志中,配合运行参数-Dflume.root.logger=INFO,console可以将Flume运行日志(其中就包含了采集的数据)输出到控制台,多用于测试环境。
    ② hdfs:hdfs Sink组件是负责将数据传输到HDFS分布式文件系统中。
    ③ avro:avro Sink组件配合avro Source组件可以实现Agent的连接。
    ④ file:file Sink组件是将采集到的数据直接输出到本地文件系统中,即linux的磁盘上。
    除此之外还有:thrift、ipc、HBase、solr、自定义Sink。

Channel

  1. Channel:是负责暂存数据的,是位于Source和Sink组件之间的缓冲区。
  2. 特点:
    ① 由于Channel组件的存在,使得Source和Sink组件可以运作在不同的速率上。
    ② Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。
  3. Flume自带两种Channel:
    ① Memory Channel:基于内存的队列存储事件,适用于对数据安全性要求不高的场景。 快,不安全
    ② File Channel:基于磁盘存储事件,宕机数据不丢失,适用于对数据安全敏感度高的场景。 慢,安全

Event

  1. Event:agent中的事件,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。
  2. 特点:Event由Header和Body两部分组成,
    ① Header:用来存放该event的一些属性,为K-V结构
    ② Body:用来存放该条数据,形式为字节数组
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45427648/article/details/131840732