首页 > Web开发 > 详细

Flume-NG采集日志信息到HDFS(测试单节点)

时间:2020-09-28 13:00:23      阅读:45      评论:0      收藏:0      [点我收藏+]
一.Flume NG简述
Flume NG是一个分布式,高可用,可靠的系统,它能将不同的海量数据收集,移动并存储到一个数据存储系统中。轻量,配置简单,适用于各种日志收集,并支持 Failover和负载均衡。并且它拥有非常丰富的组件。Flume NG采用的是三层架构:Agent层,Collector层和Store层,每一层均可水平拓展。其中Agent包含Source,Channel和 Sink,三者组建了一个Agent。三者的职责如下所示:
?Source:用来消费(收集)数据源到Channel组件中
?Channel:中转临时存储,保存所有Source组件信息
?Sink:从Channel中读取,读取成功后会删除Channel中的信息

下图是Flume NG的架构图,如下所示:
技术分享图片

二.单点Flume NG搭建、运行
搭建环境
之前搭好的单节点hadoop环境
技术分享图片

1.下载最新版的flume
apache-flume-1.9.0-bin.tar.gz

cd /data
tar -zxvf apache-flume-1.9.0-bin.tar.gz
技术分享图片

2.配置java环境变量
cd /data/apache-flume-1.9.0-bin/conf
cp flume-env.sh.template flume-env.sh

vim flume-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_261
技术分享图片

3.单节点flume配置文件
cp flume-conf.properties.template

vim flume.conf
注释之前的配置
这个配置文件定义了一个单agent名字叫agent1,agent1有一个source在采集一个目录下的日志文件,agent1的channel是file,sink是直接输送hdfs,由于是测试,在本机提前创建好一个日志目录/data/testdir/logdfs,创建数据通道的目录/data/apache-flume-1.9.0-bin/dir/logdfstmp/point

#agent1 name
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
#Spooling Directory

#set source1
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/data/testdir/logdfs
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader = false
agent1.sources.source1.interceptors = i1
agent1.sources.source1.interceptors.i1.type = timestamp

#set sink1
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://190.168.3.98:9000/flume/logdfs
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=TEXT
agent1.sinks.sink1.hdfs.rollInterval=1
agent1.sinks.sink1.channel=channel1
agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d
agent1.sinks.sink1.hdfs.fileSuffix=.txt

#set channel1
agent1.channels.channel1.type=file
agent1.channels.channel1.checkpointDir=/data/apache-flume-1.9.0-bin/dir/logdfstmp/point
agent1.channels.channel1.dataDirs=/data/apache-flume-1.9.0-bin/dir/logdfstmp

技术分享图片

4.启动flume服务
指定配置文件和用户
./flume-ng agent --conf conf --conf-file /data/apache-flume-1.9.0-bin/conf/flume.conf --name agent1 -Dflume.super.logger=INFO,console
技术分享图片

这里有一个报错:
ERROR hdfs.HDFSEventSink: process failed
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
技术分享图片

经过查询,参考百度找到的解决方法http://www.coder55.com/article/81764, 是jar版本不一致或者是flume里的guava比hadoop库里的guava版本低

我们查看hadoop库里的guava版本
ll /data/hadoop-3.2.1/share/hadoop/common/lib/guava-27.0-jre.jar

再查看flume里面的guava版本
ll /data/apache-flume-1.9.0-bin/lib/guava-11.0.2.jar

版本比hadoop的版本低,将hadoop库里的guava-27.0-jre.jar包替换flume里面的guava-11.0.2.jar包
[super@hadoop lib]$ mv guava-11.0.2.jar guava-11.0.2.jar.bak
[super@hadoop lib]$ cp -rp /data/hadoop-3.2.1/share/hadoop/common/lib/guava-27.0-jre.jar .

再次启动,没有报错
技术分享图片
多了个Application
技术分享图片

三.单节点flume效果预览
我们在模拟的日志目录里创建个几个文件,flume立马采集完成COMPLETED
技术分享图片

在HDFS里查看写入的数据
[super@hadoop logdfs]$ hdfs dfs -ls /flume/logdfs
技术分享图片

技术分享图片

Flume-NG采集日志信息到HDFS(测试单节点)

原文:https://blog.51cto.com/anfishr/2538128

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!