Flume基础与架构

1.1 定义

Flume是分布式的日志收集系统,它将各个服务器中的数据收集起来并送到指定的地方,比如送到HDFS、Kafk等
Flume的核心是把数据从数据源(source)收集过来,再将收集到的数据送到指定的目的地(sink)。为了保证输送的过程一定成功,在送到目的地(sink)之前,会先缓存数据(channel),待数据真正到达目的地(sink)后,flume再删除己缓存的数据。

1.2 Flume特性

(1)Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。
(2)Flume可以采集文件,socket数据包等各种形式源数据,又可以将采集到的数据输出到HDFS、hbase、hive、kafka等众多外部存储系统中
(3)一般的采集需求,通过对flume的简单配置即可实现
(4)Flume针对特殊场景也具备良好的自定义扩展能力,因此,flume可以适用于大部分的日常数据采集场景
(6)Flume基于流式架构,灵活简单。
(7)Flume可以用于传输大量事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息和几乎所有可能的数据源

1.3 Flume基础架构图:
在这里插入图片描述

Agent:

  • Flume分布式系统中最核心的角色是agent,flume采集系统就是由一个个agent所连接起来形成,Agent是一个JVM进程,它以事件的形式将数据从源头送至目的。
  • Agent主要有3个部分组成:Source、Channel、Sink。

Source:

  • Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling
    directory、netcat、sequence generator、syslog、http、legacy。
  • Source可以监听一个或者多个网络端口,用于接收数据或者可以从本地文件系统读取数据。
  • 每个Source必须至少连接一个Channel。基于一些标准,一个Source可以写入几个Channel,复制事件到所有或某些Channel。

Sink:

  • Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。
  • Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定义。
  • 连续轮询各自的Channel 来读取和删除事件。
  • Sink将事件推送到下一阶段,或到最终目的地。
  • 一旦在下一阶段或其目的地中的数据是安全的,Sink 通过事务提交通知Channel ,可以从Channel 中删除这些事件。

Channel:

  • Channel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。
  • Flume自带两种Channel:Memory Channel和File Channel。
  • Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。
  • File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。
  • 一个Sink只能从一个Channel 读取。
  • 如果多个Sink从相同的Channel 读取,它可以保证只有一个Sink将会从Channel 读取一个指定特定的事件。

Event:

传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。Event由Header和Body两部分组成,Header用来存放该event的一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组。

在这里插入图片描述
注意:一个flume的agent,可以有多个source,channel,sink

为什么用flume而不用hdfs的put

  • 1.同一时刻只能传输一个文件
  • 2.put处理的是静态文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值