Flume核心概念

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Flume 是一个分布式、可靠、高可用的服务,它能够将不同数据源的海量日志数据进行高效收集、汇聚、移动,最后存储到一个中心化数据存储系统(HDFS、 HBase等)中,它是一个轻量级的工具,简单、灵活、容易部署,适应各种方式日志收集并支持 failover 和负载均衡。

简介


Flume 是一个分布式、可靠、高可用的服务,它能够将不同数据源的海量日志数据进行高效收集、汇聚、移动,最后存储到一个中心化数据存储系统(HDFS、 HBase等)中,它是一个轻量级的工具,简单、灵活、容易部署,适应各种方式日志收集并支持 failover 和负载均衡。

功能


  • 支持在日志系统中定制各类数据发送方,用于收集数据。
  • Flume 提供对数据进行简单处理,并写到各种数据接收方(可定制)的能力。

特点


  • Flume 可以高效率的将多个网站服务器中收集的日志信息存入 HDFS/HBase 中。
  • 使用 Flume,我们可以将从多个服务器中获取的数据迅速的移交给 Hadoop 中。
  • 支持各种接入资源数据的类型以及接出数据类型。
  • 支持多路径流量,多管道接入流量,多管道接出流量,上下文路由等。
  • 可以被水平扩展。

核心组件


组件 说明
Event 1.Flume 使用 Event 对象来作为传递数据的格式,是内部数据传输的最基本单元;
2.一个数据单元,由消息头(Header)和消息体(body)组成;
3.Header 是 key/value 形式的,可以用来制造路由决策或携带其他结构化信息(如事件的时间戳或事件来源的服务器主机名);
4.Body 是一个字节数组,包含了实际的内容。
Agent 每一个 Agent 独立的 Flume 进程,由 Source、Channel、Sink 三个组件组成(从客户端哪儿接收收集,或者从其他的 Agent 哪儿接收,然后迅速的将获取的数据传给下一个目的节点 Agent)
Source 1.数据源收集组件,一个 Flume 源负责一个外部源(数据发生器),如一个 web 服务器传递给他的事件;
2.该外部源将它的事件以 Flume 可以识别的格式发送到 Flume 中;
3.当一个 Flume 源接收到一个事件时,其将通过一个或者多个通道存储该事件
Channel 1.数据管道,接收来自 Source 组件传递的 Event,即通道会缓存该事件直到该事件被 Sink 组件处理;
2.Channel 是一种短暂的存储容器,它将从 Source 处接收到的 Event 格式的数据缓存起来,直到它们被 Sink 消费掉,它在 Source 和 Sink 间起着一共桥梁的作用,Channel 是一个完整的事务,这一点保证了数据在收发的时候的一致性。并且它可以和任意数量的 Source 和 Sink 链接;
3.Flume 通常选择 FileChannel(本地磁盘的事务实现模式,保证数据不会丢失(WAL实现)),而不使用 Memory Channel(内存存储事务,吞吐率极高,但存在丢数据风险)
Sink 1.Sink 成功取出 Event 后,会将 Event 从 Channel 中移除,并将 Event 放置到外部数据介质上(通过Flume HDFS Sink将数据放置到 HDFS 中,或者放置到下一个 Flume 的 Source(Avro,用于Agant 之间通信),等到下一个 Flume 处理);
2.支持多种不同类型的 Sink。
Interceptor 1.拦截器用于 Source 的一组拦截器,按照预设的顺序必要地方对 Event 进行过滤和自定义的处理逻辑实现。
2.在app(应用程序日志)和 Source 之间的,对app日志进行拦截处理的。也即在日志进入到 Source 之前,对日志进行一些包装、清新过滤等等动作。
3.Flume 的拦截器也是chain形式的,可以对一个 Source 指定多个拦截器,按先后顺序依次处理

Agent结构

  • 单个 Agent 结构
  • 数据由一个 Agent 往下一个 Agent 传递
  • 多个 Agent 收集数据往一个 Agent 传递
  • Agent 的一个 Source 往多个 Sink 并将数据存储到不同的存储器上

支持多种Source


  • Source 是数据收集端,负责捕捉数据并将数据封装到 Event 里,最后将数据推送到 Channel 中,Flume 提供了很多内置的 Source:
Source类型 说明
Exec Source 执行shell命令方式,如tail -F
Spool DirectorySource 监控目录新文件数据
Thrift Source 支持Thrift协议
Svslog Source 读取svslog数据,支持UDP和TCP两种协议
Avro Source 支持AVRO协议
HTTP Source 基于HTTP POST或GET数据源
Netcat Source 监控流经端口的
JMS Source 从jms系统中读取数据

支持多种Channel


  • Channel 是连接 Source 和 Sink 的组件,可以当做一个缓冲区或数据队列,它将数据存储在内存或磁盘上,直到 Sink 处理完该事件,比较常用的 Channel,MemoryChannel 和 FileChannel:
Channel类型 说明
Memory Channel 将Event数据存储在内存
File Channel 将Event数据存储在磁盘中
JDBC Channel 将数据持久到数据库中
Kafka Channel 将数据往Kafka存储
Spillable Memory Channel 将数据持久化到内存和磁盘,当内存队列满了后将数据持久化到磁盘
Custome Channel 自定义Channel

支持多种Sink


  • Sink 从 Channel 中取出事件,将数据发送到别处,可以存储到本地文件、HDFS、Kafka、HBase 等,也可以是其它 Agent 的 Source:
Sink类型 说明
HDFS Sink 数据写入 HDFS
HBase Sink 数据写入HBase数据库
Avro Sink 将数据转换为Avro Event,发送到配置的RPC端口上
Thrift Sink 将数据转换为Thrift Event,发送到配置的RPC端口上
Logger Sink 将数据写入到日志文件中
ElasticSearch Sink 将数据发送到搜索服务器集群
Custom Sink 自定义Sink

支持多种拦截器


  • Flume 提供了拦截器,当 Source 指定一个拦截器后,拦截器会得到 Event 数据,可以在拦截器中过滤提取数据,一个 Source 可以指定多个拦截器成为拦截器chain:
拦截器类型 说明
TimestampInterceptor 时间戳拦截器,Header中添加一个key叫:timestamp,value为当前的时间戳
HostInterceptor 主机名拦截器,Header中添加一个key叫:host,value为当前机器的hostname或者ip
StaticInterceptor 静态拦截器,Header中添加自定义的key和value
RegexFilteringInterceptor 正则过滤拦截器,通过正则来清洗或包含匹配的events
RegexExtractorInterceptor 正则提取拦截器,通过正则表达式来在Header中添加指定的key,value则为正则匹配的部分
UUIDInterceptor UUID拦截器
CustomInterceptor 自定义拦截器
相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
存储 数据采集 监控
Flume 拦截器概念及自定义拦截器的运用
Apache Flume 的拦截器是事件处理组件,位于Source和Channel之间,用于在写入Channel前对数据进行转换、提取或删除。它们支持数据处理和转换、数据增强、数据过滤以及监控和日志功能。要创建自定义拦截器,需实现Interceptor接口,包含initialize、intercept、intercept(List<Event>)和close方法。配置拦截器时,通过Builder模式实现Interceptor.Builder接口。在Flume配置文件中指定拦截器全类名,如`TestInterceptor$Builder`,然后启动Flume进行测试。
152 0
|
6月前
|
消息中间件 存储 SQL
Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
【2月更文挑战第18天】Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
1661 0
|
数据采集 消息中间件 分布式计算
大数据数据采集的数据采集(收集/聚合)的Flume之概念
在大数据应用中,数据采集是非常重要的一步。Flume是一个开源的分布式系统,可以帮助企业完成数据采集、收集和聚合等操作,并将它们发送到后续处理系统中。
279 0
|
6月前
|
存储 分布式计算 监控
【Flume】Flume 监听日志文件案例分析
【4月更文挑战第4天】【Flume】Flume 监听日志文件案例分析
|
6月前
|
存储 运维 监控
【Flume】flume 日志管理中的应用
【4月更文挑战第4天】【Flume】flume 日志管理中的应用
|
消息中间件 数据采集 SQL
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
|
3月前
|
存储 数据采集 数据处理
【Flume拓扑揭秘】掌握Flume的四大常用结构,构建强大的日志收集系统!
【8月更文挑战第24天】Apache Flume是一个强大的工具,专为大规模日志数据的收集、聚合及传输设计。其核心架构包括源(Source)、通道(Channel)与接收器(Sink)。Flume支持多样化的拓扑结构以适应不同需求,包括单层、扇入(Fan-in)、扇出(Fan-out)及复杂多层拓扑。单层拓扑简单直观,适用于单一数据流场景;扇入结构集中处理多源头数据;扇出结构则实现数据多目的地分发;复杂多层拓扑提供高度灵活性,适合多层次数据处理。通过灵活配置,Flume能够高效构建各种规模的数据收集系统。
55 0
|
23天前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
38 2

热门文章

最新文章