title: 搭建Flume
date: 2024-11-30 23:59:00
categories:
- 服务器
tags:
- Flume
- 大数据
搭建Flume
- 本次实验环境:Centos 7-2009、JDK 8、Flume-1.11.0
开始安装
1. 下载安装文件到服务器
# 使用wget命令下载flume文件(二选一)
wget -P /tmp/ -c 'https://mirrors.aliyun.com/apache/flume/1.11.0/apache-flume-1.11.0-bin.tar.gz'
# 使用curl命令下载flume文件(二选一)
curl -C - 'https://mirrors.aliyun.com/apache/flume/1.11.0/apache-flume-1.11.0-bin.tar.gz' -O /tmp/
2. 安装程序
# 解压文件到指定文件夹
tar -zxvf /tmp/apache-flume-1.11.0-bin.tar.gz -C /opt/module/
# 重命名文件夹
mv /opt/module/apache-flume-1.11.0-bin /opt/module/flume
3. 修改配置文件
# 复制配置文件
cp /opt/module/flume/conf/flume-env.sh.template /opt/module/flume/conf/flume-env.sh
# 添加JAVA配置
cat >> /opt/module/flume/conf/flume-env.sh << EOF
export JAVA_HOME=/opt/module/jdk1.8.0_202
export FLUME_CONF_DIR=/opt/module/flume/conf
EOF
---------------------------
说明
根据自己的配置信息,或者查看~/.bashrc,修改JAVA_HOME的目录,随后复制粘贴即可
---------------------------
4. 配置用户环境变量
cat >> ~/.bashrc << "EOF"
# ------------------- Flume 配置--------------------
# 设置Flume环境变量,指向Flume安装目录
export FLUME_HOME=/opt/module/flume
# 将Flume的bin目录添加到PATH环境变量
export PATH=$PATH:$FLUME_HOME/bin
# -------------------------------------------------
EOF
-----------------------------------------------------------
说明
举例 export PATH=$FLUME_HOME/bin:$PATH
英文冒号代表分隔
这段代码表示
1. 当你输入一个命令时,shell会首先在"FLUME_HOME"这个变量的"bin"子目录中查找,
2. 最后,若找不到,则在"PATH"的指定目录中查找
-------------------------------------------------------------
5. 加载环境变量
# 在master主节点上执行
source ~/.bashrc
安装完成
6. 测试
a1.sources.r1.command=tail -F /opt/module/flume/test/1.log
a1.sinks.k1.hdfs.path=hdfs://master:8020/flume/
这两条需要按照自己的路径修改,并创建test文件和1.log文件用于测试
cat > /opt/module/flume/conf/hdfs-avro.conf << EOF
#配置Agent
a1.sources = r1
#数据沉淀,可以多个,中间用空格分隔
a1.sinks = c1
#传输管道一般只有一个,可以多个
a1.channels = c1
#配置source消息生产者
#exec可以通过制定的操作对日志进行读取,使用exec时需要指定xsheel命令,对日志进行读取
a1.sources.r1.type=exec
a1.sources.r1.command=tail -F /opt/module/flume/test/1.log
#配置channel,将buffer事件存放在内存中,相当于数据缓存区,接受source数据发送给sink
#传输管道的参数,类型是内存传输
a1.channels.c1.type=memory
#存储在通管中的最大事件数
a1.channels.c1.capactipy=100
#收集端的sink会在收集到了1000条以后再去提交失误
a1.channels.c1.transactionCapcity=10
#配置sink接收器
#沉淀方式时控制台答应,还可以有其他方式,如上传到hdfs
a1.sinks.k1.type=hdfs
#设置hdfs接收器
a1.sinks.k1.hdfs.path=hdfs://master:8020/flume
#设置
a1.sinks.k1.hdfs.filePrefix=test
a1.sinks.k1.hdfs.fileType=DataStream
#把source和sink绑定在channel上
#指定传输管道
a1.sources.r1.channels=c1
#设置数据沉淀接受的管道
a1.sinks.k1.channel=c1
EOF
7. 前台启动Flume
flume-ng agent -c $FLUME_HOME/conf -f $FLUME_HOME/conf/hdfs-avro.conf -n a1 -Dflume.root.logger=INFO,console
8. 后台启动Flume
# 创建日志文件目录
mkdir /opt/module/flume/logs
# 在master节点上执行
nohup flume-ng agent -c $FLUME_HOME/conf -f $FLUME_HOME/conf/hdfs-avro.conf -n a1 -Dflume.root.logger=INFO,console > $FLUME_HOME/logs/nohup.out 2>&1 &