天天看點

Flume學習之路 (三)Flume的配置方式一、單一代理流配置二、單代理多流配置三、配置多代理流程四、多路複用流

http://flume.apache.org/FlumeUserGuide.html#avro-source

通過一個通道将來源和接收器連結。需要列出源,接收器和通道,為給定的代理,然後指向源和接收器及通道。一個源的執行個體可以指定多個通道,但隻能指定一個接收器執行個體。格式如下:

執行個體解析:一個代理名為agent_foo,外部通過avro用戶端,并且發送資料通過記憶體通道給hdfs。在配置檔案foo.config的可能看起來像這樣:

案例說明:這将使事件流從avro-appserver-src-1到hdfs-sink-1通過記憶體通道mem-channel-1。當代理開始foo.config作為其配置檔案,它會執行個體化流。

配置單個元件

定義流之後,需要設定每個源,接收器和通道的屬性。可以分别設定元件的屬性值。

“type”屬性必須為每個元件設定,以了解它需要什麼樣的對象。每個源,接收器和通道類型有其自己的一套,它所需的性能,以實作預期的功能。所有這些,必須根據需要設定。在前面的例子中,從hdfs-sink-1中的流到HDFS,通過記憶體通道mem-channel-1的avro-appserver-src-1源。下面是 一個例子,顯示了這些元件的配置。

通過flume來監控一個目錄,當目錄中有新檔案時,将檔案内容輸出到控制台。

建立一個test01.conf的檔案:

啟動指令

測試 Flume

重新打開一個終端,我們将123.log移動到logs目錄

原始的Flume終端将在日志消息中輸出事件:

案例2:實時模拟從web伺服器中讀取資料到hdfs中

此處使用 exec source 詳細參考 上一節裡面的 2.3 Exec Source 介紹

單個Flume代理可以包含幾個獨立的流。你可以在一個配置檔案中列出多個源,接收器和通道。這些元件可以連接配接形成多個流。

可以連接配接源和接收器到其相應的通道,設定兩個不同的流。例如,如果需要設定一個agent_foo代理兩個流,一個從外部Avro用戶端到HDFS,另外一個是tail的輸出到Avro接收器,然後在這裡是做一個配置。

設定一個多層的流,需要有一個指向下一跳avro源的第一跳的avro 接收器。這将導緻第一Flume代理轉發事件到下一個Flume代理。例如,如果定期發送的檔案,每個事件(1檔案)AVRO用戶端使用本地Flume 代理,那麼這個當地的代理可以轉發到另一個有存儲的代理。

配置如下:

Weblog agent config:

HDFS agent config:

這裡連接配接從weblog-agent的avro-forward-sink 到hdfs-agent的avro-collection-source收集源。最終結果從外部源的appserver最終存儲在HDFS的事件。

建立一個case_avro.conf的檔案:

建立一個case_avro_sink.conf的檔案:

說明:case_avro_sink.conf是前面的Agent,case_avro.conf是後面的Agent

先啟動Avro的Source,監聽端口

再啟動Avro的Sink

可以看到已經建立連接配接

Flume學習之路 (三)Flume的配置方式一、單一代理流配置二、單代理多流配置三、配置多代理流程四、多路複用流

在Avro Sink上生成測試log

檢視結果:

Flume學習之路 (三)Flume的配置方式一、單一代理流配置二、單代理多流配置三、配置多代理流程四、多路複用流

Flume支援扇出流從一個源到多個通道。有兩種模式的扇出,複制和複用。在複制流的事件被發送到所有的配置通道。在複用的情況下,事件被發送到合格的渠 道隻有一個子集。扇出流,需要指定源和扇出通道的規則。這是通過添加一個通道“選擇”,可以複制或複用。再進一步指定選擇的規則,如果它是一個多路。如果你 不指定一個選擇,則預設情況下它複制。

複用的選擇集的屬性進一步分叉。這需要指定一個事件屬性映射到一組通道。選擇配置屬性中的每個事件頭檢查。如果指定的值相比對,那麼該事件被發送到所有的通道映射到該值。如果沒有比對,那麼該事件被發送到設定為預設配置的通道。

映射允許每個值通道可以重疊。預設值可以包含任意數量的通道。下面的示例中有一個單一的流複用兩條路徑。代理有一個單一的avro源和連接配接道兩個接收器的兩個通道。

“State”作為Header的選擇檢查。如果值是“CA”,然後将其發送到mem-channel-1,如果它的“AZ”的,那麼jdbc- channel-2,如果它的“NY”那麼發到這兩個。如果“State”頭未設定或不比對的任何三個,然後去預設的mem-channel-1通道。

case_replicate_sink.conf

case_replicate_s1.conf

case_replicate_s2.conf

先啟動Avro的Source,監聽端口

生成測試log

case_multi_sink.conf

case_ multi _s1.conf

case_ multi _s2.conf

根據配置檔案生成測試的header 為state的POST請求