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临时文件变为正式文件时再查看。



