目录
安装包
在这里给大家准备好了flume的安装包
通过网盘分享的文件:apache-flume-1.9.0-bin.tar.gz
链接: https://pan.baidu.com/s/1DXMA4PxdDtUQeMB4J62xoQ 提取码: euz7
--来自百度网盘超级会员v4的分享
-----------------------------------------------------------------------------------------------
大家自行下载。那么正片开始。
flume的部署
首先,我们切换到software目录
cd /export/software
使用rz命令上传安装包
上传完成后,解压缩安装包道,servers目录
tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /export/servers
解压缩完成之后!
切换到servers目录
cd /export/servers
之后,我们进行一个重命名的大动作。
mv apache-flume-1.9.0-bin flume
ok,fine,一切完成之后,让我们切换到conf目录
cd /export/servers/flume/conf
切换完成之后,开始进行下一步,
复制一下文件。
cp flume-env.sh.template flume-env.sh
完成之后,我们输入ll,查看一下自己是不是安装成功了。
之后我们输入。
vi flume-env.sh
进入文件,然后输入shift + g
到达文件底部,最后贴入自己java的环境变量。
export JAVA_HOME=/export/servers/jdk
大家根据自己的实际情况来进行修改哈,如果不知道自己的java环境变量是什么的话,可以冒号wq保存退出之后,在命令行输入·
vi /etc/profile
然后使用shift+g到达文件底部。
查看一下自己的环境变量,再复制粘贴到刚才的文件里。
看到这里首先不要着急的去复制。
来都来了,我们顺手配置一下flume的环境变量。
export FLUME_HOME=/export/servers/flume
export PATH=$FLUME_HOME/bin:$PATH
OK,配置完成之后,我们esc保存退出。
之后让我们来分发一下Flume吧。
scp -r /export/servers/flume/ hadoop02:/export/servers/
scp -r /export/servers/flume/ hadoop03:/export/servers/
现在你已经分发完flume了,那么接下来我们再分发一下环境变量。
scp -r /etc/profile hadoop02:/etc/
scp -r /etc/profile hadoop02:/etc/
分发完hadoop02和hadoop03环境变量,接下来我们需要分别在hadop02,和hadoop03上输入
soruce /etc/profile
来令环境变量生效。
接下来我们测试一下hadoop01的哦配置效果、
切换到hadoop01的data目录下
cd /export/data
切换完成之后,执行
netcat-logger.conf
复制下面的内容带哦文件里
a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
a1.sinks.k1.type = logger
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
输入完成之后保存退出。
输入下面的命令看下效果。
flume-ng agent --name a1 --conf conf/ --conf-file /export/data/netcat-logger.conf -Dflume.root.logger=INFO,console
出现下面的页面,就算是成功了。
,那么让我们再次打开一个hadoop01窗口,开始进行一些操作
打开另一个窗口之后,我们
yum -y install telnet
下载一个telnet包
下载完成之后,连接一下44444端口
telnet localhost 44444
然后另一边
日志采集到这里就算是完成了。
接下来使用ctrl+c退出进行下一步。两个窗口都ctrl+c,然后随便关闭一个。
都干完之后,我们来到hadop01的flume的conf目录
cd /export/servers/flume/conf
输入
vi exec-avro.conf
然后粘贴下面的内容,粘贴完成之后,保存退出。
a1.sources = r1
a1.sinks = k1 k2
a1.channels = c1
a1.sources.r1.channels = c1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /export/data/123.log
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.sinks.k1.channel = c1
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = hadoop02
a1.sinks.k1.port = 53421
a1.sinks.k2.channel = c1
a1.sinks.k2.type = avro
a1.sinks.k2.hostname = hadoop03
a1.sinks.k2.port = 53421
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = load_balance
a1.sinkgroups.g1.processor.backoff = true
a1.sinkgroups.g1.processor.selector = random
a1.sinkgroups.g1.processor.maxTimeOut=10000
输入完成之后,我切换搭配hadoop02的conf目录下
vi avro-logger1.conf
染的时候输入下面的内容
a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.bind = hadoop02
a1.sources.r1.port = 53421
a1.sinks.k1.type = logger
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
完成之后,切换到hadoop03的虚拟机
同样是切换目录
vi avro-logger2.conf
切换完成之后,我们输入下面的内容
a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.bind = hadoop03
a1.sources.r1.port = 53421
a1.sinks.k1.type = logger
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
配置完成之后,我们在hadoop02上执行下面的命令,来启动agent
flume-ng agent --name a1 --conf conf/ --conf-file avro-logger1.conf -Dflume.root.logger=INFO,console
完成之后切换到hadoop03,执行下面的命令
flume-ng agent --name a1 --conf conf/ --conf-file avro-logger2.conf -Dflume.root.logger=INFO,console
下面放上hadoop01和hadoop02启动成功的画面
之后,我们切换回hadoop01
切换到conf目录
cd /export/servers/flume/conf
之后输入下面的命令
flume-ng agent --name a1 --conf conf/ --conf-file exec-avro.conf -Dflume.root.logger=INFO,console
启动成功之后如下图所示。
ok,一切完成之后,我们开始一个负载均衡测试。
负载均衡测试
我们再次打开一个hadop01的窗口
像data目录下写入,flume flume...
下面的命令每隔两秒会向日志追加一条flume flume...
while true;do echo "flume flume..." >> /export/data/123.log;sleep 2;done
hadoop01和hadoop03会如下图所示
接下来我们就可以开心的开始下一项’
故障恢复
下面文件里的内容,一定要和自己的主机名搭配起来!!!!
来到hadoop01的conf目录下
cd /export/servers/flume/conf
输入
vi exec-avro-failover.conf
输入下面的内容
a1.sources = r1
a1.sinks = k1 k2
a1.channels = c1
a1.sources.r1.channels = c1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /export/data/456.log
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.sinks.k1.channel = c1
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = hadoop02
a1.sinks.k1.port = 53422
a1.sinks.k2.channel = c1
a1.sinks.k2.type = avro
a1.sinks.k2.hostname = hadoop03
a1.sinks.k2.port = 53422
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = failover
a1.sinkgroups.g1.processor.priority.k1 = 5
a1.sinkgroups.g1.processor.priority.k2 = 10
a1.sinkgroups.g1.processor.maxpenalty = 10000
那么好 ,接下来切换到hadoop02
vi avro-logger3.conf
写入以下内容
a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.bind = hadoop02
a1.sources.r1.port = 53422
a1.sinks.k1.type = logger
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
然后wq保存退出
那么再切换到hadoop03
vi avro-logger4.conf
写入下面的内容
a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.bind = hadoop03
a1.sources.r1.port = 53422
a1.sinks.k1.type = logger
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
接下来切换到hadoop02,输入
flume-ng agent --name a1 --conf conf/ --conf-file avro-logger3.conf -Dflume.root.logger=INFO,console
接下来切换到hadoop03
flume-ng agent --name a1 --conf conf/ --conf-file avro-logger4.conf -Dflume.root.logger=INFO,console
接下来切换到hadoop01的conf目录下。
cd /export/servers/flume/conf
flume-ng agent --name a1 --conf conf/ --conf-file exec-avro-failover.conf -Dflume.root.logger=INFO,console
全部启动成功之后,我们切换到
hadoop01就可以提开始发挥了
while true;do echo "flume flume..." >> /export/data/456.log;sleep 2;done
音位hadoop03的优先级会比hadoop02高
所以是hadoop03会比hadoop02先写入日志
这个时候,就要及时止损,
ctrl+c退出,静等一会儿,你就会发现
hadoop02上出现了hadoop03上终止的信息。日志记录不会被停止‘