一、Flume 概述

       Flume是一种分布式的、可靠的和可用的服务,用于有效地收集、聚合和移动大量日志数据。它具有简单灵活的基于流数据流的体系结构。它具有健壮性和容错性,具有可调可靠性机制和多种故障转移和恢复机制。它使用了一个简单的可扩展数据模型,允许在线分析应用程序。

二、Flume 架构和核心组件        

flume使用jindosdk写入oss flume sink_Source

        1、Source(收集):Source负责我们从什么地方去采集数据,支持的形式有Avro Source、Thrift Source、Kafka Source、Spooling Source、Exec Source、也可根据具体需求自定义Source。

        2、Channel(聚集):常用的形式有Memory Channel、File Channel、Kafka Channel。

        3、Sink(输出):常用的形式有HDFS Sink、Hive Sink、Avro Sink、Hbase Sink(同步、异步)、Kafka Sink。

常用架构一:

flume使用jindosdk写入oss flume sink_Source_02

 将多个agent收集到的数据统一放到一个agent上去处理。

常用架构二:(设置多个agent的flow)

flume使用jindosdk写入oss flume sink_数据_03

 左侧agent通过Source收集数据,采用Avro Sink将数据写出;右侧Agent通过avro Source将数据收集,通过Sink将数据导出。

常用架构三:(将一个agent里的数据sink到不同目的地)

flume使用jindosdk写入oss flume sink_Apache_04

三、同类产品对比

       Flume:Cloudera/Apache开发维护的,底层采用的是Java。

       Scribe:Facebook开发维护的,C/C++,目前已经不再维护。

       Chukwa:Yahoo/Apache开发维护的,底层采用Java,目前已经不再维护。

       Fluentd:Ruby开发维护的,和Flume差不多日志收集器。

       Logstash:ELK(ElasticSearch,Kibana),目前也比较火热。

四、Flume发展史

       Flume最开始是由Cloudera提出的,第一个版本为0.9.2,当时叫做 Flume-OG。然后在2011年有一个重大的历史变更,将Flume-OG更新为Flume-NG,并且贡献给Apache(Flume-728)。在2012年7月份的时候,诞生了1.0版本;2015.5诞生了1.6版本,目前最新是1.7版本。(建议使用1.0+的版本)

五、Flume&JDK环境部署

Flume安装前置条件:

       1、Java运行环境必须是1.7或1.7+的版本。

       2、被source、channels、sink使用的内存要足够。

       3、机器的磁盘空间要足够,用来存放数据。

       4、目录的使用权限,相对应的目录必须要有读写权限。

安装步骤:

       1、安装JDK,并配置环境变量。

       2、下载Flume并解压(去cdh找到对应的版本,wget下载就行)

       3、配置一下Flume的环境变量,安装完成。