Apache Flumen opetusohjelma: Mikä on, Architecture & Hadoop-esimerkki

Mikä on Apache Flume Hadoopissa?

Apache Flume on luotettava ja hajautettu järjestelmä valtavien lokitietojen keräämiseen, kokoamiseen ja siirtämiseen. Sillä on yksinkertainen mutta joustava arkkitehtuuri, joka perustuu suoratoistotietovirtoihin. Apache Flumea käytetään keräämään lokitiedostoissa olevia lokitietoja verkkopalvelimista ja yhdistämään ne HDFS:ään analysointia varten.

Flume in Hadoop tukee useita lähteitä, kuten -

  • 'tail' (joka siirtää tiedot paikallisesta tiedostosta ja kirjoittaa HDFS:ään Flumen kautta, samalla tavalla kuin Unix-komento 'tail')
  • Järjestelmälokit
  • Apache log4j (ota käyttöön Java sovellukset tapahtumien kirjoittamiseen HDFS-tiedostoihin Flumen kautta).

Flume Archirakenne

A Flume agentti on JVM prosessi, jossa on 3 osaa -Flume lähde, Flume kanava ja Flume pesuallas– joiden kautta tapahtumat etenevät sen jälkeen, kun ne on aloitettu ulkoisesta lähteestä.

Flume Archirakenne
Flume Archirakenne
  1. Yllä olevassa kaaviossa Flume Data Source kuluttaa ulkoisen lähteen (WebServer) luomat tapahtumat. Ulkoinen lähde lähettää tapahtumat Flume-lähteeseen muodossa, jonka kohdelähde tunnistaa.
  2. Flume Source vastaanottaa tapahtuman ja tallentaa sen yhteen tai useampaan kanavaan. Kanava toimii varastona, joka pitää tapahtuman, kunnes savun nielu kuluttaa sen. Tämä kanava voi käyttää paikallista tiedostojärjestelmää näiden tapahtumien tallentamiseen.
  3. Flume sink poistaa tapahtuman kanavalta ja tallentaa sen ulkoiseen arkistoon, kuten esim. HDFS. Savun tekijöitä voi olla useita, jolloin savun nielu välittää tapahtuman virtauksen seuraavan savuaineen lähteelle.

Joitakin FLUME:n tärkeitä ominaisuuksia

  • Flumella on joustava rakenne, joka perustuu suoratoistotietovirtoihin. Se on vikasietoinen ja vankka, ja siinä on useita vikasieto- ja palautusmekanismeja. Flume Big datalla on tarjolla erilaisia ​​luotettavuustasoja, mukaan lukien "paras toimitus" ja "päästä päähän toimitus". Paras vaivannäkö ei siedä mitään Flume-solmun vikaa, kun taas "päästä päähän toimitus" tila takaa toimituksen jopa useiden solmujen vikojen sattuessa.
  • Flume kuljettaa tietoja lähteiden ja nielujen välillä. Tämä tiedonkeruu voi olla joko ajoitettua tai tapahtumalähtöistä. Flumella on oma kyselynkäsittelymoottori, jonka avulla on helppo muuttaa jokainen uusi tietoerä ennen kuin se siirretään aiottuun nieluon.
  • mahdollinen Flume uppoaa sisältää HDFS ja HBase. Flume Hadoopia voidaan käyttää myös tapahtumatietojen siirtämiseen, mukaan lukien mutta ei rajoittuen verkkoliikennetiedot, sosiaalisen median verkkosivustojen luomat tiedot ja sähköpostiviestit.

Flumen, kirjaston ja lähdekoodin asetukset

Ennen kuin aloitamme varsinaisen prosessin, varmista, että Hadoop on asennettu. Vaihda käyttäjäksi "hduser" (tunnusta käytetään Hadoop-määrityksen aikana, voit vaihtaa Hadoop-määrityksen aikana käytettyyn käyttäjätunnukseen)

Flumen, kirjaston ja lähdekoodin asetukset

Vaihe 1) Luo uusi hakemisto nimellä "FlumeTutorial"

sudo mkdir FlumeTutorial
  1. Anna luku-, kirjoitus- ja suoritusoikeudet
    sudo chmod -R 777 FlumeTutorial
  2. Kopioi tiedostot MyTwitterSource.java ja MyTwitterSourceForFlume.java tässä hakemistossa.

Lataa syöttötiedostot täältä

Tarkista kaikkien näiden tiedostojen tiedostooikeudet ja jos lukuoikeudet puuttuvat, myönnä samat

Flumen, kirjaston ja lähdekoodin asetukset

Vaihe 2) Lataa "Apache Flume" sivustolta- https://flume.apache.org/download.html

Tässä Flume-opetusohjelmassa on käytetty Apache Flume 1.4.0:aa.

Flumen, kirjaston ja lähdekoodin asetukset

Seuraava Napsauta

Flumen, kirjaston ja lähdekoodin asetukset

Vaihe 3) Kopioi ladattu tarball valitsemaasi hakemistoon ja pura sisältö seuraavalla komennolla

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

Flumen, kirjaston ja lähdekoodin asetukset

Tämä komento luo uuden hakemiston nimeltä apache-flume-1.4.0-bin ja pura tiedostot siihen. Tätä hakemistoa kutsutaan nimellä artikkelin loppuosassa.

Vaihe 4) Flume-kirjaston asetukset

kopio 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 että

/lib/

On mahdollista, että jompikumpi tai kaikki kopioidut JAR-tiedostot tarvitsevat suoritusluvan. Tämä voi aiheuttaa ongelmia koodin kääntämisessä. Joten peruuta suorituslupa sellaiselle JAR:lle.

Minun tapauksessani, twitter4j-core-4.0.1.jar oli pakko suorittaa lupa. Peruin sen alla olevan mukaisesti

sudo chmod -x twitter4j-core-4.0.1.jar

Flumen, kirjaston ja lähdekoodin asetukset

Tämän komennon jälkeen annetaan lukuoikeus päälle twitter4j-core-4.0.1.jar kaikille.

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

Huomaa, että olen ladannut -

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

- Kaikki liekkipurkit eli flume-ng-*-1.4.0.jar alkaen http://mvnrepository.com/artifact/org.apache.flume

Lataa tiedot Twitteristä Flumen avulla

Vaihe 1) Siirry hakemistoon, joka sisältää lähdekooditiedostoja.

Vaihe 2) Asettaa CLASSPATH sisältää /lib/* ja ~/FlumeTutorial/flume/mytwittersource/*

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

Lataa tiedot Twitteristä Flumen avulla

Vaihe 3) Käännä lähdekoodi komennolla-

javac -d . MyTwitterSourceForFlume.java MyTwitterSource.java

Lataa tiedot Twitteristä Flumen avulla

Vaihe 4)Luo purkki

Ensin luo Manifest.txt tiedosto valitsemallasi tekstieditorilla ja lisää siihen alla oleva rivi -

Main-Class: flume.mytwittersource.MyTwitterSourceForFlume

.. täällä flume.mytwittersource.MyTwitterSourceForFlume on pääluokan nimi. Huomaa, että sinun on painettava Enter-näppäintä tämän rivin lopussa.

Lataa tiedot Twitteristä Flumen avulla

Luo nyt JAR 'MyTwitterSourceForFlume.jar' kuten-

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

Lataa tiedot Twitteristä Flumen avulla

Vaihe 5) Kopioi tämä purkki kohteeseen /lib/

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

Lataa tiedot Twitteristä Flumen avulla

Vaihe 6) Siirry Flumen asetushakemistoon, /conf

Jos flume.conf-tiedostoa ei ole olemassa, kopioi flume-conf.properties.template ja nimeä se uudelleen muotoon flume.conf

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

Lataa tiedot Twitteristä Flumen avulla

If flume-env.sh ei ole olemassa, kopioi flume-env.sh.template ja nimeä se uudelleen flume-env.sh

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

Lataa tiedot Twitteristä Flumen avulla

Twitter-sovelluksen luominen

Vaihe 1) Luo Twitter-sovellus kirjautumalla sisään https://developer.twitter.com/

Twitter-sovelluksen luominen

Twitter-sovelluksen luominen

Vaihe 2) Mene "Omat sovellukseni" (Tämä vaihtoehto pudotetaan alas, kun 'Kananmuna' napsautetaan oikeassa yläkulmassa olevaa painiketta)

Twitter-sovelluksen luominen

Vaihe 3) Luo uusi sovellus napsauttamalla "Luo uusi sovellus"

Vaihe 4) Täytä hakemuksen tiedot määrittämällä hakemuksen nimi, kuvaus ja verkkosivusto. Voit viitata kunkin syöttöruudun alla oleviin huomautuksiin.

Twitter-sovelluksen luominen

Vaihe 5) Vieritä sivua alas ja hyväksy ehdot merkitsemällä 'Kyllä olen samaa mieltä' ja napsauta painiketta"Luo Twitter-sovellus"

Twitter-sovelluksen luominen

Vaihe 6) Siirry juuri luodun sovelluksen ikkunassa välilehdelle, "API-avaimet" vieritä sivua alas ja napsauta painiketta "Luo käyttöoikeustunnus"

Twitter-sovelluksen luominen

Twitter-sovelluksen luominen

Vaihe 7) Päivitä sivu.

Vaihe 8) Valitse "Testaa OAuth". Tämä tulee näkyviin "OAuth" sovelluksen asetuksista.

Twitter-sovelluksen luominen

Vaihe 9) Muuttaa "flume.conf" käyttämällä näitä OAuth-asetukset. Vaiheet muokkaamiseen "flume.conf" on annettu alla.

Twitter-sovelluksen luominen

Meidän on kopioitava kuluttaja-avain, kuluttajasalaisuus, pääsytunnus ja pääsytunnuksen salaisuus päivittääksemme 'flume.conf'.

Huomautus: Nämä arvot kuuluvat käyttäjälle ja ovat siksi luottamuksellisia, joten niitä ei pidä jakaa.

Muokkaa 'flume.conf'-tiedostoa

Vaihe 1) avoin "flume.conf" kirjoitustilassa ja aseta arvot alla oleville parametreille-

sudo gedit flume.conf

Kopioi alla oleva sisältö -

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

Muokkaa Flume.conf-tiedostoa

Vaihe 2) Myös asettaa TwitterAgent.sinks.HDFS.hdfs.path kuten alla,

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

Muokkaa Flume.conf-tiedostoa

Tietää , ja , katso parametrin arvo 'fs.defaultFS' asetettu sisään $HADOOP_HOME/etc/hadoop/core-site.xml

Muokkaa Flume.conf-tiedostoa

Vaihe 3) Jos haluat huuhdella tiedot HDFS:ään, poista alla oleva merkintä, jos se on olemassa,

TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600

Esimerkki: Twitter-tietojen suoratoisto Flumella

Vaihe 1) avoin "flume-env.sh" kirjoitustilassa ja aseta arvot alla oleville parametreille,

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

Twitter-tietojen suoratoisto Flumella

Vaihe 2) Käynnistä Hadoop

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

Vaihe 3) Kaksi Flume-tarballin JAR-tiedostoista ei ole yhteensopivia Hadoop 2.2.0:n kanssa. Joten meidän on noudatettava alla olevia ohjeita tässä Apache Flume -esimerkissä, jotta Flume on yhteensopiva Hadoop 2.2.0:n kanssa.

a. Liikkua protobuf-java-2.4.1.jar ulos ' /lib'.

Mene ' /lib'

CD /lib

sudo mv protobuf-java-2.4.1.jar ~/

Twitter-tietojen suoratoisto Flumella

b. Etsi JAR-tiedosto 'guava' kuten alla

find . -name "guava*"

Twitter-tietojen suoratoisto Flumella

Liikkua guava-10.0.1.purkki ulos ' /lib'.

sudo mv guava-10.0.1.jar ~/

Twitter-tietojen suoratoisto Flumella

c. Lataa guava-17.0.purkki alkaen http://mvnrepository.com/artifact/com.google.guava/guava/17.0

Twitter-tietojen suoratoisto Flumella

Kopioi nyt tämä ladattu jar-tiedosto kohteeseen ' /lib'

Vaihe 4) Mene ' /bin' ja käynnistä Flume nimellä-

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

Twitter-tietojen suoratoisto Flumella

Komentorivi-ikkuna, josta flume hakee twiittejä-

Twitter-tietojen suoratoisto Flumella

Komentoikkunan viestistä näemme, että tulos on kirjoitettu /user/hduser/flume/tweets/ hakemistoon.

Avaa nyt tämä hakemisto verkkoselaimella.

Vaihe 5) Jos haluat nähdä tietojen lataamisen tuloksen, avaa selain http://localhost:50070/ ja selaa tiedostojärjestelmää ja mene sitten hakemistoon, johon tiedot on ladattu, eli

/flume/tweets/

Twitter-tietojen suoratoisto Flumella