天天看點

大資料生态圈之 Flume(一)

一、Flume 概述

       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。

常用架構一:

大資料生态圈之 Flume(一)

 将多個agent收集到的資料統一放到一個agent上去處理。

常用架構二:(設定多個agent的flow)

大資料生态圈之 Flume(一)

 左側agent通過Source收集資料,采用Avro Sink将資料寫出;右側Agent通過avro Source将資料收集,通過Sink将資料導出。

常用架構三:(将一個agent裡的資料sink到不同目的地)

大資料生态圈之 Flume(一)

三、同類産品對比

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