1.flume的介绍
Flume最早是Cloudera提供的日志收集系统,目前是Apache下的一个孵化项目,Flume支持在日志系统中定制各类数据发送方,用于收集数据。是目前企业正在使用的一种日志收集系统 flume的架构如下图所示
flume的内部可以说是一个一个的Agent,里面包含source,channel和sink,source即是数据的来源,sink即是数据的输出,channel可以理解为是一个通道。flume的配置和使用也是围绕这三个部分进行展开的。 source即是数据的来源,数据的来源可以分为两种,一种数据来源是主动进行获取,一种数据来源是被动去获取(别人给你传)。sink可以理解为数据存储的位置即flume接收完成数据之后 将数据存放在何处。接下来我们以flume官网上的一个例子进行搭建flume
2.flume的简单搭建
首先我们在自己的服务器上进行安装flume,安装过程极为简单,在此不做详细的说明
3.flume的简单例子
在这里,我们给出一个示例配置文件,描述单节点Flume部署。该配置允许用户生成事件并随后将其记录到控制台
#example.conf:单节点Flume配置
#将该代理商的组件命名为
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#描述/配置源
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
#描述sink
a1.sinks.k1.type = logger
#使用缓冲内存中事件的通道
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
#将信源和信宿绑定到信道
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
该配置定义了一个名为a1的代理。a1有一个侦听端口44444上的数据的源,一个缓存内存中事件数据的通道,以及一个将事件数据记录到控制台的接收器。配置文件命名各种组件,然后描述它们的类型和配置参数。给定的配置文件可能会定义多个命名代理; 当一个给定的Flume进程启动时,会传递一个标志,告诉它哪个指定的代理要显示。
给定这个配置文件,我们可以按如下方式启动Flume:
$ bin / flume-ng agent --conf conf --conf -file example.conf --name a1 -Dflume.root.logger = INFO,console
请注意,在完整部署中,我们通常会包含一个选项:-- conf = <conf-dir>。所述<CONF-DIR>目录将包括一个外壳脚本flume-env.sh和潜在的一个log4j的属性文件。在这个例子中,我们传递一个Java选项来强制Flume登录到控制台,我们没有自定义环境脚本。
从一个单独的终端,我们可以telnet端口44444并发送一个事件给Flume:
$ telnet localhost 44444
尝试127.0.0.1 ...
连接到localhost.localdomain(127.0.0.1)。
转义字符是'^]'。
你好,世界!<ENTER>
好
原始的Flume终端将在日志消息中输出事件。
19年12月6日15 :32:19 INFO source.NetcatSource:创建的ServerSocket:sun.nio.ch.ServerSocketChannelImpl [/127.0.0.1:44444]
19年12月6日15 :32:34 INFO sink.LoggerSink:事件:{头:{}体:48 65 6C 6F 6C 20 77 72 6F 6C 64 21 0D世界你好!}
恭喜 - 您已经成功配置并部署了Flume代理