简单介绍一下Flume:

flume安装一定要hadoop吗_ci


flume安装一定要hadoop吗_数据_02

agent:flume运行的最小单元,独立运行在一个JVM中。一个agent里面包括一个或多个sources,channels,sinks

sourcechannels可以有一对多的关系
sinkchannel 是一对一的关系

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类型

flume安装一定要hadoop吗_flume安装一定要hadoop吗_03

channel类型

flume安装一定要hadoop吗_选择器_04


File Channel:

优点:安全性高

缺点:速度慢

Memory Channel:

优点:速度快

缺点:容易缺失数据

Kafaka Channel:

优点:高速缓存

sink类型

flume安装一定要hadoop吗_flume安装一定要hadoop吗_05


关于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

flume安装一定要hadoop吗_数据_06


主节点启动成功后输出以下信息

flume安装一定要hadoop吗_flume安装一定要hadoop吗_07


slave节点启动成功后输出以下信息

c1 started

r1 started

k1 started

flume安装一定要hadoop吗_flume安装一定要hadoop吗_08


下面举个简单的例子来验证一下是否安装成功:

在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的介绍后续会有。