一.环境准备:linux + java的Jdk1.6以上版本
二.安装包下载地址:https://flume.apache.org/download.html
(下文我会用下载的apache-flume-1.6.0-bin.tar.gz包为例进行安装
三.进行安装flume,解压安装包,配置flume环境变量。
1.解压安装包到/app目录下,解压并且修改文件名为flume-1.6(简单好记)
mkdir ./flume-1.6 && tar -xzvf apache-flume-1.6.0-bin.tar.gz -C ./flume-1.6 --strip-components 1
2. 配置环境变量
在 vi /etc/profile末尾追加
vi /etc/profile
export FLUME_HOME=/root/app/flume-1.6
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=.:$PATH::$FLUME_HOME/bin
source /etc/profile
3.配置flume配置文件的环境变量
cd /root/app/flume-1.6/conf/
cp flume-env.sh.template flume-env.sh
进入 flume-env.sh将export JAVA_OPTS 的 # 号去掉,并在末尾追加 jdk 的路径
:wq! 保存并退出
4.进到flume目录下 bin 目录 创建 dir-hdfs.conf 文件 (touch dir-hdfs.conf), 文件内容是下方的代码
#定义三大组件的名称
ag1.sources = source1
ag1.sinks = sink1
ag1.channels = channel1
# 配置source组件
ag1.sources.source1.type = spooldir
ag1.sources.source1.spoolDir = /root/data/log
ag1.sources.source1.fileSuffix=.FINISHED
ag1.sources.source1.inputCharset=utf-8
ag1.sources.source1.deserializer.maxLineLength=5120
# 配置sink组件
ag1.sinks.sink1.type = hdfs
ag1.sinks.sink1.hdfs.path =hdfs://master/access_log/%y-%m-%d/%H-%M
ag1.sinks.sink1.hdfs.filePrefix = app_log
ag1.sinks.sink1.hdfs.fileSuffix = .log
ag1.sinks.sink1.hdfs.batchSize= 100
ag1.sinks.sink1.hdfs.fileType = DataStream
ag1.sinks.sink1.hdfs.writeFormat =Text
## roll:滚动切换:控制写文件的切换规则
## 按文件体积(字节)来切
ag1.sinks.sink1.hdfs.rollSize = 512000
## 按event条数切
ag1.sinks.sink1.hdfs.rollCount = 1000000
## 按时间间隔切换文件
ag1.sinks.sink1.hdfs.rollInterval = 60
## 控制生成目录的规则(round回滚)
ag1.sinks.sink1.hdfs.round = true
ag1.sinks.sink1.hdfs.roundValue = 10
ag1.sinks.sink1.hdfs.roundUnit = minute
ag1.sinks.sink1.hdfs.useLocalTimeStamp = true
# channel组件配置
ag1.channels.channel1.type = memory
## event条数
ag1.channels.channel1.capacity = 500000
##flume事务控制所需要的缓存容量600条event
ag1.channels.channel1.transactionCapacity = 600
# 绑定source、channel和sink之间的连接
ag1.sources.source1.channels = channel1
ag1.sinks.sink1.channel = channel1
上方两个蓝色标记地方需要注意 :第一个是我们本地要采集的信息存放地址
第二个是我们信息输出的hdfs的地址 (ip的地方写上你的主机名)
添加内容时记得把注解去掉
5.创建 源目录log 给与777权限 并且在log目录下存放需要采集的数据 a.log b.log c.log (创建的地址就是你的第一个修改的采集信息存放的地址)
创建 log文件夹 cd /root/data/ mkdir log
给log赋予权限 chmod 777 log 在log文件夹同级目录创建 hello.txt ,内容 hello world !!!
mkdir log
chmod 777 log/
touch hello.txt
echo hello world ! ! ! > hello.txt
cat hello.txt
6.验证flume的版本
flume-ng version
7. 启动flume 在flume的目录下执行 下面命令
bin/flume-ng agent -c conf/ -f dir-hdfs.conf -n ag1 -Dflume.root.logger=INFO,console
四.但是我在配置完flume的时候发现验证flume版本与启动flume的时候发现报了异常
然后我上网搜了搜解决方法,下面给大家分享一下:
错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty
我是通过第二种方法解决的,第一种方法我也用了,但是不知道为什么没有解决。
具体原因我也不清楚,如果知道的大佬知道具体原因,希望指点一下。
1,第一种解决方法
1,jdk冲突
卸载自带的openjdk
安装jdk1.8
2,配置安装了hbase之后 冲突就会报错
将 hbase 的 hbase.env.sh 的一行配置注释掉
#Extra Java CLASSPATH elements. Optional.
#export HBASE_CLASSPATH=/home/hadoop/hbase/conf
4、或者将 HBASE_CLASSPATH 改为 JAVA_CLASSPATH, 配置如下
#Extra Java CLASSPATH elements. Optional.
export JAVA_CLASSPATH=.:JAVAHOME/lib/dt.jar:JAVA_HOME/lib/dt.jar:JAVAH?OME/lib/dt.jar:JAVA_HOME/lib/tools.jar
第二种:
flume自身的问题,脚本问题
解决办法:
修改
vi flume-ng
在HBASE这个地方增加图中红色框框内容
/dev/null是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃。因此,null这个设备通常也被称为位桶(bit bucket)或黑洞。
所以,2>/dev/null的意思就是将标准错误stderr删掉。
再次检测flume版本
到这里我们的flume就配置完成了
CentOS 7 配置hadoop(六) 配置flume(伪分布)错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty
原文:https://www.cnblogs.com/wdyjt/p/14179778.html