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

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,1000CU*H 3个月
简介: Apache Flume 是一个分布式、可靠的数据采集系统,支持从多种数据源收集日志信息,并传输至指定目的地。其核心架构由Source、Channel、Sink三组件构成,通过Event封装数据,保障高效与可靠传输。

b400.png

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的体系架构。

image.png


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


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


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

tar -zxvf apache-flume-1.9.0-bin.tar.gz -C ~/training/


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

cd /root/training
mv apache-flume-1.9.0-bin/ flume/


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

cd /root/training/flume/conf/
mv flume-env.sh.template flume-env.sh


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

export JAVA_HOME=/root/training/jdk1.8.0_181


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

cd /root/training/flume
bin/flume-ng version


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


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

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

#定义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。

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端口上。

nc 127.0.0.1 1234


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

image.png


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

[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的命令行终端中。


相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
5月前
|
存储 分布式计算 大数据
【赵渝强老师】阿里云大数据存储计算服务:MaxCompute
阿里云MaxCompute是快速、全托管的TB/PB级数据仓库解决方案,提供海量数据存储与计算服务。支持多种计算模型,适用于大规模离线数据分析,具备高安全性、低成本、易用性强等特点,助力企业高效处理大数据。
255 0
|
3月前
|
存储 Kubernetes 监控
Kubernetes日志管理:使用Loki进行日志采集
通过以上步骤,在Kubernetes环境下利用LoKi进行有效率且易于管理地logs采集变成可能。此外,在实施过程中需要注意版本兼容性问题,并跟进社区最新动态以获取功能更新或安全补丁信息。
256 16
|
4月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
A+流量分析平台是阿里集团统一的全域流量数据分析平台,致力于通过埋点、采集、计算构建流量数据闭环,助力业务提升流量转化。面对万亿级日志数据带来的写入与查询挑战,平台采用Flink+Paimon+StarRocks技术方案,实现高吞吐写入与秒级查询,优化存储成本与扩展性,提升日志分析效率。
509 1
|
5月前
|
JSON 安全 网络安全
LoongCollector 安全日志接入实践:企业级防火墙场景的日志标准化采集
LoonCollector 是一款轻量级日志采集工具,支持多源安全日志的标准化接入,兼容 Syslog、JSON、CSV 等格式,适用于长亭 WAF、FortiGate、Palo Alto 等主流安全设备。通过灵活配置解析规则,LoonCollector 可将原始日志转换为结构化数据,写入阿里云 SLS 日志库,便于后续查询分析、威胁检测与合规审计,有效降低数据孤岛问题,提升企业安全运营效率。
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
3662 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
7月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
810 54
|
12月前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
343 9
|
10月前
|
存储 SQL 关系型数据库
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
788 35
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
|
10月前
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
453 5
图解MySQL【日志】——Redo Log

热门文章

最新文章

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 日志服务