一、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的環境變量,安裝完成。