Video: Casele de marcat cu jurnal electronic, obligatorii din luna august 2024
Unele dintre datele care se termină în Sistemul Distribuit de Fișiere Hadoop (HDFS) pot ajunge acolo prin operațiuni de încărcare a bazei de date sau alte tipuri de procese discontinue. dacă doriți să capturați datele care curg în fluxurile de date de mare viteză, cum ar fi datele din jurnalul de aplicații? Apache Flume este modalitatea standard actuală de a face acest lucru cu ușurință, eficient și sigur.
Apache Flume , un alt proiect de nivel superior al Apache Software Foundation, este un sistem distribuit pentru agregarea și mutarea unor cantități mari de date streaming din diferite surse într-un magazin de date centralizat.
Puneți altfel, Flume este proiectat pentru ingestia continuă a datelor în HDFS. Datele pot fi orice fel de date, dar Flume este foarte bine adaptat la manipularea datelor jurnalului, cum ar fi datele jurnalului de pe serverele web. Unitățile de date pe care procesele Flume le numesc evenimente ; un exemplu de eveniment este un jurnal de înregistrare.
Pentru a înțelege modul în care Flume funcționează într-un cluster Hadoop, trebuie să știți că Flume rulează ca unul sau mai mulți agenți și că fiecare agent are trei componente pluggable: surse, canale și chiuvete:
-
Surse preluați datele și trimiteți-le la canale.
-
Canalele conțin cozi de date și servesc drept canale între surse și chiuvete, ceea ce este util atunci când debitul de intrare depășește debitul de ieșire.
-
Sinks procesează datele preluate din canale și le livrează către o destinație, cum ar fi HDFS.
Un agent trebuie să aibă cel puțin una din fiecare componentă pentru a rula și fiecare agent este conținut în propria instanță a mașinii virtuale Java (JVM).
Un eveniment care este scris unui canal de către o sursă nu este eliminat din acel canal până când o chiuvetă îl înlătură printr-o tranzacție. Dacă apare o eroare de rețea, canalele își țin evenimentele în așteptare până când chiuvetele le pot scrie în cluster. Un canal în memorie poate procesa rapid evenimentele, dar este volatil și nu poate fi recuperat, în timp ce un canal bazat pe fișiere oferă persistență și poate fi recuperat în caz de eșec.
Fiecare agent poate avea mai multe surse, canale și chiuvete și, deși o sursă poate scrie pe mai multe canale, un chiuvetă poate prelua date dintr-un singur canal.
Un agent este doar un JVM care execută Flume, iar chiuvetele pentru fiecare nod agent din clusterul Hadoop trimit date către nodurile colectoare , care agregă date de la mai mulți agenți înainte scriind-o în HDFS, unde poate fi analizată prin alte instrumente Hadoop. Agenții pot fi înlănțuiți împreună, astfel încât chiuveta de la un agent trimite date sursei unui alt agent.Avro, cadrul de apel și serializare de la Apache, este modul obișnuit de a trimite date printr-o rețea cu Flume, deoarece servește ca un instrument util pentru serializarea sau transformarea eficientă a datelor într-un format binar compact.
În contextul Flume, compatibilitatea este importantă: un eveniment Avro necesită o sursă Avro, de exemplu, și o chiuvetă trebuie să furnizeze evenimente adecvate destinației.
Ceea ce face acest lanț mare de surse, canale și chiuvete să funcționeze este configurația agentului Flume, care este stocată într-un fișier text local care este structurat ca un fișier de proprietăți Java. Puteți configura mai mulți agenți în același fișier. Uită-te la un exemplu de fișier, care este numit flume-agent. conf - este setat să configurezi un agent numit shaman:
# Identifică componentele pe agent shaman: shaman. surse = netcat_s1 shaman. chiuvete = hdfs_w1 șaman. canale = in-mem_c1 # Configurați sursa: shaman. surse. netcat_s1. tip = netcat shaman. surse. netcat_s1. bind = localhost shaman. surse. netcat_s1. port = 44444 # Descrieți chiuveta: șaman. chiuvete. hdfs_w1. tip = hdfs shaman. chiuvete. hdfs_w1. hdfs. calea = hdfs: // shaman. chiuvete. hdfs_w1. hdfs. writeFormat = Textul șamanului. chiuvete. hdfs_w1. hdfs. fileType = DataStream # Configurați un canal care stochează evenimente în memorie: shaman. canale. în-mem_c1. tip = memorie shaman. canale. în-mem_c1. capacitate = 20000 shaman. canale. în-mem_c1. transactionCapacity = 100 # Legați sursa și chiuveta la canal: shaman. surse. netcat_s1. canale = in-mem_c1 shaman. chiuvete. hdfs_w1. canale = in-mem_c1
Fișierul de configurare include proprietăți pentru fiecare sursă, canal și chiuveta în agent și specifică modul în care sunt conectate. În acest exemplu, agentul shaman are o sursă care ascultă datele (mesajele către netcat) de pe portul 44444, un canal care tamponează datele evenimentului din memorie și un chiuveta care înregistrează datele evenimentului în consola.
Acest fișier de configurare ar fi putut fi folosit pentru a defini mai mulți agenți; aici, configurați doar unul pentru a păstra lucrurile simple.
Pentru a porni agentul, utilizați un script shell denumit flume-ng, care este localizat în directorul bin al distribuției Flume. Din linia de comandă, lansați comanda agent, specificând calea către fișierul de configurare și numele agentului.
Următoarea comandă de probă pornește agentul Flume:
agentul flume-ng -f / -n shaman
Jurnalul agentului Flume trebuie să aibă intrări care să verifice că sursa, canalul și chiuveta au pornit cu succes.
Pentru a testa configurația, poți să trimiți portul 44444 de la un alt terminal și să trimiți un eveniment Flume introducând un șir de text arbitrar. Dacă totul merge bine, terminalul inițial Flume va afișa evenimentul într-un mesaj de jurnal pe care ar trebui să îl puteți vedea în jurnalul agentului.