flume

1.1           flume(日誌收集系統)

1.1.1     flume介紹

 flume是一個分佈式、可靠、和高可用的海量日誌採集、聚合和傳輸的系統。支持在日誌系統中定製各種數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各類數據接受方(好比文本、HDFS、Hbase等)的能力 。
  flume的數據流由事件(Event)貫穿始終。事件是Flume的基本數據單位,它攜帶日誌數據(字節數組形式)而且攜帶有頭信息,這些Event由Agent外部的Source生成,當Source捕獲事件後會進行特定的格式化,而後Source會把事件推入(單個或多個)Channel中。你能夠把Channel看做是一個緩衝區,它將保存事件直到Sink處理完該事件。web

  Sink負責持久化日誌或者把事件推向另外一個Source。
  1)flume的可靠性
  當節點出現故障時,日誌可以被傳送到其餘節點上而不會丟失。Flume提供了三種級別的可靠性保障,從強到弱依次分別爲:end-to-end(收到數據agent首先將event寫到磁盤上,當數據傳送成功後,再刪除;若是數據發送失敗,能夠從新發送。),Store on failure(這也是scribe採用的策略,當數據接收方crash時,將數據寫到本地,待恢復後,繼續發送),Besteffort(數據發送到接收方後,不會進行確認)。數組

  2)flume的可恢復性
    仍是靠Channel。推薦使用FileChannel,事件持久化在本地文件系統裏(性能較差)。服務器

1.1.2     flume工做原理

Flume事件定義爲具備字節有效負載和可選字符串屬性集的數據流單元。Flume代理是一個(JVM)進程,它承載組件,事件經過組件從外部源流向下一個目標(hop)。異步

 

Flume源使用外部源(如web服務器)交付給它的事件。外部源以目標水槽源可識別的格式向水槽發送事件。例如,Avro水槽源可用於從Avro客戶機或流中的其餘水槽代理接收Avro事件,該流從Avro接收器發送事件。可使用Thrift Flume源定義相似的流,以接收來自Thrift Sink或Flume Thrift Rpc客戶機或使用Flume Thrift協議生成的任何語言編寫的Thrift客戶機的事件。當Flume源接收到一個事件時,它將其存儲到一個或多個通道中。通道是一個被動存儲,它保存事件,直到它被水槽吸取爲止。文件通道就是一個例子——它由本地文件系統支持。接收器將事件從通道中移除,並將其放入外部存儲庫中,如HDFS(經過Flume HDFS接收器)或將其轉發到流中的下一個Flume代理(下一跳)的Flume源。給定代理中的源和接收器與通道中暫存的事件異步運行。分佈式

1.1.3     flume環境搭建

1.1.4     flume配置文件案例

監控nc通訊實例性能

[/soft/flume/conf/name.conf]代理

       #聲明三種組件日誌

       a1.sources = r1進程

       a1.channels = c1事件

       a1.sinks = k1

       #定義source信息

       a1.sources.r1.type=netcat

       a1.sources.r1.bind=localhost

       a1.sources.r1.port=8888

       #定義sink信息

       a1.sinks.k1.type=logger

       #定義channel信息

       a1.channels.c1.type=memory

       #綁定在一塊兒

       a1.sources.r1.channels=c1

       a1.sinks.k1.channel=c1

相關文章
相關標籤/搜索