Flume的组成

本文介绍了Flume的基本架构,包括Agent、Source、Channel、Sink和Event等核心组件,并详细解释了它们的功能及重要类型。

组成

  • Agent:是一个JVM进程(可通过top -p < pid > -H查看),分为Source、Channel、Sink。
  • Source:负责接收发送到Flume的数据,将数据以消息的形式通过事务提交到Channel。重要的Source有:TailDir、exec、netcat。
  • Channel:位于Source和Sink之间的缓冲区。重要的Channel有:File、Memory、Kafka。
  • Sink:轮询Channel中的消息,通过事务从Channel拉取数据,然后输出到指定位置。重要的有HDFS。
  • Event:Flume中的消息,分为Header和Body。
本关任务:多方面了解 Flume,完成将 /opt/flume/flumedata 目录下的所有文件采集到 Hdfs。 相关知识 1.Flume的定义; 2.为什么选用Flume; 3.Flume的基础架构; 4.Flume 的部署类型; Flume 定义 Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传 输的系统。Flume 基于流式架构,灵活简单。 为什么选用Flume Apache Flume 是一个分布式的、可靠的、可用的系统,用于有效地收集、聚合和移动大量的日志数据,从许多不同的源到一个集中的数据存储。 Apache Flume 的使用不仅限于日志数据聚合。由于数据源是可定制的,Flume 可以用来传输大量的事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息以及几乎任何可能的数据源。 Flume 基础架构 Flume 组成架构如下图所示: Agent Agent 是一个 JVM 进程,它以事件的形式将数据从源头送至目的。 Agent 主要有 3 个部分组成,Source、Channel、Sink。 Source Source 是负责接收数据到 Flume Agent 的组件。Source 组件可以处理各种类型、各种 格式的日志数据,包括 Avro、Thrift、Exec、Jms、Spooling Directory、Netcat、Taildir、 Sequence Generator、Syslog、Http、Legacy。 Source 流程图如下: Sink Sink 不断地轮询 Channel 中的事件且批量地移除它们,并将这些事件批量写入到存储 或索引系统、或者被发送到另一个 Flume Agent。 Sink 组件目的地包括 HDFS、Logger、Avro、Thrift、Ipc、File、HBase、Solr、自定 义。 Sink 流程图如下: Channel Channel 是位于 Source 和 Sink 之间的缓冲区。因此,Channel 允许 Source 和 Sink 运 作在不同的速率上。Channel 是线程安全的,可以同时处理几个 Source 的写入操作和几个 Sink 的读取操作。 Flume 自带两种 Channel:Memory Channel 和 File Channel。 Memory Channel 是内存中的队列。Memory Channel 在不需要关心数据丢失的情景下适 用。如果需要关心数据丢失,那么 Memory Channel 就不应该使用,因为程序死亡、机器宕 机或者重启都会导致数据丢失。 File Channel 将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数 据。 Channel 流程图如下: Event 传输单元,Flume 数据传输的基本单元,以 Event 的形式将数据从源头送至目的地。 Event 由 Header 和 Body 两部分组成,Header 用来存放该 Event 的一些属性,为 K-V 结构, Body 用来存放该条数据,形式为字节数组。 Flume的部署类型 单一流程 多代理流程(多个Agent顺序连接) 可以将多个Agent顺序连接起来,将最初的数据源经过收集,存储到最终的存储系统中。这是最简单的情况,一般情况下,应该控制这种顺序连接的Agent 的数量,因为数据流经的路径变长了,如果不考虑Failover的话,出现故障将影响整个Flow上的Agent收集服务。 流的合并(多个Agent的数据汇聚到同一个Agent ) 这种情况应用的场景比较多,比如要收集Web网站的用户行为日志, Web网站为了可用性使用的负载集群模式,每个节点都产生用户行为日志,可以为每 个节点都配置一个Agent来单独收集日志数据,然后多个Agent将数据最终汇聚到一个用来存储数据存储系统,如HDFS上。第一次 Agent 负责采集原始数据,第二层 Agent 负责对第一层数据进行汇聚。这种多层代理的方式尤其适合 Source 源数据量庞大的时候,效率会高很多。 多路复用流(多级流) Flume支持堵路输出Event流到一个或多个目的地。这是靠定义多路数据流实现的,它可以实现复制和选择性路由一个Event到一个或者多个Channel。 Load Balance功能 负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法。 Load Balancing Sink Processor 能够实现 Load Balance 功能,如图Agent1 是一个路由节点,负责将
最新发布
10-25
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值