Centos7下Hadoop完全分布式集群Flume安装
电脑系统:macOS 10.15.4
虚拟机软件:Parallels Desktop14
Hadoop各节点节点操作系统:CentOS 7
JDK版本:jdk1.8.0_162
Flume版本:apache-flume-1.8.0-bin
Flume的下载源地址:
https://flume.apache.org/download.html
bin文件是安装文件,src文件是flume源码,再做二次开发时候需要用到。
第一步:安装软件
(1)上传文件
将本机的安装包上传到虚拟机node1,上传方式:
scp 本机的文件绝对路径 caizhengjie@10.211.55.59:/opt/Hadoop
(2)解压文件
上传成功之后需要对文件赋予权限
chmod u+x apache-flume-1.8.0-bin.tar.gz
解压文件:
tar -zxvf apache-flume-1.8.0-bin.tar.gz
创建软链接:
ln -s apache-flume-1.8.0-bin flume
第二步:配置环境变量
vim ~/.bashrc
然后添加以下内容,注意三台虚拟机都需要配置环境变量
export FLUME_HOME=/opt/Hadoop/flume export PATH=$FLUME_HOME/bin:$PATH
最后使之生效
source ~/.bashrc
这里可以测试一下我们的flume有没有安装成功
测试 flume-ng version
当出现下面所示即表示安装成功
[caizhengjie@node3 Hadoop]$ flume-ng version Flume 1.8.0 Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git Revision: 99f591994468633fc6f8701c5fc53e0214b6da4f Compiled by denes on Fri Sep 15 14:58:00 CEST 2017 From source with checksum fbb44c8c8fb63a49be0a59e27316833d
第三步:修改配置文件
在修改配置文件之前我们需要了解我们的项目需求与设计。我们需要通过flume对应用服务器采集日志信息,最后分别送往kafka和HBase中。先看需求分析图
图中配置了两台分布式日志收集工具,一台日志合并预处理工具,在虚拟机中分别对应了node2,node3与node1。也就是说两台采集,一台汇总。这种场景模型也就是多Agent的复杂流组合,如下图所示:
(1)更改文件名与分发文件
首先进入node1中,将/opt/Hadoop/flume/conf/目录下的flume-conf.properties.template与flume-env.sh.template文件改名,原因是template表示模版文件。
mv flume-conf.properties.template flume-conf.properties
mv flume-env.sh.template flume-env.sh
然后进入flume-env.sh
添加JAVA_HOME
export JAVA_HOME=/opt/Hadoop/jdk1.8.0_162
这里根据自己的路径做适当修改
最后将flume与flume压缩文件移到node2,node3中
scp -r apache-flume-1.8.0-bin apache-flume-1.8.0-bin.tar.gz caizhengjie@node2:/opt/Hadoop/ scp -r apache-flume-1.8.0-bin apache-flume-1.8.0-bin.tar.gz caizhengjie@node3:/opt/Hadoop/
分别在node2和node3上创建软连接
ln -s apache-flume-1.8.0-bin flume
(2)修改node2上的配置文件
熟悉完项目需求分析之后,我们首先要配置node2最后配置node1。主要修改/opt/Hadoop/flume/conf/目录下的flume-conf.properties文件。我们需要将里面的内容删除,根据我们的要求重新配置,我这里参考的是官方文档
https://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html
首先配置好这三行,加在文件的最前面
agent2.sources = r1 agent2.channels = c1 agent2.sinks = k1
(1)source配置
根据需求source我选择的类型是exec,可以根据官方文档来配置,查看官方文档流程:
倒数第二行agent2.sources.r1.command = tail -F /opt/datas/weblogs.log,表示的是日志文件的路径,没有的话需要自己创建,其他的可以根据官网来,所以这里我的source配置是:
# source配置 agent2.sources.r1.type = exec agent2.sources.r1.command = tail -F /opt/datas/weblog-flume.log agent2.sources.r1.channels = c1
(2)channel配置
根据需求channel我选择的类型是memory,同样也可以参考官方文档:
所以这里我的channel配置是:
# channel配置 agent2.channels.c1.type = memory agent2.channels.c1.capacity = 10000 agent2.channels.c1.transactionCapacity = 10000 agent2.channels.c1.keep-alive = 5
(3)sink配置
根据需求sink我选择的类型是avro,同样也可以参考官方文档:
所以这里我的sink配置是:
# sink配置 agent2.sinks.k1.type = avro agent2.sinks.k1.channel = c1 agent2.sinks.k1.hostname = node1 agent2.sinks.k1.port = 5555
综上我的flume-conf.properties文件总配置是:
agent2.sources = r1 agent2.channels = c1 agent2.sinks = k1 # source配置 agent2.sources.r1.type = exec agent2.sources.r1.command = tail -F /opt/datas/weblog-flume.log agent2.sources.r1.channels = c1 # channel配置 agent2.channels.c1.type = memory agent2.channels.c1.capacity = 10000 agent2.channels.c1.transactionCapacity = 10000 agent2.channels.c1.keep-alive = 5 # sink配置 agent2.sinks.k1.type = avro agent2.sinks.k1.channel = c1 agent2.sinks.k1.hostname = node1 agent2.sinks.k1.port = 5555