Flume入门介绍

一、Flume简介

Apache Flume is a distributed, reliable, and available system for efficiently collecting, aggregating and moving large amounts of log data from many different sources to a centralized data store.
The use of Apache Flume is not only restricted to log data aggregation. Since data sources are customizable, Flume can be used to transport massive quantities of event data including but not limited to network traffic data, social-media-generated data, email messages and pretty much any data source possible.
Apache Flume is a top level project at the Apache Software Foundation.

Apache Flume是一个分布式,可靠且可用的系统,用于有效地从许多不同的源收集,聚合和移动大量日志数据到集中式数据存储。
          Apache Flume的使用不仅限于日志数据聚合。由于数据源是可定制的,因此Flume可用于传输大量事件数据,包括但不限于网络流量数据,社交媒体生成的数据,电子邮件消息以及几乎任何可能的数据源。
          Apache Flume是Apache Software Foundation的顶级项目。

即便官方文档有错误的地方,我依旧对他爱不释手。

下面这张图其实就是Flume在实际使用中的一个途径。

    Flume入门介绍

           Flume 最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS。

二、Flume特点

    1. Flume可以高效率的将多个网站服务器中收集的日志信息存入HDFS/HBase中
    2. 使用Flume,我们可以将从多个服务器中获取的数据迅速的移交给Hadoop中
    3. 除了日志信息,Flume同时也可以用来接入收集规模宏大的社交网络节点事件数据,比如facebook,twitter,电商网站如亚马逊,flipkart等
    4. 支持各种接入资源数据的类型以及接出数据类型
    5. 支持多路径流量,多管道接入流量,多管道接出流量,上下文路由等
    6. 可以被水平扩展

三、Flume优势

     1. Flume可以将应用产生的数据存储到任何集中存储器中,比如HDFS,HBase
    2. 当收集数据的速度超过将写入数据的时候,也就是当收集信息遇到峰值时,这时候收集的信息非常大,甚至超过了系统的写入数据能力,这时候,Flume会在数据生产者和数据收容器间做出调整,保证其能够在两者之间提供平稳的数据.
    3. 提供上下文路由特征
    4. Flume的管道是基于事务,保证了数据在传送和接收时的一致性.
    5. Flume是可靠的,容错性高的,可升级的,易管理的,并且可定制的。

四、Flume的核心概念

Flume入门介绍

4.1 agent

    这是Flume运行的核心,Flume以agent为一个小的运行单元,可以理解为,一个agent就是一个JVM,它以事件的形式将数据从源头送至目的。agent由source,sink和channel组成。从而使得我们的event可以从一端到另一端。

4.1 source

 Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、 spooling directorynetcat、sequence generator、syslog、http、legacy。

4.3 sink

Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。Sink组件目的地包括hdfsloggeravro、thrift、ipc、fileHBase、solr、自定义。

官网说明:

This sink streams events containing delimited text or JSON data directly into a Hive table or partition. Events are written using Hive transactions. As soon as a set of events are committed to Hive, they become immediately visible to Hive queries. Partitions to which flume will stream to can either be pre-created or, optionally, Flume can create them if they are missing. Fields from incoming event data are mapped to corresponding columns in the Hive table.

Flume入门介绍

4.4 channel

 Channel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理 几个Source的写入操作和几个Sink的读取操作。

        Flume自带两种Channel:Memory ChannelFile Channel

        Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应 该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。

        File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。

4.5 event

            传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。Event由HeaderBody两部分组成,Header用来存放该event的

     一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组。

        Flume入门介绍

五、入门结束

以上便是针对Flume的一个简单的介绍。其他的需要跟着相关的案例走,多走几遍就通了。看了别人的博客,为啥都写的那么好看?