flume配置及使用

flume简介

Flume是一种分布式、可靠和可用的服务,可以有效地收集、聚集和移动大量日志数据。它有一个基于流数据流的简单而灵活的体系结构。它具有可调可靠性机制和许多故障转移和恢复机制的健壮性和容错能力。它使用一个简单的可扩展数据模型,允许在线分析应用程序

flume环境要求

  1. 运行环境:jdk 1.8以上
  2. 内存要求:内存需要满足配置使用的sources、channels、sinks
  3. 磁盘空间:磁盘空间需要满足配置使用的channels、sinks
  4. 目录权限:agent目录的读/写权限

flume原理

flume原理图如下:
UserGuide_image00.png
整个flume其实就是Agent的功能,接收source的数据,通过channel传输到sink上去,如果有大数据要处理数据的时候,会直接到sink去提取数据,flume就是将数据从source采集到sink上。

flume启动命令

首先进入我们的flume目录,然后我们可以在bin目录下执行命令,配置文件一般放在安装目录的conf下

bin/flume-ng agent -n a1 -c conf -f conf/flume-conf.properties.template

这条命令的意思是 运行bin目录下的flume-ng文件的agent,-n是指后面跟上agent的名字是a1,-c是指后面跟上conf配置,-f是指后面跟上配置文件的路径。从flume原理图我们可以知道,我们需要配置source、channel、sink。这三个都有缺省的值,我们也可以自行指定。source、channel、sink都可以任意变换,参考地址http://flume.apache.org/FlumeUserGuide.html

例子1

source:netcat
channel:memory
sink:logger

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = 192.168.163.111
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
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

将这段属性配置文件存放在安装文件下的conf目录下,然后我们就可以启动flume采集了,注意,a1.sources.r1.bind这个是本机的ip,不要用回环地址

bin/flume-ng agent -conf conf -f conf/netcat-logger.conf -name a1 -Dflume.root.logger=INFO,console

这条命令中,netcat-logger.conf是刚刚那个配置存储的文件名,结果直接输出到logger上
我们可以用socket工具、telnet、netcat连接这台服务器的44444端口来测试flume是否能成功采集数据

例子2

source:exec
channel:memory
sink:hdfs

a1.sources = r1
a1.sinks = k1
a1.channels = c1

a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /home/hadoop/tmp/flume/log/new.log
a1.sources.r1.channels = c1

a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M
a1.sinks.k1.hdfs.filePrefix = events-
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = minute
a1.sinks.k1.hdfs.useLocalTimeStamp = true
#a1.sinks.k1.hdfs.rollSize=100
a1.sinks.k1.hdfs.fileType = DataStream

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

将这段属性配置文件存放在安装文件下的conf目录下,然后我们就可以启动flume采集了,启动脚本是:

bin/flume-ng agent -c conf -f conf/tail-hdfs.conf -name a1

启动tail-hdfs.conf是我们保存的配置文件名

总结

通过上面的两个例子我们可以发现,source、channel、sink可以是多种类型的数据源,我们可以根据我们的需求来更换着三者中的任意项。可更换的数据源参考http://flume.apache.org/FlumeUserGuide.html

转载于:https://www.cnblogs.com/shenjie2017/articles/8573505.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值