【赵渝强老师】大数据日志采集引擎Flume

Apache Flume支持采集各类数据发送方产生的日志信息,并且可以将采集到的日志信息写到各种数据接收方。其核心是把数据从数据源(Source)收集过来,在将收集到的数据送到指定的目的地(Sink)。为了保证输送的过程一定成功,在送到目的地(Sink)之前,会先缓存数据(Channel),待数据真正到达目的地(Sink)后,Flume再删除自己缓存的数据。

一、 Apache Flume的体系架构

Flume 分布式系统中核心的角色是Agent。Agent 本身是一个 Java 进程,一般运行在日志收集节点。Flume采集系统就是由一个个Agent所连接起来形成。每一个Agent相当于一个数据传递员,内部有三个组件:

  • Source:采集源,用于跟数据源对接,以获取数据;
  • Sink:下沉地,采集数据的传送目的,用于往下一级 agent 传递数据或者往最终存储系统传递数据;
  • Channel:agent 内部的数据传输通道,用于从 source 将数据传递到 sink;

在整个数据的传输的过程中,流动的是Event。它是Flume内部数据传输的最基本单元。Event将传输的数据进行封装。如果是文本文件,通常是一行记录,Event也是事务的基本单位。Event从 Source,流向 Channel,再到 Sink,本身为一个字节数组,并可携带 headers的头信息。Event代表着一个数据的最小完整单元,从外部数据源来,向外部的目的地去。一个完整的 Event包括:event headers、event body、event 信息,其中Event信息就是Flume 收集到的日记记录。

视频讲解如下
【赵渝强老师】大数据日志采集引擎Flume

下图展示了Flume的体系架构。

二、 【实战】Apache Flume的安装和部署

从Flume的官方网站上下载安装介质,这使用的版本是1.9.0。下面通过具体的步骤来演示Flume的安装和部署。

(1)将Flume的安装包解压到/root/training/目录下。

powershell 复制代码
tar -zxvf apache-flume-1.9.0-bin.tar.gz -C ~/training/

(2)重命名解压缩的文件夹为Flume。

powershell 复制代码
cd /root/training
mv apache-flume-1.9.0-bin/ flume/

(3)进入Flume下的conf文件夹将文件flume-env.sh.template重命名为flume-env.sh

powershell 复制代码
cd /root/training/flume/conf/
mv flume-env.sh.template flume-env.sh

(4)修改flume-env.sh中的JAVA HOME配置参数。

powershell 复制代码
export JAVA_HOME=/root/training/jdk1.8.0_181

(5)保存退出并验证Flume的版本。

powershell 复制代码
cd /root/training/flume
bin/flume-ng version

三、 【实战】运行Flume的第一个任务

下面通过一个简单的示例来演示如何Flume采集数据。

(1)在Flume安装目录创建myagent目录并在myagent目录下创建配置文件a1.conf。

powershell 复制代码
#定义agent名, source、channel、sink的名称
a1.sources = r1
a1.channels = c1
a1.sinks = k1

#具体定义source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 1234

#具体定义channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

#具体定义sink
a1.sinks.k1.type = logger

#组装source、channel、sink
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

(2)进入Flume的安装目录执行下面的语句命令启动Agent。

powershell 复制代码
bin/flume-ng agent -n a1 -f myagent/a1.conf \
-c conf -Dflume.root.logger=INFO,console


# 通过打印出来的日志的最后一行,如下:
Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/127.0.0.1:1234]

# Flume已经成功地在本机的1234端口上创建了Socket Server。
# 这时候只要有消息从本机的1234端口上发送过来,就可以被Flume的Source捕获。

(3)单独启动一个Netcat命令终端运行在本机的1234端口上。

powershell 复制代码
nc 127.0.0.1 1234

(4)在netcat中输入一些内容并回车;观察Flume命令行窗口的变化。如下图所示。

可以看到在Flume终端的日志中,输出了如下的信息:

cpp 复制代码
[INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] 
Event: { headers:{} body: 48 65 6C 6C 6F 20 46 6C 75 6D 65 Hello Flume }

Flume通过Netcat Source采集到了相应的数据信息,并直接打印在Flume的命令行终端中。

相关推荐
延凡科技12 小时前
多场景落地复盘:端边云架构无人机智能巡检系统设计与实践
大数据·数据结构·人工智能·科技·架构·无人机·能源
ifenxi爱分析13 小时前
爱分析最新报告解读:AI数据基础设施与数据中台的区别
大数据·人工智能
品牌全球行14 小时前
共商共建共享 链接数字未来——“一带一路数字新城(深圳)会客厅筹备办”揭牌仪式在深圳隆重举行
大数据·人工智能
数智化管理手记16 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
ApacheSeaTunnel16 小时前
Apache SeaTunnel AI CLI Benchmark:7 款大模型、100 个 ETL 任务实测,谁真正能跑起来?
大数据·ai·开源·大模型·数据集成·cli·seatunnel·技术分享·数据同步
电商API_1800790524717 小时前
企业ERP进销存场景|京东商品详情接口自动同步方案|凭证鉴权批量调用技术实操
大数据·运维·人工智能·爬虫·数据挖掘·网络爬虫
小稻穗17 小时前
市场调研样本选型坐标系:2026六家国内样本平台能力横向校验
大数据·运维·数据分析
极光代码工作室17 小时前
基于Spark的日志监控与分析平台
大数据·hadoop·python·spark·数据可视化
wuhanzhanhui18 小时前
从高强钢到碳纤维!2026武汉汽车材料轻量化制造技术展会,重塑未来造车新范式
大数据·汽车·制造
lupai18 小时前
手机在网状态查询 API 新手实战指南
大数据·python·智能手机