Apache Flume - NetCat 原始碼



本章以一個示例解釋如何生成事件並隨後將其記錄到控制檯。為此,我們使用NetCat源和logger接收器。

先決條件

要執行本章提供的示例,您需要安裝Flume

配置 Flume

我們必須使用conf資料夾中的配置檔案來配置源、通道和接收器。本章提供的示例使用NetCat 源、記憶體通道logger 接收器

NetCat 源

在配置 NetCat 源時,我們必須在配置源時指定一個埠。現在,源(NetCat 源)監聽給定埠,並將我們在此埠輸入的每一行作為單個事件接收,並透過指定的通道將其傳輸到接收器。

配置此源時,您必須為以下屬性提供值:

  • 通道

  • 源型別 - netcat

  • bind - 要繫結的主機名或 IP 地址。

  • port - 我們希望源監聽的埠號。

通道

我們使用memory通道。要配置記憶體通道,您必須為通道型別提供一個值。以下是配置記憶體通道時需要提供的屬性列表:

  • type - 它包含通道的型別。在我們的示例中,型別為MemChannel

  • Capacity - 儲存在通道中的事件的最大數量。其預設值為 100。(可選)

  • TransactionCapacity - 通道接受或傳送的事件的最大數量。其預設值為 100。(可選)。

Logger 接收器

此接收器記錄傳遞給它的所有事件。通常,它用於測試或除錯目的。要配置此接收器,您必須提供以下詳細資訊。

  • 通道

  • type - logger

示例配置檔案

以下是配置檔案的示例。複製此內容並將其另存為 Flume 的 conf 資料夾中的netcat.conf

# Naming the components on the current agent
NetcatAgent.sources = Netcat   
NetcatAgent.channels = MemChannel 
NetcatAgent.sinks = LoggerSink  

# Describing/Configuring the source 
NetcatAgent.sources.Netcat.type = netcat 
NetcatAgent.sources.Netcat.bind = localhost
NetcatAgent.sources.Netcat.port = 56565  

# Describing/Configuring the sink 
NetcatAgent.sinks.LoggerSink.type = logger  

# Describing/Configuring the channel 
NetcatAgent.channels.MemChannel.type = memory 
NetcatAgent.channels.MemChannel.capacity = 1000 
NetcatAgent.channels.MemChannel.transactionCapacity = 100 
 
# Bind the source and sink to the channel 
NetcatAgent.sources.Netcat.channels = MemChannel
NetcatAgent.sinks.LoggerSink.channel = MemChannel

執行

瀏覽 Flume 主目錄並按如下所示執行應用程式。

$ cd $FLUME_HOME
$ ./bin/flume-ng agent --conf $FLUME_CONF --conf-file $FLUME_CONF/netcat.conf 
   --name NetcatAgent -Dflume.root.logger=INFO,console

如果一切順利,源將開始監聽給定埠。在本例中,它是56565。以下是已啟動並監聽埠 56565 的 NetCat 源的命令提示符視窗的快照。

Execution

將資料傳遞到源

要將資料傳遞到 NetCat 源,您必須開啟配置檔案中給定的埠。開啟一個單獨的終端並使用curl命令連線到源 (56565)。連線成功後,您將收到一條“connected”訊息,如下所示。

$ curl telnet://:56565 
connected 

現在您可以逐行輸入您的資料(每行之後,您都必須按 Enter 鍵)。NetCat 源將每一行作為單個事件接收,您將收到一條“OK”訊息。

完成資料傳遞後,您可以按 (Ctrl+C) 退出控制檯。以下是使用curl命令連線到源的控制檯快照。

Passing Data

以上控制檯中輸入的每一行都將被源作為單個事件接收。由於我們使用了Logger接收器,這些事件將透過指定的通道(在本例中為記憶體通道)記錄到控制檯(源控制檯)。

以下快照顯示了記錄事件的 NetCat 控制檯。

NetCat console
廣告
© . All rights reserved.