1.flume的介绍

Flume最早是Cloudera提供的日志收集系统,目前是Apache下的一个孵化项目,Flume支持在日志系统中定制各类数据发送方,用于收集数据。是目前企业正在使用的一种日志收集系统 flume的架构如下图所示

flume测试传数据到hbase flume数据源_ci

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代理