本文对 flume 进行一个简单的介绍,后续还会陆续补充。
下面介绍下 flume 中的核心概念:
flume-1.0 + , 也就是 我们现在一般都在使用的 flume。
都只有1个核心租组件,也就是 agent 。
其中 Agent 又分为3个模块,source, channel, sink ,
而 flume 中主要进行数据的搬运,其搬运的基本单位是event 。
核心组件:Agent 代理
使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。
===================================================
Agent 代理中的 3个模块, source , channel, sink
模块名称:Source源
从Client收集数据,传递给Channel。
模块名称:Channel通道
连接 sources 和 sinks ,这个有点像一个队列。
模块名称:Sink接收器
从Channel收集数据,进行相关操作,运行在一个独立线程。
========================================================
传输单位: Events事件
传输的基本数据负载。
下面是一段官网上关于 event 的定义:
注意 : 但是这个解释是针对Avro反序列化系统中的Event的定义,而flume ng中很多event用的不是这个。
一行文本内容会被反序列化成一个event。
event的最大定义为2048字节,一行文本超过2048字节,则会被切割。
剩下的会被放到下一个event中。
默认编码是UTF-8,这都是统一的。
Tips:
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,
它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据.