首页
学习
活动
专区
工具
TVP
发布

Flume之系统简介

【导读:数据是二十一世纪的石油,蕴含巨大价值,这是·情报通·大数据技术系列第[62]篇文章,欢迎阅读和收藏】

1 基本概念

Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统, Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时, Flume 提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。当前 Flume 有两个版本 Flume 0.9X 版本的统称 Flume-og , Flume1.X 版本的统称 Flume-ng 。

2 术语解释

Client :Client 生产数据,运行在一个独立的线程。

Event :一个数据单元,消息头和消息体组成。( Events 可以是日志记录、 avro 对象等。)

Flow :Event 从源点到达目的点的迁移的抽象。

Agent :一个独立的 Flume 进程,包含组件 Source 、 Channel 、 Sink 。( Agent 使用 JVM 运行 Flume 。每台机器运行一个 agent ,但是可以在一个 agent 中包含多个 sources 和 sinks 。)

Source :数据收集组件。( source 从 Client 收集数据,传递给 Channel )

Channel :中转 Event 的一个临时存储,保存由 Source 组件传递过来的 Event 。( Channel 连接 sources 和 sinks ,这个有点像一个队列。)

Sink :从 Channel 中读取并移除 Event , 将 Event 传递到 FlowPipeline 中的下一个 Agent (如果有的话)( Sink 从 Channel 收集数据,运行在一个独立线程。)

3 详细说明

3.1 Flume 特点

flume 是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据 ; 同时, Flume 提供对数据进行简单处理,并写到各种数据接受方 ( 比如文本、 HDFS 、 Hbase 等 ) 的能力 。

flume 的数据流由事件 (Event) 贯穿始终。事件是 Flume 的基本数据单位,它携带日志数据 ( 字节数组形式 ) 并且携带有头信息,这些 Event 由 Agent 外部的 Source 生成,当 Source 捕获事件后会进行特定的格式化,然后 Source 会把事件推入 ( 单个或多个 )Channel 中。你可以把 Channel 看作是一个缓冲区,它将保存事件直到 Sink 处理完该事件。Sink 负责持久化日志或者把事件推向另一个 Source 。

flume 的可靠性当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume 提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end (收到数据 agent 首先将 event 写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。), Store on failure (这也是 scribe 采用的策略,当数据接收方 crash 时,将数据写到本地,待恢复后,继续发送), Besteffort (数据发送到接收方后,不会进行确认)。

flume 的可恢复性

还是靠 Channel 。推荐使用 FileChannel ,事件持久化在本地文件系统里 ( 性能较差 ) 。

3.2 Flume 拦截器、数据流以及可靠性

Flume 拦截器

当我们需要对数据进行过滤时,除了我们在 Source 、 Channel 和 Sink 进行代码修改之外, Flume 为我们提供了拦截器,拦截器也是 chain 形式的。拦截器的位置在 Source 和 Channel 之间,当我们为 Source 指定拦截器后,我们在拦截器中会得到 event ,根据需求我们可以对 event 进行保留还是抛弃,抛弃的数据不会进入 Channel 中。

Flume 数据流

1 ) Flume 的核心是把数据从数据源收集过来,再送到目的地。为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。

2 ) Flume 传输的数据的基本单位是 Event ,如果是文本文件,通常是一行记录,这也是事务的基本单位。Event 从 Source ,流向 Channel ,再到 Sink ,本身为一个 byte 数组,并可携带 headers 信息。Event 代表着一个数据流的最小完整单元,从外部数据源来,向外部的目的地去。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200217A09WML00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券