|
Flume是Cloudera提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。Flume 运行的核心是Agent。Flume以Agent为最小的独立运行单位,一个Agent就是一个JVM(Java Virtual Machine),它是一个完整的数据采集工具,包含三个核心组件,分别是数据源(Source)、数据通道(Channel)和数据槽(Sink)。通过这些组件,“事件”可以从一个地方流向另一个地方。每个组件的具体功能如下: (1)数据源是数据的收集端,负责将数据捕获后进行特殊的格式化,将数据封装到事件(Event)里,然后将事件推入数据通道中。常用的数据源的类型包括Avro、Thrift、Exec、JMS、Spooling Directory、Taildir、Kafka、NetCat、Syslog、HTTP等。 (2)数据通道是连接数据源和数据槽的组件,可以将它看作一个数据的缓冲区(数据队列),它可以将事件暂存到内存中,也可以持久化到本地磁盘上,直到数据槽处理完该事件。常用的数据通道类型包括Memory、JDBC、Kafka、File、Custom等。 (3)数据槽取出数据通道中的数据,存储到文件系统和数据库,或者提交到远程服务器。常用的数据槽包括HDFS、Hive、Logger、Avro、Thrift、IRC、File Roll、HBase、ElasticSearch、Kafka、HTTP等。 Flume提供了大量内置的数据源、数据通道和数据槽类型。不同类型的数据源、数据通道和数据槽可以自由组合。组合方式基于用户设置的配置文件,非常灵活。比如,数据通道可以把事件暂存在内存里,也可以持久化到本地硬盘上;数据槽可以把日志写入HDFS、HBase甚至是另外一个数据源等等。 【出处】林子雨.大数据导论.人民邮电出版社,2020年9月第1版.
|