1,Flume概述
Flume是Cloudera提供的一款高可用,高可靠的,分布式海量日志采集软件。
Flume的核心是把数据从数据源(source)收集过来,再将收集到的数据送到指定的目的地(sink)。为了保证数据的成功传输,在数据传送到目的地(sink)之前会先将数据缓存下来(channel),在数据真正到达目的地后,再将缓存的数据删除。
2,架构图
Agent:Flume的核心角色是Agent,Agent本身是一个JAVA进程他运行在Flume所在的节点。
Source:采集源,数据源负责采集数据
Sink:下沉地,采集数据的目的地,用于想下一级Agent传递数据或者往最终存储系统中存储数据。
Channel:Agent内部的传输通道。用于把数据从Source传输到Sink,传输单位为event。
Event:Event是Flume内部传输的基本单元。Event将传输的数据进行封装,如果是文本文件,通常是一行记录。Event也是事物的基本单位。event从Source流向Channel,再到Sink。本身是一个字节数组。并可携带 headers(头信息)信息。event 代表着一个数据的最,小完整单元,从外部数据源来,向外部的目的地去。
一个完整的Event包括Event headers,Event body,Event 信息。其中Event信息就是Flume采集的日志记录。
3,Flume采集系统结构图。
4,安装部署。
上传安装包到所需要采集数的节点。
然后解压安装
tar -zxvf apache-flume-1.8.0-bin.tar.gz
获取安装包可微信关注公众号“暗物质魂”回复Flume,也可自己前往官网下载
进入安装目录下的conf目录修改flume-env.sh,添加JAVA_HOME即可
5,入门案例
监听本地44444端口的数据变化。
在Flume安装目录下新建job文件夹,进入此文件夹,
vi netcat-logger.conf 编辑
# 定义这个 agent 中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# 描述和配置 source 组件:r1
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
# 描述和配置 sink 组件:k1
a1.sinks.k1.type = logger
# 描述和配置 channel 组件,此处使用是内存缓存的方式
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# 描述和配置 source channel sink 之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
启动Flume,在Flume安装目录下输入命令
bin/flume-ng agent -c conf -f job/netcat-logger.conf -n a1 -Dflume.root.logger=INFO,console
-c conf 指定 flume 自身的配置文件所在目录
-f conf/netcat-logger.con 指定我们所描述的采集方案
-n a1 指定我们这个 agent 的名字
测试
Xshell重新开一个窗口
输入 telnet localhost 44444 后输入hello Flume
查看Flume打印数据是否又hello Flume输出。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/133809.html