Apache Flume - NetCat Source

Questo capitolo prende un esempio per spiegare come generare eventi e successivamente registrarli nella console. Per questo, stiamo usando ilNetCat fonte e il logger Lavello.

Prerequisiti

Per eseguire l'esempio fornito in questo capitolo, è necessario installare Flume.

Configurazione di Flume

Dobbiamo configurare l'origine, il canale e il sink utilizzando il file di configurazione in confcartella. L'esempio fornito in questo capitolo utilizza un fileNetCat Source, Memory channele a logger sink.

NetCat Source

Durante la configurazione dell'origine NetCat, dobbiamo specificare una porta durante la configurazione dell'origine. Ora la sorgente (sorgente NetCat) ascolta la porta data e riceve ogni riga che abbiamo inserito in quella porta come un singolo evento e la trasferisce al sink attraverso il canale specificato.

Durante la configurazione di questa sorgente, è necessario fornire valori alle seguenti proprietà:

  • channels

  • Source type - netcat

  • bind - Nome host o indirizzo IP da associare.

  • port - Numero di porta su cui si desidera che la sorgente ascolti.

Canale

Stiamo usando il memorycanale. Per configurare il canale di memoria, è necessario fornire un valore al tipo di canale. Di seguito è riportato l'elenco delle proprietà che è necessario fornire durante la configurazione del canale di memoria:

  • type- Contiene il tipo di canale. Nel nostro esempio, il tipo èMemChannel.

  • Capacity- È il numero massimo di eventi memorizzati nel canale. Il suo valore predefinito è 100. (opzionale)

  • TransactionCapacity- È il numero massimo di eventi che il canale accetta o invia. Il suo valore predefinito è 100. (opzionale).

Logger Sink

Questo sink registra tutti gli eventi ad esso passati. In genere, viene utilizzato per scopi di test o debug. Per configurare questo sink, è necessario fornire i seguenti dettagli.

  • Channel

  • type - logger

File di configurazione di esempio

Di seguito è riportato un esempio del file di configurazione. Copia questo contenuto e salva con nomenetcat.conf nella cartella conf di Flume.

# 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

Esecuzione

Sfoglia la home directory di Flume ed esegui l'applicazione come mostrato di seguito.

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

Se tutto va bene, la sorgente inizia ad ascoltare la porta specificata. In questo caso, lo è56565. Di seguito è riportata l'istantanea della finestra del prompt dei comandi di una sorgente NetCat che è stata avviata e in ascolto sulla porta 56565.

Passaggio di dati all'origine

Per passare i dati alla sorgente NetCat, è necessario aprire la porta indicata nel file di configurazione. Aprire un terminale separato e connettersi alla sorgente (56565) utilizzando ilcurlcomando. Quando la connessione ha esito positivo, riceverai un messaggio "connected" come mostrato di seguito.

$ curl telnet://localhost:56565 
connected

Ora puoi inserire i tuoi dati riga per riga (dopo ogni riga, devi premere Invio). La sorgente NetCat riceve ogni riga come un singolo evento e riceverai un messaggio ricevuto "OK".

Ogni volta che hai finito di passare i dati, puoi uscire dalla console premendo (Ctrl+C). Di seguito è riportata l'istantanea della console in cui ci siamo collegati alla sorgente utilizzando ilcurl comando.

Ciascuna riga inserita nella console di cui sopra verrà ricevuta come evento individuale dalla sorgente. Dal momento che abbiamo utilizzato ilLogger sink, questi eventi verranno registrati nella console (console di origine) tramite il canale specificato (canale di memoria in questo caso).

La seguente istantanea mostra la console NetCat in cui vengono registrati gli eventi.