Apache Flume是什么
Flume
是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统,通常用于海量数据的实施采集和传输,如:海量日志数据。目前主要使用Flume-NG版本。
下面这张图是Flume的基础架构图:
外部数据源以特定格式向 Flume 发送 events
(事件),当 source
接收到 events
时,它将其存储到一个或多个 channel
,channe
会一直保存 events
直到它被 sink
所消费。sink
的主要功能从 channel
中读取 events
,并将其存入外部存储系统或转发到下一个 source
,成功后再从 channel
中移除 events
。
Flume架构中的几个主要概念:
- Event:一个数据单元,要传递的消息数据。一个
Evnet
由标题和正文组成:前者是键/值映射,后者是任意字节数组。 - Client:操作位于源点处的Event,将其发送到Flume
- Agent:一个独立的Flume进程,包含三个组件
Source
、Channel
、Sink
Source:用来消费传递到该组件的Event
Channel:中转Event的一个临时存储,保存有Source组件传递过来的Event
Sink:从Channel中读取并移除Event,将Event传递到Flow Pipeline中的下一个Agent(如果有的话)或将其存入外部存储系统
Flume的使用模式:
-
单Agent数据流模型
-
多 Agent 串行传输数据流模型
为了使数据跨多个代理或跃点流动,前一个代理的接收器和当前节点的源必须为avro类型,接收器指向源的主机名(或IP地址)和端口。
-
收集数据流模型
日志收集中的一种非常常见的情况是,大量的日志生成客户端将数据发送到连接到存储子系统的几个消费者代理。例如,从数百台Web服务器收集的日志发送到许多写入HDFS群集的代理。
-
多路数据流模型
Flume支持将事件流复用到一个或多个目的地。这是通过定义一种流多路复用器来实现的,该流多路复用器可以将事件复制或选择性地路由到一个或多个通道。
Apache Flume安装方式
详见我的博客https://blog.csdn.net/qq_35885488/article/details/103071424
Apache Flume简单使用
需求1:从指定网络端口采集数据输出到控制台
参考:http://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html
此配置定义了一个名为a1的Agent
。a1具有侦听端口44444上的数据的源,在内存中缓冲事件数据的通道以及将事件数据记录到控制台的接收器。配置文件为各个组件命名,然后描述它们的类型和配置参数。给定的配置文件可能会定义几个命名Agent
。当启动给定的F