Flume是由Cloudera软件公司提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,后于2009年被捐赠了apache软件基金会,为hadoop相关组件之一。现已成为apache top项目之一。
安装前需注意:Flume不支持Windows系统,安装前需先安装好Java环境。我下面所安装的是Linux环境中的Flume。
1.我们需先准备好apache-flume-1.8.0-bin.tar.gz安装包(没有的请从Flume官网下载)。通过远程工具上传至node1节点的/root/目录下。
2.解压apache-flume-1.8.0-bin.tar.gz安装包至/opt/module/下
tar -zxvf apache-flume-1.8.0-bin.tar.gz -C /opt/module/
cd /opt/module/
mv apache-flume-1.8.0-bin flume-1.8.0
3.配置环境变量
vi etc/profile
在文件末尾加入以下内容:
export FLUME_HOME=/opt/module/flume-1.8.0
export PATH=$PATH:$FLUME_HOME/bin
source /etc/profile 使环境变量生效
输入:flume-ng version可查看Flume是否安装成功
以下是一个Flume的小测试:
1.我们需先准备一个在HDFS中flume存放数据的文件夹(前置条件是启动了Hadoop集群)。
hdfs dfs -mkdir -p /flume/data
2.拷贝hadoop的jar包到$FLUME_HOME/lib下
cd $HADOOP_HOME//share/hadoop/common/
cp *.jar $FLUME_HOME/lib
3.vi $FLUME_HOME/conf/hdfs.conf (输入以下内容)
#1、定义agent中各组件名称
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1#2、source1组件的配置参数
agent1.sources.source1.type=exec
#手动生成/root /source.log手动生成
agent1.sources.source1.command=tail -n +0 -F /root/source.log#3、channel1的配置参数
agent1.channels.channel1.type=memory
agent1.channels.channel1.capacity=1000
agent1.channels.channel1.transactionCapactiy=100#4、sink1的配置参数
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://node1:9000/flume/data
#node1根据自己的控制节点名修改,9000根据自己的端口修改(在etc/hadoop/core-site.xml
可查看自己的端口号)
agent1.sinks.sink1.hdfs.fileType=DataStream
#时间类型
agent1.sinks.sink1.hdfs.useLocalTimeStamp=true
agent1.sinks.sink1.hdfs.writeFormat=TEXT
#文件前缀
agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d-%H-%M
#60秒滚动生成一个文件
agent1.sinks.sink1.hdfs.rollInterval=60
#HDFS块副本数
agent1.sinks.sink1.hdfs.minBlockReplicas=1
#不根据文件大小滚动文件
agent1.sinks.sink1.hdfs.rollSize=0
#不根据消息条数滚动文件
agent1.sinks.sink1.hdfs.rollCount=0
#不根据多长时间未收到消息滚动文件
agent1.sinks.sink1.hdfs.idleTimeout=0#5、将source和sink 绑定到channel
agent1.sources.source1.channels=channel1
agent1.sinks.sink1.channel=channel1
4.启动Flume
./flume-ng agent --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/hdfs.conf --name agent1 Dflume.root.logger=DEBUG,console
5.随后打开新的终端窗口(控制节点),之前的保持启动状态别关就行。创建新建/root/source.log并写入文件。
touch /root /source.log
echo 111 >> /root/source.log
echo 123 >> /root/source.log
echo 345 >> /root/source.log
hadoop fs -ls /flume/data
hdfs dfs -cat /flume/data/2020-04-21-17-57.1587463023152
#data后根据第一条命令查看显示的内容来写
注意:需等tmp临时文件变为正式文件时再查看。