1. 程式人生 > >Hadoop-No.15之Flume基於事件的資料收集和處理

Hadoop-No.15之Flume基於事件的資料收集和處理

Flume是一種分散式的可靠開源系統,用於流資料的高效收集,聚集和移動.Flume通常用於移動日誌資料.但是也能移動大量事件資料.如社交媒體訂閱,訊息佇列事件或者網路流量資料.

Flume架構

這裡寫圖片描述

  • Flume的資料來源使用來自外部資料來源的時間,然後轉發到Channel中.外部資料來源可以是任何一個能夠產生事件的系統.比如Twitter這樣的社交媒體網站,機器日誌,或者訊息佇列.實施Flume資料來源的目的是使用來源於特定外部資料來源的時間.很多資料來源都能關於Flume一起使用.包括AvroSource,SpoolDirectorySource,HTTPSource與JMSSource.

  • Flume 攔截器能夠攔截時間,並且能在傳輸過程中對事件做出修改 .Flume攔截器還能夠轉化時間,豐富時間或者實時Java類任何一種基本的操作.攔截器常用於格式化,分割槽,過濾,分片,驗證,或者將源資料用於事件

  • 選擇器為事件提供了路徑.使用者能夠使用選擇器將時間傳送到零至多個路徑.正因為如此,如果需要分至多個Channel,或者需要基於事件傳送到特定的Channel,那麼選擇器會非常有用.

  • Flume Channel儲存事件,直到填滿一個Sink.最常用的Channel為Memory Channel與File Channel. Memory Channel 將事件儲存於記憶體.在Channel之重提供了最佳效能.但是如果處理或者主機操作失靈,將會丟失時間,導致可靠性降到最低.更為常用的磁碟Channel通過磁碟的持久儲存提供更持久的事件儲存.選擇正確的Channel是一個很重要的構架決策,需要平衡效能與永續性.

  • Sink將事件從Channel中移除並傳輸到目的位置.目的位置可能是事件的最終目標系統.或者可以進一步進行Flume處理的位置.常用的Flume Sink是HDFS Sink.顧名思義,他會將事件寫入HDFS檔案中

  • Flume agent是這些元件的容器.承載著Flume資料來源,Sink,Channel等JVM程序

Flume的特點

  • 可靠性

    事件會一直在Channel中儲存,直到傳輸到下一個階段

  • 可恢復性

    事件可以持久化到硬碟,然後在出現錯誤時回覆

  • 宣告式

    無需編碼,配置會指定各元件的組合方式

  • 高度定製化

    儘管Flume包含大量的資料來源,Sink以及框架外的組成,但它提供高度可插拔的框架,能按照使用者的需求定製化的市縣.