Flume采集之配置方法且maven

配置简介

总的来说:

source用来接收数据
sinks用来发送数据
channel用来缓存数据

以下是一些相关类型,以后将会用到。
1.Source组件类型(用于接收从某个地方发送过来的数据)

Netcat Source
接受来自于数据客户端的请求数据,常用于测试开发

Exec Source
运行一个给定的unix指令,将指令的执行结果作为数据来源

Spooling Directory Source
监视指定目录的新文件,并从出现的新文件中解析事件

Kafka Source
获取来自于Kafka集群中数据

Sequence Generator Source
序列产生器,计数器从0开始每次+1到LONG.MAX_VALUE

Avro Source
接受来自于Avro Client请求数据,类似于Netcat Source
通常用于构建Flume集群和RPC通信数据的手机

2.Channel组件类型(用于缓存数据)
Memory Channel
将Event事件对象缓存到内存中
优点:快
缺点:存在数据丢失风险

JDBC Channel
将Event事件对象保存到DB中,目前只支持Derby
优点:安全
缺点:效率较低

File Channel
将Event事件对象保存到文件中
优点:安全
缺点:效率较低

Kafka Channel
将Event事件写入保存到Kafka集群
优点:高可用,数据备份

3.Sink组件(主要是输出文件,或者输出到其他主机或者发送信息到其他地方)
Logger Sink
以日志的形式输出采集到的数据

HDFS Sink
将采集到的数据最终写出到HDFS分布式文件系统,支持两种文件格式:文本和序列
注意:文件格式DataStream,采集到的数据不会进行序列化处理
每隔十分钟产生一个数据文件目录

File Roll Sink
基于文件滚动的sink输出,将采集到的数据写入保存到本地文件系统

Null Sink
将采集到所有的数据,全部丢弃

HBaseSinks
将采集到的数据写出保存到HBase非关系型数据库

安装flume(这里使用的是1.9版本)

这个文档建议用于1.6版本以上,因为涉及一些方法要自行调试,旧版本会比较麻烦。

1.下载安装前所需要的插件,用来简单测试flume。

yum install -y nc  下载插件

把我们要用的安装包下载
flume官方下载链接
安装包(点击就可以下载)

上传完我们的flume,然后解压,这些步骤不懂自行上网查询。
2.配置环境

export FLUME_HOME=你的flume路径
export PATH=$PATH:$FLUME_HOME/bin
export FLUME_CONF_DIR=$FLUME_HOME/conf


3.启动hadoop这里建议使用完全分布式,这里会涉及多个agent。
4.启动flume文件方法

[root@master conf]# flume-ng agent -n a1 -c  ./ -f /example.conf -Dflume.root.logger=INFO,console

或者在flume/conf/flume.env.sh文件中加入

export JAVA_OPTS="-Dflume.root.logger=INFO,console"

各种配置文件

带有文件1,2的注意分开不同机器,注意看一下文档内容了解一下。

1、提示:

目前我这里用的是俩台机器分别都有hadoop3.x,flume1.9
192.168.120.129是我的主机
192.168.120.134是我的副机

2、各种配置方法

在flume目录中的conf目录

1、非持久化保存数据:文件名 example.conf

#定义agent名称为a1
#设置3个组件的名称
a1.sources =r1
a1.sinks = k1
a1.channels = c1

#配置source类型为NetCat,监听地址为本机,端口为44444
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

#配置sink类型为sink
a1.sinks.k1.type = logger

#配置channel类型为内存,内存队列最大容量为1000,一个事务中从source接收的Events数量或者发送给sink的Eveents数量最大为100
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

#将source 和 sink 绑定到channel 上
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

新打开一个会话窗口,链接flume。
nc localhost 44444(端口号)
然后随便输入文字

2、持久化保存数据

#定义agent名称为a1
#设置3个组件的名称
a1.sources =r1
a1.sinks = k1
a1.channels = c1 c2
#配置source类型为NetCat,监听地址为本机,端口为44444
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

#配置sink类型为sink
a1.sinks.k1.type = logger

#配置channel类型为内存,内存队列最大容量为1000,一个事务中从source接收的Events数量或者发送给sink的Eveents数量最大为100

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

a1.channels.c2.type = file
a1.channels.c2.checkpointDir = /usr/local/src/flume/checkpoint
a1.channels.c2.dataDirs = /usr/local/src/flume/data

#将source 和 sink 绑定到channel 上
a1.sources.r1.channels = c1 c2
a1.sinks.k1.channel = c2

新打开一个会话窗口,链接flume。
nc localhost 44444(端口号)
然后随便输入文字

3、单个日志监控

#定义agent名称为a1
#设置3个组件的名称
a1.sources =r1
a1.sinks = k1
a1.channels = c1

#配置soure类型为exec
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F app.log

#配置sink类型为sink
a1.sinks.k1.type = logger

#配置channel类型为内存,内存队列最大容量为1000,一个事务中从source接收的Events数量或者发送给sink的Eveents数量最大为100

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

#将source 和 sink 绑定到channel 上
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

新打开一个会话窗口,链接flume。
nc localhost 44444(端口号)
然后随便输入文字

4、多个日志监控

#定义agent名称为a1
#设置3个组件的名称
a1.sources =r1
a1.sinks = k1
a1.channels = c1

#配置source类型为NetCat,监听地址为本机,端口为44444
a1.sources.r1.type = TAILDIR
a1.sources.r1.filegroups = f1 f2
a1.sources.r1.positionFile =/usr/local/src/flume/conf/position.json
a1.sources.r1.filegroups.f1 =  /usr/local/src/flume/conf/app.log
a1.sources.r1.filegroups.f2 =  /usr/local/src/flume/conf/logs/.*log

a1.sinks.k1.type = logger

#配置channel类型为内存,内存队列最大容量为1000,一个事务中从source接收的Events数量或者发送给sink的Eveents数量最大为100
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

#将source 和 sink 绑定到channel 上
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

新打开一个会话窗口,链接flume。
nc localhost 44444(端口号)
然后随便输入文字

5、多个agent监控

文件一:

#定义agent名称为a1
#设置3个组件的名称
a1.sources =r1
a1.sinks = k1 k2
a1.channels = c1 c2

#配置source类型为NetCat,监听地址为本机,端口为44444
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

#配置sink类型为sink
a1.sinks.k1.type = logger
a1.sinks.k2.type = avro
a1.sinks.k2.hostname = 192.168.120.129
a1.sinks.k2.port = 55555

#配置channel类型为内存,内存队列最大容量为1000,一个事务中从source接收的Events数量或者发送给sink的Eveents数量最大为100

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

a1.channels.c2.type = memory

#将source 和 sink 绑定到channel 上
a1.sources.r1.channels = c1 c2
a1.sinks.k1.channel = c1
a1.sinks.k2.channel = c2

文件二:

#定义agent名称为a1
#设置3个组件的名称
a1.sources =r1 r2
a1.sinks = k1
a1.channels = c1

#配置source类型为NetCat,监听地址为本机,端口为44444
a1.sources.r1.type = TAILDIR
a1.sources.r1.filegroups = f1 f2
a1.sources.r1.positionFile =/usr/local/src/flume/conf/position.json
a1.sources.r1.filegroups.f1 =  /usr/local/src/flume/conf/app.log
a1.sources.r1.filegroups.f2 =  /usr/local/src/flume/conf/logs/.*log

a1.sources.r2.type = avro
a1.sources.r2.bind = 192.168.120.129
a1.sources.r2.port = 55555

#配置sink类型为sink
a1.sinks.k1.type = logger

#配置channel类型为内存,内存队列最大容量为1000,一个事务中从source接收的Events数量或者发送给sink的Eveents数量最大为100
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

#将source 和 sink 绑定到channel 上
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
a1.sources.r2.channels = c1

新打开文件1的会话窗口,链接flume。
nc localhost 44444(端口号)
然后随便输入文字

6、拦截器:

文件1:

#定义agent名称为a1
#设置3个组件的名称
a1.sources =r1
a1.sinks = k1 k2
a1.channels = c1 c2

#配置source类型为NetCat,监听地址为本机,端口为44444
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
#添加拦截器
a1.sources.r1.interceptors = i1
a1.sources.r1.interceptors.i1.type = host

#配置sink类型为sink
a1.sinks.k1.type = logger

a1.sinks.k2.type = avro
a1.sinks.k2.hostname = 192.168.120.129
a1.sinks.k2.port = 55555

#配置channel类型为内存,内存队列最大容量为1000,一个事务中从source接收的Events数量或者发送给sink的Eveents数量最大为100

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

a1.channels.c2.type = memory

#将source 和 sink 绑定到channel 上
a1.sources.r1.channels = c1 c2
a1.sinks.k1.channel = c1

文件2:

#定义agent名称为a1
#设置3个组件的名称
a1.sources =r1 r2
a1.sinks = k1
a1.channels = c1

#配置source类型为NetCat,监听地址为本机,端口为44444
a1.sources.r1.type = TAILDIR
a1.sources.r1.filegroups = f1 f2
a1.sources.r1.positionFile =/usr/local/src/flume/conf/position.json
a1.sources.r1.filegroups.f1 =  /usr/local/src/flume/conf/app.log
a1.sources.r1.filegroups.f2 =  /usr/local/src/flume/conf/logs/.*log

a1.sources.r2.type = avro
a1.sources.r2.bind = 192.168.120.129
a1.sources.r2.port = 55555

#配置sink类型为sink
a1.sinks.k1.type = logger

#配置channel类型为内存,内存队列最大容量为1000,一个事务中从source接收的Events数量或者发送给sink的Eveents数量最大为100
a1.channels.c1.type = memory
a1.channels.c1.capacity 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伦杰周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值