日志Flume采集工具安装与使用方法

Flume概述

flume 简介

1.flume是cloudera开发的后来贡献给了Apache的一套用分布式,高可靠的,高可用的海量分布式日志采集、聚合和传输的系统。
2.flume 的版本更新缓慢但是稳定。
3.flume的版本
a:flume 0.9 :flume-og。对线程的并发和安全性支持不好。
b:flume 1.0 :flume-ng。对并发性和安全性支持较好,并且提供了更好的分布式的扩展性。flume-og和flume-ng不兼容。

基本概念

1.Event:
a.flume会将收集到每一条日志封装成一个Event对象,所以一个Event就是一条日志。
b.Event本质上是json串,即flume将收集到到每一条日志封装了一个个的json,一个json就是一个Event。
c.Event 固定的包含2部分,headers和bady
2.Agent(是flume的基本组成结构)
a.source:用于从数据源来采集数据
b.channel:用于临时存储数据
c.sink : 用于将数据发往目的。
在这里插入图片描述
Flume逻辑上分三层架构:agent,collector,storage
在这里插入图片描述
agent用于采集数据,agent是flume中产生数据流的地方,同时,agent会将产生的数据流传输到collector。
collector的作用是将多个agent的数据汇总后,加载到storage中。
storage是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase等。
Flume的架构主要有一下几个核心概念:
Event:一个数据单元,带有一个可选的消息头
Flow:Event从源点到达目的点的迁移的抽象
Client:操作位于源点处的Event,将其发送到Flume Agent
Agent:一个独立的Flume进程,包含组件Source、Channel、Sink
Source:用来消费传递到该组件的Event
Channel:中转Event的一个临时存储,保存有Source组件传递过来的Event
Sink:从Channel中读取并移除Event,将Event传递到Flow Pipeline中的下一个Agent(如果有的话)

安装flume

flume下载地址
解压安装包并重命名

$ | tar -zxvf apache-flume-1.7.0-bin.tar.gz -C /usr/local # 将apache-flume-1.7.0-bin.tar.gz #解压到指定文件夹下
$ | cd /usr/local/src/ # 移动到指定文件夹下
$ | mv apache-flume-1.7.0-bin flume # 重命名

配置环境变量

$ | vim /etc/profile

然后在你的末尾行加入如下代码:

$ | export FLUME_HOME=/usr/local/src/flume 
$ | export FLUME_CONF_DIR=$FLUME_HOME/conf
$ | export PATH=$PATH:$FLUME_HOME/bin

设置source环境生效

$ | source /etc/profile

修改flume配置文件(flume-env.sh)

$ | cd /usr/local/src/flume/conf # 移动到配置文件下
$ | cp flume-env.sh.template flume-env.sh # 复制新的文件数据
$ | vim flume-env.sh #进入文件

打开flume-env.sh 文件以后,在文件的最开始位置增加一行内容,用于设置java_home变量:

$ | export JAVA_HOME=/usr/local/src/java

然后,保存并退出文件

 
查看flume版本信息

$ | flume-ng version # 查看flume版本信息

安装成功,会出现如下图片
在这里插入图片描述
 

测试flume

创建agent配置文件

$ | cd /usr/local/src/flume
$ | vim ./conf/avro.conf # 在conf目录下编辑一个avro.conf空文件

然后,我们在avro.conf 写入以下内容

$ |  a1.sources = r1
$ |  a1.sinks = k1 
$ |  a1.channels = c1
$ | 
$ |  # Decsribe/configure the source
$ |  a1.sources.r1.type = avro
$ |  a1.sources.r1.channels = c1
$ |  a1.sources.ri.bind = hadoop # 这是你的用户名或者是你的ip 0.0.0.0
$ |  a1.sources.r1.port = 4141 # 注意这个端口号.在启动时会用到
$ |  # Decsribe the sink
$ |  a1.sinks.k1.type = logger
$ |  
$ |  # Use a channel which buffers 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
$ |  a1.sources.r1.channels = c1
$ |  a1.sinks.k1.channel = c1
  上面的Avro Source 参数说明如下:
    Avro Source的别名是avro,也可以使用完整类别名称org.apache.flume.source.AvroSource,因此,上面有一行设置是a1.sources.r1.type = avro,表示数据源的类	型是avro。
	bind绑定的ip地址或主机名,使用0.0.0.0表示绑定机器所有的接口。a1.sources.r1.bind = 0.0.0.0,就表示绑定机器所有的接口。
	port表示绑定的端口。a1.sources.r1.port = 4141,表示绑定的端口是4141。
	a1.sinks.k1.type = logger,表示sinks的类型是logger。

启动 flume agent a1

$ | /usr/local/src//flume/bin/flume-ng agent -c . -f /usr/local/src/flume/conf/avro.conf -n a1 -Dflume.root.logger=INFO,console # 启动日志控制器

在这里插入图片描述
创建指定文件
先打开另外一个终端,在/usr/local/flume下写入一个文件log.00,内容为hello,world:

$ | cd /usr/local/src/flume
$ | bin /flume-ng avro-client --conf conf -H localhost -p 4141 -F /usr/local/src/flume/log.00 

此时我们可以看到第一个终端(agent窗口)下的显示,也就是在日志控制台,就会把log.00文件的内容打印出来:
在这里插入图片描述
avro source执行成功!案例over!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值