当前位置:首页 > Web开发 > 正文

【Flume】Flume基础之安装与使用

2024-03-31 Web开发

标签:

1、Flume简介

? (1) Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集、聚集、移动的服务,Flume只能在Unix环境下运行。

? (2) Flume基于流式架构,容错性强,也很灵活简单。

? (3) Flume、Kafka用来实时进行数据收集,Spark、Flink用来实时处理数据,,impala用来实时查询。

2、Flume角色

技术图片

2.1 Source

? 用于采集数据,Source是产生数据流的地方,同时Source会将产生的数据流传输到Channel,这个有点类似于Java IO部分的Channel。

2.2 Channel

? 用于桥接Sources和Sinks,类似于一个队列。

2.3 Sink

? 从Channel收集数据,将数据写到目标源(可以是下一个Source,也可以是HDFS或者HBase)。

2.4 Event

? 传输单元,Flume数据传输的基本单元,以事件的形式将数据从源头送至目的地。

3、Flume传输过程

? source监控某个文件或数据流,数据源产生新的数据,拿到该数据后,将数据封装在一个Event中,并put到channel后commit提交,channel队列先进先出,sink去channel队列中拉取数据,然后写入到HDFS或其他目标源中。

4、Flume安装与部署 4.1 上传包

? 将flume的gz包上传到/opt/soft/目录下;

[[email protected] conf]# rz

? 若不支持rz命令,则用yum安装lrzsz命令:

? 查询含有rz的yum源,由结果可见,yum源中含有lrzsz.x86_64包;

[[email protected] soft]# yum search rzsz 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.tuna.tsinghua.edu.cn * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com ============================================================================================================================= N/S matched: rzsz ============================================================================================================================== lrzsz.x86_64 : The lrz and lsz modem communications programs 名称和简介匹配 only,使用“search all”试试。

? 安装rz命令

[[email protected] soft]# yum -y install lrzsz 4.2 解压包

? 将flume解压到/opt/module/目录下,并改短名字flume-1.8.0:

[[email protected] soft]# tar -zvxf apache-flume-1.8.0-bin.tar.gz -C /opt/module [[email protected] module]# mv apache-flume-1.8.0-bin flume-1.8.0 4.3 配置参数

? 切换到/opt/module/flume-1.8.0/conf目录,将flume-env.sh.template文件名改为:flume-env.sh

[[email protected] module]# mv flume-env.sh.template flume-env.sh

? 查询JAVA_HOME的值;

[[email protected] conf]# echo $JAVA_HOME /opt/module/jdk1.8.0_144

? 编辑flume-env.sh,将文件内容中的JAVA_HOME的值修改为上面查到的;

export JAVA_HOME=http://www.mamicode.com/opt/module/jdk1.8.0_144 4.4 配置环境变量

? 在/etc/profile末尾添加flume的家路径

export FLUME_HOME=http://www.mamicode.com/opt/module/flume-1.8.0 export PATH=$PATH:$FLUME_HOME/bin 4.5 验证flume成功与否

? 在xshell客户端下,输入flu,按tab键,看是否能够自动补全:flume-ng

? 如果可以自动补全,则代表安装flume成功,否则失败。

[[email protected] opt]# flume-ng Error: Unknown or unspecified command '' Usage: /opt/module/flume-1.8.0/bin/flume-ng <command> [options]... commands: help display this help text agent run a Flume agent avro-client run an avro Flume client version show Flume version info ............ 4.6 配置其他两台机器

? 利用scp命令,配置其他两台机器;

? 首先,将flume目录分发到bigdata112,bigdata113

[[email protected] ~]# scp -r /opt/module/flume-1.8.0/ [email protected]:/opt/module/ [[email protected] ~]# scp -r /opt/module/flume-1.8.0/ [email protected]13:/opt/module/

? 其次,将/etc/profile环境变量文件分发到bigdata112,bigdata113

[[email protected] ~]# scp -r /etc/profile [email protected]:/etc/ [[email protected] ~]# scp -r /etc/profile [email protected]:/etc/

? 最后,在bigdata112,bigdata113上分别刷新环境变量

[[email protected] opt]# source /etc/profile [[email protected] opt]# source /etc/profile 5、Flume案例 5.1 监控端口数据

? 目标:Flume监控一端Console,另一端Console发送消息,使被监控端实时显示。

技术图片

5.1.1 安装telnet命令 [[email protected] conf]# yum -y install telnet 5.1.2 创建Agent配置文件

? 在flume根目录下,新建一个myconf目录,用于存放自定义conf配置文件;

? 新建flume-telnet.conf文件,文件内容如下:

# 定义agent # <自定义agent名>.sources=<自定义source名称> a1.sources = r1 # <自定义agent名>.sinks=<自定义sink名称> a1.sinks = k1 # <自定义agent名>.channels=<自定义channel名称> a1.channels = c1 # 定义source # <agent名>.sources.<source名称>.type = 源类型 a1.sources.r1.type = netcat # <agent名>.sources.<source名称>.bind = 数据来源服务器 a1.sources.r1.bind = bigdata111 # <agent名>.sources.<source名称>.port = 自定义未被占用的端口 a1.sources.r1.port = 44445 # 定义sink # <agent名>.sinks.<sink名称>.type = 下沉到目标源的类型 a1.sinks.k1.type = logger # 定义channel # <agent名>.channels.<channel名称>.type = channel的类型 a1.channels.c1.type = memory # <agent名>.channels.<channel名称>.capacity = 最大容量 a1.channels.c1.capacity = 1000 # transactionCapacity<=capacity a1.channels.c1.transactionCapacity = 1000 # 双向链接 # <agent名>.sources.<source名称>.channels = channel名称 a1.sources.r1.channels = c1 # <agent名>.sinks.<sink名称>.channel = channel名称 a1.sinks.k1.channel = c1 5.1.3 启动flume配置文件 [[email protected] conf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a1 --conf-file /opt/module/flume-1.8.0/conf/flume-telnet.conf -Dflume.root.logger==INFO,console

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/43030.html