1. 程式人生 > >Flume.apache.org 官方文件學習筆記 part three

Flume.apache.org 官方文件學習筆記 part three

    JMS 源:         jms源閱讀從jms目的地發來的資訊,例如佇列,主題等。  作為一個jms應用程式,他應該和jms提供程式一起工作,但是僅使用ActiveMQ進行測試。JMS源提供可配置的批量大小,訊息選擇器,使用者/傳遞還有訊息到接收器事件轉換器。 要注意的是,供應商提供的jms jar包 應該包括在flume的類路徑中,使用plugins.d目錄(首選),命令列上的-classpath或者flume-env.sh檔案中的FLUME_CLASSPATH 變數。

        要求的屬性用粗體表示了:         

目錄池資料來源(Spooling Directory Source):         這個源能讓你通過將要攝取的檔案放入到磁碟上的“Spooling”目錄來攝取資料.此源將讀取新檔案的指定目錄,並且會在新檔案出現的時候解析事件。 事件解析邏輯是可插入的。當給出的檔案已經被完全讀取到通道之後,它就會被重新命名,以指出已經完成(或者可選地刪除)。

        跟Exec源不同,即使Flume重啟,或者被停止,此源都是可靠的,並且資料不會丟失。作為此可靠性的代價,只能將不可變的,獨特命名的檔案放入該目錄。 Flume嘗試去檢測這些問題,如果違反了就會指出失敗:         1.如果在放入假離線目錄之後,還對檔案進行寫入,那麼Flume就會打印出一個錯誤到日誌檔案,並且結束這個程序。         2.如果一個檔案的名字在後面一段時間又被使用了,那麼Flume也會列印一個錯誤到日誌檔案,並且結束該程序。

        為了避免上述這些問題,當一些檔案被放入spooling目錄的時候,為他們增加一個獨一無二的標示符去記錄檔名字,可能是有效的。

        不管此源如何保證可靠性,這兒肯定還是有一些情況出現,如果確定下游發生了錯誤,那麼Events可能會重複。  這跟其他Flume元件提供的保證是一樣的。

名為a-1的代理的示例:             a1.channels = ch-1         a1.sources = src-1

        a1.sources.src-1.type = spooldir         a1.sources.src-1.channels = ch-1         a1.sources.src-1.spoolDir = /var/log/apache/flumeSpool         a1.sources.src-1.fileHeader = true

        事件反序列化器:             以下事件反序列化器隨Flume一起提供             LINE                 這個反序列化器文字輸入的每一行都會生成一個事件。

        BlobDeserializer                 這個反序列化器每個事件讀取二進位制大物件(BLOB),典型地一個BLOB一個檔案.例如,一個PDF或者JPG檔案。 注意的是,這個方法並不適用於特別大的物件,因為整個BLOB是緩衝在RAM中的。

Taildir Source               注意:此源是作為一個預覽特徵來供的,它並不能在Windows上執行。              檢視特定的檔案,並在檢測到新增到每個檔案的新的行後幾乎實時地拖尾它們。 如果正在寫入新行,這個源就會在等待寫入完成的時間內重新嘗試讀取它們。

             此源是可靠的,並且不會丟失資料,即使實在尾部檔案輪流替換的時候。 它定期地寫每個檔案最後讀取的位置到給出的檔案位置,採用json的格式。              如果flume停止或者因為某些原因停掉了,它也能按照存在的寫入位置檔案中的尾部尾部位置重啟。               在另一種情況,此源也能用給出的位置檔案啟動tailing在每個檔案的任意位置。當沒有位置檔案在指定的路徑的時候,它將會在每個檔案的第一行預設啟動tailing。

             檔案會被按照他們被修改的事件順序消耗。 那些修改事件最久的檔案會被第一個消耗。

             此源不重新命名、刪除或者修改這些被tailed的檔案。當前,此源不支援tailing 二進位制檔案。 它會一行一行地讀取文字檔案。      

       

Twitter 1% firehose Source(experimental)

             警告:此源是高度實驗性的(應該意思就是沒測試好),可能會在次要版本的Flume之間發生變化。 風險自己承擔。

             通過Streaming-API連線到1% 簡單twitter firehose的實驗源,不斷推文,並將下載的轉成Avro格式然後傳送Avro事件到下流Flume接收器。要求消耗和連線符號還有推特開發者的賬戶密碼。需要的屬性都被粗體標識了: