简单介绍一下Flume:
agent:flume运行的最小单元,独立运行在一个JVM中。一个agent里面包括一个或多个sources,channels,sinks
source 和 channels可以有一对多的关系
sink 和 channel 是一对一的关系
client : 相当于数据产生的位置
source :从客户端产生数据的位置收集数据
channel:数据管道(缓存)用于接收source的数据然后将数据推送给sink
sink:接收channel推送的数据,并将其存储到外部的存储系统中
event:事件,一个event相当于一条数据,是一个不可分割的整体
interceptor:拦截器,作用于source和channel,channel和sink之间,将符合条件的数据进行过滤,或者对对数据进行标记,flume也支持拦截器链
selector:选择器,决定数据流向哪个channel,作用于source和channel之间,channel和sink之间,
flume提供的选择器有两种replicating(复制选择器),multiplexing(多路复用Channel选择器)
复制Channel选择器
如果Source没有指定Channel选择器,则该Source使用复制Channel选择器。该选择器复制每个事件到通过Source的Channels参数指定的所有Channel中。
多路复用Channel选择器
多路复用Channel选择器是一种专门用于动态路由事件的Channel选择器,通过选择事件应该写入到哪个Channel,基于一个特定的事件头的值进行路由。可以结合拦截器使用。
source类型
channel类型
File Channel:
优点:安全性高
缺点:速度慢
Memory Channel:
优点:速度快
缺点:容易缺失数据
Kafaka Channel:
优点:高速缓存
sink类型
关于Sink , Channel , Source 可以参考
接下来开始Flume的安装吧!
环境:两台安装centos7的虚拟机
master: 192.168.19.128
slave:192.168.19.129
flume版本: 1.9.0
链接:https://pan.baidu.com/s/1nPJIJBFuYj_27BN947gCPA
提取码:5dia
通过xshell操作
注意两台虚拟机之间最好把防火墙等关闭 参考:
一、
下载flume压缩包,并通过xhell传到虚拟机Master
解压
tar -zxvf apache-flume-1.9.0-bin.tar.gz
重命名
mv apache-flume-1.9.0-bin.tar/ flume
移动到存放软件的目录下(个人习惯/usr/local)
mv flume /usr/local/
配置环境变量
vi /etc/profile
添加以下信息
export PS1="[\u@`/sbin/ifconfig eth0|grep 'inet '|awk -F'[: ]+' '{print $4}'` \W]"'$ '
export FLUME_HOME=/usr/local/flume
export PATH=$PATH:$FLUME_HOME/bin
验证环境变量
source /etc/profil
新建日志文件
tuoch /usr/local/flume/exec-log_bak
进入flume下的conf目录
cd /usr/local/flume/conf
新建并编辑exec.conf
vim exec.conf
输入下面
a3.sources=r3
a3.sinks=k3
a3.channels=c3
a3.sources.r3.type=avro
a3.sources.r3.channels=c3
a3.sources.r3.bind=192.168.19.128 #注意是主节点的ip
a3.sources.r3.port=4545
a3.channels.c3.type=memory
a3.channels.c3.capacity=100
a3.channels.c3.transactionCapacity=100
a3.sinks.k3.type=file_roll
a3.sinks.k3.sink.directory=/usr/local/flume/exec-log_bak
a3.sinks.k3.channel=c3
切换到子节点
在子节点上解压flume,配置环境变量
新建并编辑配置文件
vim /usr/local/flume/exec.conf
输入以下
#example.conf: A single-node flume configuration
#It is Just for test flume exec Example
#Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#配置source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /usr/local/flume/exec-log
a1.sources.r1.channels = c1
#Describe the sink
a1.sinks.k1.type = avro
a1.sinks.k1.channel = c1
a1.sinks.k1.hostname=192.168.19.129
a1.sinks.k1.port=4545
#use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 100
a1.channels.c1.transactionCapacity = 100
自此简单的flume已经配置好了
主节点启动命令
flume-ng agent -n a3 -c $FLUME_HOME/conf -f $FLUME_HOME/conf/exec.conf -Dflume.root.logger=INFO,console
子节点启动命令
flume-ng agent -n a1 -c $FLUME_HOME/conf -f $FLUME_HOME/conf/exec.conf -Dflume.root.logger=INFO,console
主节点启动成功后输出以下信息
slave节点启动成功后输出以下信息
c1 started
r1 started
k1 started
下面举个简单的例子来验证一下是否安装成功:
在xshell上另外再开一个master窗口:
修改配置文件
vim /usr/local/spark/conf/exec.conf
在r1下添加
a1.sources.r1.command = tail -F /usr/local/flume/exec-log
tail -F 是指当exec-log日志文件有更新变动时,将截取更新的部分
在xshell对slave再开一个窗口
for i in {200..250};do echo “insert number $i” >> $FLUME_HOME/exec-log;done
此时可以看到在master开启flume的界面有新输出
自此Flume的简单安装已经完成,关于flume的介绍后续会有。