一、Flume 概述
Flume是一种分布式的、可靠的和可用的服务,用于有效地收集、聚合和移动大量日志数据。它具有简单灵活的基于流数据流的体系结构。它具有健壮性和容错性,具有可调可靠性机制和多种故障转移和恢复机制。它使用了一个简单的可扩展数据模型,允许在线分析应用程序。
二、Flume 架构和核心组件
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。
常用架构一:
将多个agent收集到的数据统一放到一个agent上去处理。
常用架构二:(设置多个agent的flow)
左侧agent通过Source收集数据,采用Avro Sink将数据写出;右侧Agent通过avro Source将数据收集,通过Sink将数据导出。
常用架构三:(将一个agent里的数据sink到不同目的地)
三、同类产品对比
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的环境变量,安装完成。