最详细的flume概念理解和配置及命令详解

1、概念

flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。

flume可以采集文件,socket数据包、文件、文件夹、kafka等各种形式源数据,有可以将采集到的数据(下沉sink)输出到HDFS、hbase、hive、kafka等众多外部存储系统中。

一般的采集需求。通过对flume的简单配置即可实现flume针对特殊场景也具备良好的自定义扩展能力,因此,flume可以适用于大部分的日常数据采集场景。

2、运行机制

flume分布式系统中最核心的角色是agent,flume采集系统就是由一个个agent所连接起来形成。每个agent相当于一个数据传递员,Source到Channel到Sink之间传递数据的形式是Event事件;Event事件是一个数据流单元。

Agent内部有三个组件:
a)Source:采集组件,用于跟数据源对接,以获取数据
b)Sink:下沉组件,用于往下一级agent传递数据或者往最终存储系统传递数据
c)Channel:传输通道组件,用于从source将数据传递到sink(其实可以理解为一个缓冲区,防止数据溢出导致宕机)

3、Flume采集系统结构图

3.1、简单结构

单个agent采集数据在这里插入图片描述
3.2、复杂结构

多个agent之间串联
在这里插入图片描述
4、安装配置及基本命令

  • 下载flume
  • 配置flume
  • 启动flume及其命令解析

a.下载flume

Flume官网,找到download即可下载

b.配置Flume

为什么需要配置Flume的文件呢?
因为各个机器都不相同,配置也就不相同。其中,还有将Flume的log输出到控制台,输出到hdfs,输出到kafka,输出到物理文件和mongodb等等等… 这些都需要配置进行,Flume运行时会将这些配置进行解析,以达到简单配置即可使用的目的。大大降低了软件的使用难度和部署、维护难度。

首先,我们当然要解压flume文件包,这里我已经准备好了四台虚拟机(其实学flume一台虚拟机就够用了)
在这里插入图片描述解压完之后的样子;当然这是我已经改过名字的了,名字很简单,mv空格加上本来的名字空格再加上想要改的名字就完成了
mv apache-flume-1.6.0-bin apache-flume-1.6.0
在这里插入图片描述随后,我们便要进入Flume文件夹,对于配置文件进行编辑了。当然和往常一样,在进行编辑之前,我们需要将原文件进行保存备份(保持这个好习惯,以后会少掉头发)。

cd flume-1.6.0/conf
scp flume-conf.properties.template flume-conf.properties

这样在conf目录就有flume-conf.properties这个文件了,也是我们接下来需要配置的这个文件,启动Flume的时候会使用到。
接着,我们将官方的配置写入其中,官方配置如下:

# example.conf: A single-node Flume configuration
 
# Name the components on this agent
# The name of the agent is defined as a1.
a1.sources = r1
a1.sinks = k1
a1.channels = c1
 
# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
 
# Describe the sink
a1.sinks.k1.type = logger
 
# Use a channel which buffers events in memory
# 内存模式 
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
# 传输参数设置。
a1.channels.c1.transactionCapacity = 100
 
# Bind the source and sink to the channel
# The sources->channels->sinks config , the channels and the channel name must be defined.
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

没有接触过Linux的小伙伴,可以通过vim 命令进行操作Esc->:x
,或者Esc->:wq进行保存。(不懂的,可以搜索下vim命令,反正我们的目的是在里面创建一个叫做“flume-conf.properties“的文件,并且将上述的配置内容写入即可。)

c. Flume启动命令及其解析
配置好一切之后,就可以启动Flume了。启动命令是在flume的bin目录下(当然在以后学的技术中启动命令大多都是在bin目录下的)

./flume-ng agent -C conf -f …/flume-1.6.0/conf/flume-conf.properties -n a1 -Dflume.root.logger=INFO,console

如果看到如下的输出,就代表启动成功啦。

在这里插入图片描述

这边可以解析下启动命令:

./flume-ng agent -C conf -f …/flume-1.6.0/conf/flume-conf.properties -n a1 -Dflume.root.logger=INFO,console

  • 最前面是通过bin下的flume-ng这个脚本进行启动;
  • 下面就是启动时候需要的一系列参数,–C表示是配置 conf文件,-f 表示配置文件的位置,可以是相对位置也可以是绝对位置,–n 就是之前配置文件内的”a1.channels = c1”,猜测是flume服务器配置的名称, -Dflume.root.logger 表示输出形式,console是命令窗口输出,logging是log/flume.log文件输出。

d、输出 和 测试
为了测试,我们重新打开一个命令框,输入命令”telnet localhost 44444”,预计得到下述结果:

当然下面测试用的是telnet插件如果你的虚拟机里没有安装过

  • 解决方式,重装一下telnet客户端。
    centos、ubuntu
    yum list telnet* 查看telnet相关的安装包
    yum install telnet-server 安装telnet服务
    yum install telnet.* 安装telnet客户端
  • 以上两个操作都按完就可用telnet localhost 44444去测试了。

当前命令窗:

localhost:~ xxx$ telnet localhost 44444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
hello
OK

Flume命令窗:

2017-01-09 00:56:54,946 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{} body: 68 65 6C 6C 6F 0D                               hello. }

这边便是监控到了,在另一个页面输入到44444端口到hello信息。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值