Vodič za Apache Flume: Što je, Archiprimjer teksture i Hadoopa

Što je Apache Flume u Hadoopu?

Apache Flume je pouzdan i distribuiran sustav za prikupljanje, agregiranje i premještanje velikih količina podataka dnevnika. Ima jednostavnu, ali fleksibilnu arhitekturu temeljenu na protoku podataka. Apache Flume koristi se za prikupljanje podataka zapisnika prisutnih u datotekama zapisnika s web poslužitelja i njihovo agregiranje u HDFS za analizu.

Flume u Hadoopu podržava više izvora kao što su –

  • 'tail' (koji prenosi podatke iz lokalne datoteke i upisuje u HDFS putem Flumea, slično Unix naredbi 'tail')
  • Dnevnici sustava
  • Apache log4j (omogućiti Java aplikacije za pisanje događaja u datoteke u HDFS putem Flumea).

Žlijeb Architektura

A Flume agent je JVM proces koji ima 3 komponente –Izvor kanala, Žlijebni kanal međutim Odvodni sudoper– kroz koje se događaji šire nakon što su pokrenuti na vanjskom izvoru.

Žlijeb Architektura
Žlijeb Architektura
  1. U gornjem dijagramu događaje koje je generirao vanjski izvor (web-poslužitelj) koristi izvor podataka Flume. Vanjski izvor šalje događaje izvoru Flume u formatu koji ciljni izvor prepoznaje.
  2. Flume Source prima događaj i pohranjuje ga u jedan ili više kanala. Kanal djeluje kao spremište koje čuva događaj sve dok ga ne potroši kanal. Ovaj kanal može koristiti lokalni sustav datoteka za pohranu ovih događaja.
  3. Flume sink uklanja događaj iz kanala i pohranjuje ga u vanjski repozitorij kao što je npr. HDFS. Može postojati više agenata kanala, u kojem slučaju ponor kanala prosljeđuje događaj izvoru kanala sljedećeg agenta kanala u toku.

Neke važne značajke FLUME-a

  • Flume ima fleksibilan dizajn temeljen na protoku podataka. Tolerantan je na greške i robustan je s višestrukim prelaskom i mehanizmima oporavka. Flume Big data nudi različite razine pouzdanosti koje uključuju 'najbolja isporuka' i 'dostava od kraja do kraja'. Najbolja isporuka ne tolerira nikakav kvar Flume čvora dok 'dostava od kraja do kraja' način rada jamči isporuku čak i u slučaju kvarova više čvorova.
  • Flume prenosi podatke između izvora i odvoda. Ovo prikupljanje podataka može biti planirano ili vođeno događajem. Flume ima vlastitu mašinu za obradu upita koja olakšava transformaciju svake nove serije podataka prije nego što se premjesti u predviđeni odvodnik.
  • Moguć Žlijebni umivaonici uključiti HDFS međutim HBase. Flume Hadoop također se može koristiti za prijenos podataka o događajima uključujući, ali ne ograničavajući se na podatke o mrežnom prometu, podatke generirane putem web stranica društvenih medija i poruke e-pošte.

Postavljanje kanala, biblioteke i izvornog koda

Prije nego počnemo sa stvarnim procesom, provjerite imate li instaliran Hadoop. Promijenite korisnika u 'hduser' (ID koji se koristi tijekom konfiguracije Hadoop-a, možete se prebaciti na ID korisnika koji se koristi tijekom vaše konfiguracije Hadoop-a)

Flume, postavljanje knjižnice i izvornog koda

Korak 1) Napravite novi direktorij pod nazivom 'FlumeTutorial'

sudo mkdir FlumeTutorial
  1. Dajte dopuštenja za čitanje, pisanje i izvršavanje
    sudo chmod -R 777 FlumeTutorial
  2. Kopirajte datoteke MyTwitterSource.java međutim MyTwitterSourceForFlume.java u ovom imeniku.

Preuzmite ulazne datoteke odavde

Provjerite dopuštenja datoteka za sve ove datoteke i ako nedostaju dopuštenja za 'čitanje', dodijelite ista-

Flume, postavljanje knjižnice i izvornog koda

Korak 2) Preuzmite 'Apache Flume' s web-mjesta- https://flume.apache.org/download.html

Apache Flume 1.4.0 korišten je u ovom vodiču za Flume.

Flume, postavljanje knjižnice i izvornog koda

Sljedeći klik

Flume, postavljanje knjižnice i izvornog koda

Korak 3) Kopirajte preuzeti tarball u direktorij po vašem izboru i ekstrahirajte sadržaj pomoću sljedeće naredbe

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

Flume, postavljanje knjižnice i izvornog koda

Ova naredba će stvoriti novi direktorij pod nazivom apache-flume-1.4.0-bin i ekstrahirajte datoteke u njega. Ovaj direktorij će se nazivati u ostatku članka.

Korak 4) Postavljanje knjižnice Flume

kopija 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 do

/lib/

Moguće je da će jedan ili cijeli kopirani JAR morati izvršiti dozvolu. To može uzrokovati problem s kompilacijom koda. Dakle, opozovite dopuštenje za izvršenje na takvom JAR-u.

U mom slučaju, twitter4j-core-4.0.1.jar bio je morati izvršiti dopuštenje. Opozvao sam ga kao ispod-

sudo chmod -x twitter4j-core-4.0.1.jar

Flume, postavljanje knjižnice i izvornog koda

Nakon što ova naredba daje dopuštenje za 'čitanje' twitter4j-core-4.0.1.jar svima.

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

Imajte na umu da sam preuzeo-

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

- Sve plamene JAR-ove, tj. flume-ng-*-1.4.0.jar iz http://mvnrepository.com/artifact/org.apache.flume

Učitajte podatke s Twittera pomoću Flumea

Korak 1) Idite u direktorij koji sadrži datoteke izvornog koda.

Korak 2) Postaviti KLASPAT sadržavati /lib/* međutim ~/FlumeTutorial/flume/mytwittersource/*

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

Učitajte podatke s Twittera pomoću Flumea

Korak 3) Prevedi izvorni kod pomoću naredbe-

javac -d . MyTwitterSourceForFlume.java MyTwitterSource.java

Učitajte podatke s Twittera pomoću Flumea

Korak 4)Stvorite staklenku

Prvo, stvorite Manifest.txt datoteku pomoću uređivača teksta po vašem izboru i u nju dodajte donji redak-

Main-Class: flume.mytwittersource.MyTwitterSourceForFlume

.. ovdje flume.mytwittersource.MyTwitterSourceForFlume je naziv glavne klase. Imajte na umu da morate pritisnuti tipku enter na kraju ovog retka.

Učitajte podatke s Twittera pomoću Flumea

Sada stvorite JAR 'MyTwitterSourceForFlume.jar' kao-

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

Učitajte podatke s Twittera pomoću Flumea

Korak 5) Kopirajte ovu staklenku u /lib/

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

Učitajte podatke s Twittera pomoću Flumea

Korak 6) Idite u konfiguracijski direktorij Flumea, /konf

Ako flume.conf ne postoji, kopirajte flume-conf.properties.template i preimenujte ga u flume.conf

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

Učitajte podatke s Twittera pomoću Flumea

If flume-env.sh ne postoji, onda kopirajte flume-env.sh.template i preimenujte ga u flume-env.sh

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

Učitajte podatke s Twittera pomoću Flumea

Izrada Twitter aplikacije

Korak 1) Napravite Twitter aplikaciju prijavom na https://developer.twitter.com/

Izrada Twitter aplikacije

Izrada Twitter aplikacije

Korak 2) Idi na 'Moje aplikacije' (Ova opcija se ispušta kada 'Jaje' klikne se gumb u gornjem desnom kutu)

Izrada Twitter aplikacije

Korak 3) Napravite novu aplikaciju klikom "Stvori novu aplikaciju"

Korak 4) Ispunite detalje aplikacije navodeći naziv aplikacije, opis i web mjesto. Možete pogledati napomene ispod svakog polja za unos.

Izrada Twitter aplikacije

Korak 5) Pomičite stranicu prema dolje i označite prihvatite uvjete 'Da, slažem se' i kliknite na gumb'Kreirajte svoju Twitter aplikaciju'

Izrada Twitter aplikacije

Korak 6) U prozoru novostvorene aplikacije idite na karticu, 'API ključevi' pomaknite se prema dolje na stranici i kliknite gumb 'Stvori moj pristupni token'

Izrada Twitter aplikacije

Izrada Twitter aplikacije

Korak 7) Osvježite stranicu.

Korak 8) Kliknite na 'Testiraj OAuth'. Ovo će se prikazati 'OAuth' postavke aplikacije.

Izrada Twitter aplikacije

Korak 9) izmijeniti 'flume.conf' koristeći ove OAuth postavke. Koraci za izmjenu 'flume.conf' dati su u nastavku.

Izrada Twitter aplikacije

Moramo kopirati Consumer ključ, Consumer secret, Access token i Access token secret za ažuriranje 'flume.conf'.

Napomena: Ove vrijednosti pripadaju korisniku i stoga su povjerljive, pa se ne smiju dijeliti.

Izmijenite datoteku 'flume.conf'

Korak 1) Otvoren 'flume.conf' u načinu pisanja i postavite vrijednosti za donje parametre-

sudo gedit flume.conf

Kopiraj donji sadržaj-

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

Izmijenite datoteku 'Flume.conf'

Korak 2) Također, postavite TwitterAgent.sinks.HDFS.hdfs.path kao ispod,

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

Izmijenite datoteku 'Flume.conf'

Znati , međutim , pogledajte vrijednost parametra 'fs.defaultFS' smjestiti se $HADOOP_HOME/etc/hadoop/core-site.xml

Izmijenite datoteku 'Flume.conf'

Korak 3) Kako biste isprali podatke u HDFS, kao i kada dođu, izbrišite donji unos ako postoji,

TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600

Primjer: Streaming Twitter podataka pomoću Flumea

Korak 1) Otvoren 'flume-env.sh' u načinu pisanja i postavite vrijednosti za donje parametre,

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

Streaming Twitter podataka pomoću Flumea

Korak 2) Pokrenite Hadoop

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

Korak 3) Dvije JAR datoteke iz Flume tarballa nisu kompatibilne s Hadoopom 2.2.0. Dakle, morat ćemo slijediti korake u nastavku u ovom primjeru Apache Flumea kako bismo Flume učinili kompatibilnim s Hadoopom 2.2.0.

a. Potez protobuf-java-2.4.1.jar iz ' /lib'.

Idi na ' /lib'

CD /lib

sudo mv protobuf-java-2.4.1.jar ~/

Streaming Twitter podataka pomoću Flumea

b. Pronađite JAR datoteku 'guava' kao ispod

find . -name "guava*"

Streaming Twitter podataka pomoću Flumea

Potez guava-10.0.1.jar iz ' /lib'.

sudo mv guava-10.0.1.jar ~/

Streaming Twitter podataka pomoću Flumea

c. Preuzimanje guava-17.0.jar iz http://mvnrepository.com/artifact/com.google.guava/guava/17.0

Streaming Twitter podataka pomoću Flumea

Sada kopirajte ovu preuzetu jar datoteku u ' /lib'

Korak 4) Idi na ' /bin' i pokrenite Flume kao-

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

Streaming Twitter podataka pomoću Flumea

Prozor naredbenog retka gdje flume dohvaća Tweetove-

Streaming Twitter podataka pomoću Flumea

Iz poruke naredbenog prozora možemo vidjeti da je izlaz zapisan /korisnik/hduser/flume/tweets/ katalog.

Sada otvorite ovaj direktorij pomoću web preglednika.

Korak 5) Da biste vidjeli rezultat učitavanja podataka, otvorite preglednik http://localhost:50070/ i pregledajte datotečni sustav, zatim idite u direktorij u koji su učitani podaci, tj.

/flume/tweetovi/

Streaming Twitter podataka pomoću Flumea