根据实际应用,我们管理的设备上的安装有运行检测的智能传感器,会将设备运行的状态信息以及环境信息传到应用服务器,应用服务器会将这些信息保存为运行日志。由于我们需要管理的设备数量非常多,超过50万台,因此这种日志信息的量非常大。因此我们需要通过flume监控应用中运行日志的文件夹,上传到hdfs(以后实时应用还需要上传到kafka)。我们采用的flume版本是1.6。

首先建立单节点flume作为测试,然后再进一步部署flume集群。
一、环境配置
1、配置机器
10.0.2.49 logserver1
10.0.2.45 hadoop1 ##记得把hadoop namenode的主机名加上

2、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
3、新建目录存放log
mkdir -p /app/webserver/data/logs
4、配置yum源
也不详细写了,跟之前一样,请参考大数据爬坑行(一)hadoop安装

二、安装jdk
因为之前下载了,这里直接从之前10.0.2.45这台机的复制过来就行。如果想重新安装,请参考大数据爬坑行(一)hadoop安装
复制过来后,建立软连接
ln -s /usr/Java/jdk1.8.0_141 /usr/Java/jdk1.8
配置环境变量,还是用/etc/profile

JAVA_HOME=/usr/Java/jdk1.8
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/rt.jar

export JAVA_HOME PATH CLASSPATH

修改后 source /etc/profile

三、下载安装flume
1、mkdir -p /app/software 建立放置下载软件的目录
2、下载到指定目录
wget -P /app/software http://archive.apache.org/dist/flume/1.6.0/apache-flume-1.6.0-bin.tar.gz
3、解压flume到指定目录
tar -zxvf apache-flume-1.6.0-bin.tar.gz -C /usr/local
4、建立软连接
ln -s /usr/local/apache-flume-1.6.0-bin/ /usr/local/flume
5、配置环境变量
vi /etc/profile

JAVA_HOME=/usr/Java/jdk1.8
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/rt.jar

FLUME_HOME=/usr/local/flume
PATH=$PATH:$FLUME_HOME/bin

export JAVA_HOME PATH CLASSPATH FLUME_HOME

source /etc/profile
6、编写单节点的flume的配置文件
cp flume-conf.properties.template singnode-conf.properties
vi singnode-conf.properties

#agent1 name
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
#Spooling Directory
#set source1
###配置source类型,监控目录,拦截器暂时采用timestamp
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/app/webserver/data/logs
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://hadoop1:8020/flume/logs
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=/usr/local/flume/logs/checkpoint
agent1.channels.channel1.dataDirs=/usr/local/flume/logs/checkpoint/dir

7、修改flume-env.sh
cp flume-env.sh.template flume-env.sh
vi flume-env.sh
修改里面的JAVA_HOME配置
export JAVA_HOME=/usr/Java/jdk1.8

8、复制依赖包
${HADOOP_HOME}share/hadoop/hdfs/hadoop-hdfs-2.7.3.jar
${HADOOP_HOME}share/hadoop/common/hadoop-common-2.7.3.jar
${HADOOP_HOME}share/hadoop/common/lib/*.jar

9、hadoop创建相应目录
hdfs dfs -mkdir /flume
hdfs dfs -mkdir /flume/logs
大数据爬坑行(二)安装flume(单机模式)
创建成功。

三、启动flume
flume-ng agent --name agent1 --conf /usr/local/flume/conf --conf-file /usr/local/flume/conf/singnode-conf.properties -Dflume.root.logger=INFO,console
启动成功。

四、测试。
vi log201902090000001.txt 随便写点东西
mv log201902090000001.txt /usr/local/flume/logs/checkpoint

上传成功,但是一个很小的文件上传就分割成两个文件了(当时的图片没保存下来)。这在测试环境不用这么频繁切换,进一步修改配置参数。主要是修改rollSize 和 rollInterval 。
vi /usr/local/flume/conf/singnode-conf.properties

#agent1 name
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
#Spooling Directory
#set source1
###配置source类型,监控目录,拦截器暂时采用timestamp
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/app/webserver/data/logs
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://hadoop1:8020/flume/logs/%Y-%m-%d
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=TEXT
agent1.sinks.sink1.hdfs.rollSize = 128000000
agent1.sinks.sink1.hdfs.rollCount = 0
agent1.sinks.sink1.hdfs.rollInterval = 60
agent1.sinks.sink1.hdfs.maxOpenFiles = 5000
agent1.sinks.sink1.hdfs.batchSize= 1000
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=/usr/local/flume/logs/checkpoint
agent1.channels.channel1.dataDirs=/usr/local/flume/logs/checkpoint/dir

修改后上传就正常了(当时的图片没保存下来,就用今天上传的代替吧)。
大数据爬坑行(二)安装flume(单机模式)
可以看到,即使我上传的文件已经完成,最新的文件也还是txt.tmp,如果我再上传文件,也还是会存到tmp这个文件中,直到满足roll到下一个文件的条件。

flume单机模式完成。

相关文章:

  • 2022-03-08
  • 2021-12-12
  • 2021-07-03
  • 2021-09-20
  • 2022-01-17
  • 2022-03-06
  • 2021-11-08
猜你喜欢
  • 2021-09-19
  • 2021-11-30
  • 2022-12-23
  • 2021-06-19
  • 2021-07-13
  • 2021-06-17
  • 2021-05-22
相关资源
相似解决方案