1. 程式人生 > >www808888webcom基金的一個開源項目19908836661也是apache基金的一個開源

www808888webcom基金的一個開源項目19908836661也是apache基金的一個開源

攔截 .com 之間 sha 提取數據 top 官方網站 期望 過程

Flume也是apache基金的一個開源項目,由cloudera公司開發的一款分布式、高可靠、高可用的日誌傳輸工具。其以agent為一個單位,agent由source、channel和sink構成。一個agent最少由一個source、channel和sink構成,數量可以自由組合

Source主要用來收集源數據,並對源數據進行反序列化。Source在讀取數據文件時,會遍歷日誌文件中的每一行,並把這一行封裝在一個event當中,一個event包含一個header和一個body,header是一個頭文件,存放著這個event的一些信息數據,body存放的是我們實際要傳輸的數據。

Channel是一個數據的聚合和暫時存放的地方,數據在channel中存放的時間不會很長,可以根據配置被sink取走。其類型可以為內存、jdbc和file等

Sink負責將channel的數據傳輸到目的端,並且可以在傳輸過程中指定數據落地的方式的順序。類型可以由hdfs、kafka、hbase等。

Flume的高可用和高可靠性體現在1.在source和channel之間數據傳輸和channel和sink之間用事務的方式來保證數據傳輸的可靠性,當有一個環節數據傳輸失敗時,事務會進行回滾,並進行重新傳輸。2。Flume可以通過在日誌服務器部署多套來防止單點故障的問題,當一個flume節點出現故障時,可以自動進行故障轉移。

第二部分 flume的幾種常見架構的應用

一、鏈式結構

Hadoop學習筆記系列四:hadoop項目流程-傳輸工具flume(一)

此種結構適合數據需要處理的情況,每一個agent環境進行一次數據處理,這種鏈式結構可以進行多次數據處理,並且使數據處理更加靈活。

二、分布式架構

Hadoop學習筆記系列四:hadoop項目流程-傳輸工具flume(一)

此種架構適合於避免單點故障的高可用場景和多個源數據存放的場景,通過在一臺機器上部署多個agent達到高可用,可以在多個數據源的服務器上同時進行數據源的收集。當然此種場景也可以倒過來使用,通過一個agent收集單一數據源可以分別往不用的目的端進行分發

三、網狀結構

Hadoop學習筆記系列四:hadoop項目流程-傳輸工具flume(一)

此種架構基於flume的agent的三個組件數量的靈活性,可以自由組合,滿足更復雜的業務場景。

第三部分 flume詳情和配置

技術分享圖片
一.Source

Source主要用來獲取源數據並推送給channel,source支持的類型主要有

(1) Avro source

監聽Avro端口,從Avro client streams接收events。

(2) Thrift source

監聽Thrift端口和從外部Thrift client streams接收events

(3) exec source

Exec Source在啟動時運行一個Unix命令行,並期望這過程在標準輸出上連續生產數據,經常結合linux命令的tail -f xxx.log命令來不斷獲取最新日誌

(4) JMS source

從jms目標(如隊列或者主題)讀取消息。JMS應用程序應該可以與任何JMS提供程序一起工作,但是只能使用ActiveMQ進行測試

(5) Spooling Directory source

source讓你通過放置被提取文件在磁盤”spooling“目錄下這一方式,提取數據。該source將會監控指定目錄的新增文件,當新文件出現時解析event。event解析邏輯是可插入的。當一個給定文件被全部讀取進channel之後,它被重命名,以標識為已完成(或者可選擇deleted)

(6) kaska source

Kafka Source是Apache Kafka消費者,從Kfaka topics讀取消息。如果你有多個Kafka source在跑,你可以配置它們在相同的Consumer Group,以使它們每個讀取topics獨特的分區。

(7) netcat tcp source

netcat source監聽一個給定的端口,然後把text文件的每一行轉換成一個event。

Flume source支持的類型還有很多,這裏只列舉常見的幾種,在flume的官方網站上有詳細的類型解釋和配置要求。

  1. Flume source攔截器

攔截器(interceptor)在配置在source和channel之間的,用來做數據的攔截,一般有:

(1)timestamp interceptor ,在event的header中添加一個key為timestamp,value為當前的時間戳,可以通過配置,讓source按照配置的時間範圍來給channel推送數據

(2)Host interceptor 在event的header中添加一個key為host,value為當前的機器的hostname或者ip,可以通過hostname或者ip來篩選數據

(3)Static interceptor 在event的header中自定義添加一個key value的值,按照關鍵字來篩選源數據

(4)Regex filtering interceptor 通過正則表達式來篩選包含匹配值的events

(5)Regex Extractor Interceptor 在header中添加key value值通過正則表達式來篩選合適的數據

今天先到這裏,還有幾個問題,header和event的詳情,以及詳細的安裝配置和運行,還有channel和sink留給明天吧!

www808888webcom基金的一個開源項目19908836661也是apache基金的一個開源