写点什么

Flume 简述

  • 2023-06-29
    浙江
  • 本文字数:1585 字

    阅读完需:约 5 分钟

Flume简述

数新网络官网已全新上线,欢迎点击访问

www.datacyber.com 数新网络_让每个人享受数据的价值


1. 什么是 Flume?


Flume 是什么?我们从 flume 的图标就能看出,它是一个水道。Flume 的图标下面是水,上面是木头。当我们在山上的伐木场(source)有很多木头需要运输到山下的时候,如果一棵一棵的去搬的话,太费体力了,刚好山上有条小溪(channel),而它恰好又是通往山下的,我们就可以把木头放到小溪里顺流而下,再在山下挖一个水槽(sink),让木头流向这个水槽,我们需要用的时候就可以在这个水槽里面去取。而 flume 就是集(source+channel+sink)的一个日志数据采集工具。



编辑

图片来源于官网


2. Flume 概述



编辑

图 1-1

Flume 是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。

Flume 可以采集文件,socket 数据包、文件、文件夹、kafka 等各种形式源数据,又可以将采集到的数据(下沉 sink)输出到 HDFS、hbase、hive、kafka 等众多外部存储系统中一般的采集需求,通过对 flume 的简单配置即可实现,Flume 针对特殊场景也具备良好的自定义扩展能力。因此,flume 可以适用于大部分的日常数据采集场景。


2 Flume 版本


1.Flume og 结构



编辑

图 2-1

Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 cloudera,随着 Flume 功能的扩展,Flume OG 代码工程臃肿、核心组件设计不合理、核心配置不标准等缺点暴露出来。当前我们使用的一般是 flume ng (apache Flume)。

Flume OG 由三个角色节点组成:agent,collector,master 组成。agent 负责从数据源收集数据,将数据集中到 collector,然后汇入数据库,主节点 master 负责管理,在 OG 版本使用中,使用稳定性依赖于 zookeeper。


2.Flume ng 基础结构


点击并拖拽以移动

编辑

图 2-2

Flume NG 只有一种角色的节点:代理节点(agent),没有 collector、master 节点。这是核心组件最核心的变化。去除了 physical nodes、logical nodes 的概念和相关内容。agent 节点的组成也发生了变化。NG agent 由 source、sink、channel 组成。


3 Flume 事物及流程


1. Flume 事务


点击并拖拽以移动

编辑

图 3-1

  • Put 事务流程

将数据先写入 putlist 临时缓冲区,检查 channel 内存是否足够合并(如果后续没有数据了,将在设定的时间内合并),channel 内存不足,将回滚数据。

  • Take 事务流程

将数据推入临时缓冲区 takelist,并发送到 HDFS,如果数据全部发送成功,则清除临时缓冲区 takelist,数据发送过程中如果出现异常,rollback 将临时缓冲区 takelist 中的数据归还给 channel 内存队列。


2.Flume agent 流程



编辑

图 3-2


在 Source 接收到数据后,会把数据包装成 Event,并把数据交给 channel,由 ChannelProcessor 决定怎么交,交给谁。在 ChannelProcessor 流程中首先会将数据交给拦截器链,可进行数据清理,处理脏数据。拦截器尽量选择简单的逻辑,不然会影响流式处理链条,整个流程都会变慢。后将数据交给 Channel 选择器 ChannelSelector,ChannelSelector 处理完将数据返还给 ChannelProcessor,根据 ChannelSelector 的选择结果将数据写入对应的 channel。

每个 channel 都有一个独立的 SinkProcessor,sink 不是直接拉取数据的,sink 是由 SinkProcessor 决定怎么拉取数据的,默认的 SinkProcessor 一共有三种,分别是:

  • DefaultSinkProcessor:接收单一的 Sink,不强制用户为 Sink 创建 Processor;

  • LoadBalancingSinkProcessor:负载均衡片处理器提供在多个 Sink 之间负载平衡的能力;

  • FailoverSinkProcessor:通过配置维护了一个优先级列表。保证每一个有效的事件都会被处理(故障转移)。


4 学习总结


Flume 主要是用来数据采集,将用户的信息以及行为日志保存到 HDFS 集群中或者本地文件夹中,相当于一个搬运工,flume 的单位是 agent。学习 flume 的重点是需要掌握 source 和 channel 之间的事务、sink 和 channel 之间的事务流程原理,以及 source 和 channel 之间的复制和多路复用的原理、sink 和 channel 之间的负载均衡、故障转移等原理。

一 END 一

发布于: 刚刚阅读数: 4
用户头像

云数据智能操作系统领导者 2022-12-05 加入

浙江数新网络有限公司是一家拥抱开源,专注于云数据平台的大数据服务商,致力于结合全球云数仓先进理念,打造适合中国落地路径的云数仓体系。

评论

发布
暂无评论
Flume简述_数据采集_数新网络官方账号_InfoQ写作社区