大数据之Flume

1 Flume概述

1.1 Flume定义

Flume是Cloudera提供的一个高可用的、高可靠的、分布式的海量日志采集,聚盒和传输的系统,Flume基于流式架构,灵活简单。

1.2 为什么选用Flume?

大数据之Flume

Flume官网基础架构示意图:
大数据之Flume

1.3 基本组件

1.3.1 Flume Sources

source组件是专门用来收集数据的,可以处理各种类型、各种格式的日志数据;
其中包括有:Avro Source、Thrift Source、Exec Source、Spooling Directory Source、NetCat、Kafka Source、Sequence generator、Syslog Source、HTTP Source、Legacy Source等等。(加粗的字体表示常见的Source)

1.3.2 Flume Channels

source组件吧数据收集过来之后,临时存放在Channel中,即Channel组件是agent中专门用来存放临时数据的——对采集到的数据进行简单的缓存。

  • Memory channel:内存通道,将数据临时存储在内存(阻塞式队列)中,因此读写速度相对较快,但是不稳定。适用于吞吐量较高的场景。如果不指定,那么在内存中最多能够同时存储100条数据。
  • File Channel:文件通道,将数据临时存储在磁盘上,因此读写速度相对比较慢但是可靠,适用于可靠性的场景。
  • JDBC Channel:将数据临时存储在数据库中,到目前为止,只支持Derby数据库(微型数据库)
  • Spillable Memory Channel:内存溢出通道,会先将数据放到内存中,如果内存中存不下,不会阻塞,而是再将数据往磁盘上写(目前还在试验阶段)。

1.3.3 Flume Sinks

sink组件是用于把数据发送到目的地的组件。目的地包括HDFS Sink、Logger Sink、Avro Sink、thrift、ipc、File Roll Sink、 null、hbase、solr、自定义等。(加粗的字体表示常见的Sink)

========================================================2020-10-10