Flume基本使用

清泓
2022-05-09 / 0 评论 / 2,908 阅读 / 5088字 / 正在检测是否收录...

Flume基本使用

Flume概述


(一).Flume是什么

  Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

(二).Flume的特点

  flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。

(三).Flume的一些核心概念

 Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。

 Client生产数据,运行在一个独立的线程。

 Source从Client收集数据,传递给Channel。

 Sink从Channel收集数据,运行在一个独立线程。

 Channel连接 sources 和 sinks ,这个有点像一个队列。

 Events可以是日志记录、 avro 对象等。

(四).Flume架构

Flume的安装与基本配置


解压

我的安装包在/usr/local/src/software下,安装目录我放在/usr/local/src下,具体命令如下:

[root@master ~]# tar -zxvf /usr/local/src/software/apache-flume-1.7.0-bin.tar.gz -C /usr/local/src/

为了方便后续使用,这里重命名目录

[root@master ~]# mv /usr/local/src/apache-flume-1.7.0-bin /usr/local/src/flume

配置环境变量

环境变量配置的位置有多处,我这里配置当前用户可用

[root@master ~]# vi /root/profile
  export FLUME_HOME=/usr/local/src/flume
  export PATH=$PATH:$FLUME_HOME/bin
[root@master ~]# source /root/profile

修改配置文件

 flume需要修改的配置不多,更多是后续自定义需要监听的目录或端口的配置

[root@master ~]# cd /usr/local/src/flume/conf
[root@master conf]#  mv flume-env.sh.template flume-env.sh
[root@master conf]# vim flume-env.sh
 export JAVA_HOME=/usr/local/src/jdk8

Flume的使用


监听目录变化上传到HDFS

创建配置文件

创建配置文件,指定监听目录等信息。配置文件建议在flume安装目录下自建文件夹保存

[root@master ~]# mkdir /usr/local/src/flume/job
[root@master ~]# vi /usr/local/src/flume/job/test.conf
# Name the components on this agent 命名组件
a1.sources = r1  #数据采集组件
a1.sinks = k1    #数据接收器组件
a1.channels = c1   #数据通道组件
 
# Describe/configure the source 配置(描述)监听源
a1.sources.r1.type = spooldir    #spooldir(目录类型)
a1.sources.r1.spoolDir = /root/logs  #目录路径
a1.sources.r1.fileHeader= true  #是否在header中添加完整的文件的完整信息
 
# Describe the sink 描述接收器
a1.sinks.k1.type = hdfs #输出到hdfs
a1.sinks.k1.hdfs.path = /flume/events/%Y-%m-%d/  #文件保存路径

#控制文件夹,把10分钟之内的保存在一个文件夹中
a1.sinks.k1.hdfs.round = true  #是否启用时间上的'舍弃'
a1.sinks.k1.hdfs.roundValue=10  #时间上进行'舍弃'的值
a1.sinks.k1.hdfs.roundUnit = minute  #时间上进行'舍弃'的单位
 
#描述文件迭代次数  满足其中一个条件则打开一个新的临时文件继续写入
a1.sinks.k1.hdfs.rollInterval = 3  #时隔多长将临时文件滚动成最终文件,单位为秒,如果设置为0,则表示关闭
a1.sinks.k1.hdfs.rollSize = 20   #当临时文件达到多少(单位:byte)时,滚动成目标文件,如果设置为0,则表示关闭
a1.sinks.k1.hdfs.rollCount = 5  #当event数据达到该数量时,将临时文件滚动成目标文件,如果设置为0.则表示关闭
 
a1.sinks.k1.hdfs.filePrefix = events-  #保存数据的浅前缀名
a1.sinks.k1.hdfs.fileType = DataStream  #文件格式,DataStream不会被压缩
a1.sinks.k1.hdfs.useLocalTimeStamp = true    #是否使用当地时间
 
# Use a channel which buffers events in memory  使用内存通道缓冲事件
a1.channels.c1.type = memory  #指定通道为内存
a1.channels.c1.capacity = 1000  #存储在通道内的最大容量
a1.channels.c1.transactionCapacity = 100  #从一个source中取或者传输到sink,每个事务中最大的事件数
 
# Bind the source and sink to the channel   将源和接收器绑定到通道
a1.sources.r1.channels = c1  #注意一个源可以有多个通道channels
a1.sinks.k1.channel = c1


这里监听的/root/logs目录.在这个目录创建的文件会被上传到hdfs的/flume/events/%Y-%m-%d/目录中

启动

[root@master flume]#bin/flume-ng agent -f job/test.conf -n a1 
启动参数概述
  • flume-ng flume启动器
  • agent 运行一个flume agent(最小的独立运行单位,一个Agent包含多个source、channel、sink和其他组件)
  • -f agent选项,指定一个配置文件(还有一种写法:--conf-file),此处为job目录下的test.conf
  • -n agent名称 此处为a1

1

打赏

评论

博主关闭了当前页面的评论