Tutorial Apache Flume: Ce este, ArchiExemplu de tectură și Hadoop

Ce este Apache Flume în Hadoop?

Apache Flume este un sistem fiabil și distribuit pentru colectarea, agregarea și mutarea unor cantități masive de date de jurnal. Are o arhitectură simplă, dar flexibilă, bazată pe fluxuri de date în flux. Apache Flume este folosit pentru a colecta date de jurnal prezente în fișierele jurnal de pe serverele web și pentru a le agrega în HDFS pentru analiză.

Flume în Hadoop acceptă mai multe surse, cum ar fi –

  • „tail” (care transmite date dintr-un fișier local și scrie în HDFS prin Flume, similar cu comanda Unix „tail”)
  • Jurnalele de sistem
  • Apache log4j (permite Java aplicații pentru a scrie evenimente în fișiere în HDFS prin Flume).

uluc Architectură

A Agent de canalizare este FMV proces care are 3 componente -Sursa canalului, Canalul Flume și Chiuveta Flume– prin care evenimentele se propagă după ce au fost inițiate la o sursă externă.

uluc Architectură
uluc Architectură
  1. În diagrama de mai sus, evenimentele generate de sursa externă (WebServer) sunt consumate de Flume Data Source. Sursa externă trimite evenimente către sursa Flume într-un format care este recunoscut de sursa țintă.
  2. Flume Source primește un eveniment și îl stochează pe unul sau mai multe canale. Canalul acționează ca un magazin care păstrează evenimentul până când este consumat de chiuveta canalului. Acest canal poate folosi un sistem de fișiere local pentru a stoca aceste evenimente.
  3. Flume sink elimină evenimentul de pe un canal și îl stochează într-un depozit extern, cum ar fi, de exemplu, HDFS. Ar putea exista mai mulți agenți de canal, caz în care chiuveta de canal înaintează evenimentul către sursa canalului următor agent de canal din flux.

Câteva caracteristici importante ale FLUME

  • Flume are un design flexibil bazat pe fluxuri de date în flux. Este tolerant la erori și robust, cu mai multe erori și mecanisme de recuperare. Flume Big Data are diferite niveluri de fiabilitate de oferit, inclusiv „livrare cu cel mai bun efort” si un „livrare de la capăt la capăt”. Livrare cu cel mai bun efort nu tolerează nicio defecțiune a nodului Flume, în timp ce „livrare de la capăt la capăt” modul garantează livrarea chiar și în cazul defecțiunilor multiple ale nodurilor.
  • Flume transportă date între surse și chiuvete. Această colectare de date poate fi fie programată, fie determinată de evenimente. Flume are propriul motor de procesare a interogărilor, care facilitează transformarea fiecărui lot nou de date înainte de a fi mutat în chiuveta dorită.
  • Posibil Flume se scufundă include HDFS și HBase. Flume Hadoop poate fi folosit și pentru a transporta date despre evenimente, inclusiv, dar fără a se limita la, date de trafic din rețea, date generate de site-urile de social media și mesaje de e-mail.

Flume, biblioteca și configurarea codului sursă

Înainte de a începe cu procesul propriu-zis, asigurați-vă că aveți Hadoop instalat. Schimbați utilizatorul în „hduser” (id-ul folosit în timpul configurației Hadoop, puteți comuta la userid-ul folosit în timpul configurației Hadoop)

Flume, Biblioteca și Configurarea codului sursă

Pas 1) Creați un director nou cu numele „FlumeTutorial”

sudo mkdir FlumeTutorial
  1. Oferă permisiuni de citire, scriere și execuție
    sudo chmod -R 777 FlumeTutorial
  2. Copiați fișierele MyTwitterSource.java și MyTwitterSourceForFlume.java în acest director.

Descărcați fișierele de intrare de aici

Verificați permisiunile de fișiere ale tuturor acestor fișiere și dacă permisiunile de „citire” lipsesc, acordați aceleași

Flume, Biblioteca și Configurarea codului sursă

Pas 2) Descărcați „Apache Flume” de pe un site- https://flume.apache.org/download.html

Apache Flume 1.4.0 a fost folosit în acest tutorial Flume.

Flume, Biblioteca și Configurarea codului sursă

Următorul Faceți clic

Flume, Biblioteca și Configurarea codului sursă

Pas 3) Copiați tarball-ul descărcat în directorul la alegere și extrageți conținutul utilizând următoarea comandă

sudo tar -xvf apache-flume-1.4.0-bin.tar.gz

Flume, Biblioteca și Configurarea codului sursă

Această comandă va crea un nou director numit apache-flume-1.4.0-bin și extrageți fișiere în el. Acest director va fi denumit in restul articolului.

Pas 4) Configurarea bibliotecii Flume

Copiați twitter4j-core-4.0.1.jar, flume-ng-configuration-1.4.0.jar, flume-ng-core-1.4.0.jar, flume-ng-sdk-1.4.0.jar la

/lib/

Este posibil ca unul sau toate JAR-urile copiate să fie nevoite să execute permisiunea. Acest lucru poate cauza o problemă cu compilarea codului. Deci, revocați permisiunea de execuție pe un astfel de JAR.

În cazul meu, twitter4j-core-4.0.1.jar a fost trebuind să execute permisiunea. L-am revocat ca mai jos -

sudo chmod -x twitter4j-core-4.0.1.jar

Flume, Biblioteca și Configurarea codului sursă

După această comandă, dă permisiunea de „citire”. twitter4j-core-4.0.1.jar pentru toti.

sudo chmod +rrr /usr/local/apache-flume-1.4.0-bin/lib/twitter4j-core-4.0.1.jar

Vă rugăm să rețineți că am descărcat-

– twitter4j-core-4.0.1.jar din https://mvnrepository.com/artifact/org.twitter4j/twitter4j-core

- Toate borcanele cu flacără, adică flume-ng-*-1.4.0.jar din http://mvnrepository.com/artifact/org.apache.flume

Încărcați date de pe Twitter folosind Flume

Pas 1) Accesați directorul care conține fișiere de cod sursă.

Pas 2) set CLASSPATH a contine /lib/* și ~/FlumeTutorial/flume/mytwittersource/*

export CLASSPATH="/usr/local/apache-flume-1.4.0-bin/lib/*:~/FlumeTutorial/flume/mytwittersource/*"

Încărcați date de pe Twitter folosind Flume

Pas 3) Compilați codul sursă folosind comanda-

javac -d . MyTwitterSourceForFlume.java MyTwitterSource.java

Încărcați date de pe Twitter folosind Flume

Pas 4)Creați un borcan

Mai întâi, creați Manifest.txt fișier folosind un editor de text la alegere și adăugați linia de mai jos în el-

Main-Class: flume.mytwittersource.MyTwitterSourceForFlume

.. Aici flume.mytwittersource.MyTwitterSourceForFlume este numele clasei principale. Vă rugăm să rețineți că trebuie să apăsați tasta Enter la sfârșitul acestui rând.

Încărcați date de pe Twitter folosind Flume

Acum, creează JAR 'MyTwitterSourceForFlume.jar' la fel de-

jar cfm MyTwitterSourceForFlume.jar Manifest.txt flume/mytwittersource/*.class

Încărcați date de pe Twitter folosind Flume

Pas 5) Copiați acest borcan în /lib/

sudo cp MyTwitterSourceForFlume.jar <Flume Installation Directory>/lib/

Încărcați date de pe Twitter folosind Flume

Pas 6) Accesați directorul de configurare al Flume, /conf

Dacă flume.conf nu există, atunci copiați flume-conf.properties.template și redenumiți-l în flume.conf

sudo cp flume-conf.properties.template flume.conf

Încărcați date de pe Twitter folosind Flume

If flume-env.sh nu există, atunci copiați flume-env.sh.template și redenumiți-l în flume-env.sh

sudo cp flume-env.sh.template flume-env.sh

Încărcați date de pe Twitter folosind Flume

Crearea unei aplicații Twitter

Pas 1) Creați o aplicație Twitter conectându-vă la https://developer.twitter.com/

Crearea unei aplicații Twitter

Crearea unei aplicații Twitter

Pas 2) Accesează „Aplicațiile mele” (Această opțiune este abandonată când 'Ou' se face clic pe butonul din colțul din dreapta sus)

Crearea unei aplicații Twitter

Pas 3) Creați o nouă aplicație făcând clic „Creați o nouă aplicație”

Pas 4) Completați detaliile aplicației specificând numele aplicației, descrierea și site-ul web. Puteți consulta notele date sub fiecare casetă de introducere.

Crearea unei aplicații Twitter

Pas 5) Derulați în jos în pagină și acceptați termenii prin marcare 'Da sunt de acord' și faceți clic pe butonul„Creează-ți aplicația Twitter”

Crearea unei aplicații Twitter

Pas 6) În fereastra unei aplicații nou create, accesați fila, „Chei API” derulați în jos în pagină și faceți clic pe butonul „Creează-mi tokenul de acces”

Crearea unei aplicații Twitter

Crearea unei aplicații Twitter

Pas 7) Reincarca Pagina.

Pas 8) Faceţi clic pe „Testați OAuth”. Aceasta se va afișa „OAuth” setările aplicației.

Crearea unei aplicații Twitter

Pas 9) Modifica „flume.conf” folosindu-le Setări OAuth. Pași de modificat „flume.conf” sunt prezentate mai jos.

Crearea unei aplicații Twitter

Trebuie să copiem cheia consumatorului, secretul consumatorului, simbolul de acces și secretul jetonului de acces pentru a actualiza „flume.conf”.

Notă: Aceste valori aparțin utilizatorului și, prin urmare, sunt confidențiale, deci nu ar trebui să fie partajate.

Modificați fișierul „flume.conf”.

Pas 1) Operatii Deschise „flume.conf” în modul de scriere și setați valori pentru parametrii de mai jos -

sudo gedit flume.conf

Copiați conținutul de mai jos-

MyTwitAgent.sources = Twitter
MyTwitAgent.channels = MemChannel
MyTwitAgent.sinks = HDFS
MyTwitAgent.sources.Twitter.type = flume.mytwittersource.MyTwitterSourceForFlume
MyTwitAgent.sources.Twitter.channels = MemChannel 
MyTwitAgent.sources.Twitter.consumerKey = <Copy consumer key value from Twitter App>
MyTwitAgent.sources.Twitter.consumerSecret = <Copy consumer secret value from Twitter App>
MyTwitAgent.sources.Twitter.accessToken = <Copy access token value from Twitter App>
MyTwitAgent.sources.Twitter.accessTokenSecret = <Copy access token secret value from Twitter App>
MyTwitAgent.sources.Twitter.keywords = guru99
MyTwitAgent.sinks.HDFS.channel = MemChannel
MyTwitAgent.sinks.HDFS.type = hdfs
MyTwitAgent.sinks.HDFS.hdfs.path = hdfs://localhost:54310/user/hduser/flume/tweets/
MyTwitAgent.sinks.HDFS.hdfs.fileType = DataStream
MyTwitAgent.sinks.HDFS.hdfs.writeFormat = Text
MyTwitAgent.sinks.HDFS.hdfs.batchSize = 1000
MyTwitAgent.sinks.HDFS.hdfs.rollSize = 0
MyTwitAgent.sinks.HDFS.hdfs.rollCount = 10000
MyTwitAgent.channels.MemChannel.type = memory
MyTwitAgent.channels.MemChannel.capacity = 10000
MyTwitAgent.channels.MemChannel.transactionCapacity = 1000

Modificați fișierul „Flume.conf”.

Pas 2) De asemenea, setați TwitterAgent.sinks.HDFS.hdfs.path ca mai jos,

TwitterAgent.sinks.HDFS.hdfs.path = hdfs:// : / /flume/tweets/

Modificați fișierul „Flume.conf”.

Să știu , și , vezi valoarea parametrului „fs.defaultFS” s-a instalat $HADOOP_HOME/etc/hadoop/core-site.xml

Modificați fișierul „Flume.conf”.

Pas 3) Pentru a șterge datele în HDFS, ca și când apar, ștergeți intrarea de mai jos dacă există,

TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600

Exemplu: transmiterea în flux a datelor Twitter folosind Flume

Pas 1) Operatii Deschise „flume-env.sh” în modul de scriere și setați valori pentru parametrii de mai jos,

JAVA_HOME=<Installation directory of Java>
FLUME_CLASSPATH="<Flume Installation Directory>/lib/MyTwitterSourceForFlume.jar"

Transmiterea în flux a datelor Twitter folosind Flume

Pas 2) Porniți Hadoop

$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh

Pas 3) Două dintre fișierele JAR din tarball-ul Flume nu sunt compatibile cu Hadoop 2.2.0. Deci, va trebui să urmăm pașii de mai jos din acest exemplu Apache Flume pentru a face Flume compatibil cu Hadoop 2.2.0.

a. Muta protobuf-java-2.4.1.jar din ' /lib'.

Accesează ' /lib'

CD /lib

sudo mv protobuf-java-2.4.1.jar ~/

Transmiterea în flux a datelor Twitter folosind Flume

b. Găsiți fișierul JAR „guava” ca mai jos

find . -name "guava*"

Transmiterea în flux a datelor Twitter folosind Flume

Muta guava-10.0.1.jar din ' /lib'.

sudo mv guava-10.0.1.jar ~/

Transmiterea în flux a datelor Twitter folosind Flume

c. Download guava-17.0.jar din http://mvnrepository.com/artifact/com.google.guava/guava/17.0

Transmiterea în flux a datelor Twitter folosind Flume

Acum, copiați acest fișier jar descărcat în ' /lib'

Pas 4) Accesează ' /cos' și pornește Flume ca...

./flume-ng agent -n MyTwitAgent -c conf -f <Flume Installation Directory>/conf/flume.conf

Transmiterea în flux a datelor Twitter folosind Flume

Fereastra promptului de comandă în care Flume preia Tweeturile-

Transmiterea în flux a datelor Twitter folosind Flume

Din mesajul din fereastra de comandă putem vedea că rezultatul este scris /user/hduser/flume/tweets/ director.

Acum, deschideți acest director folosind un browser web.

Pas 5) Pentru a vedea rezultatul încărcării datelor, folosind un browser deschis http://localhost:50070/ și răsfoiți sistemul de fișiere, apoi mergeți la directorul în care au fost încărcate datele, adică

/flume/tweets/

Transmiterea în flux a datelor Twitter folosind Flume