Apache Flume bemutató: Mi az, Architecture és Hadoop példa

Mi az Apache Flume a Hadoopban?

Apache Flume egy megbízható és elosztott rendszer hatalmas mennyiségű naplóadatok gyűjtésére, összesítésére és mozgatására. Egyszerű, de rugalmas architektúrája az adatfolyamokon alapuló adatfolyamokon alapul. Az Apache Flume a webszerverek naplófájljaiban lévő naplóadatok gyűjtésére szolgál, és elemzés céljából HDFS-be összesíti azokat.

A Flume a Hadoopban több forrást támogat, például -

  • "tail" (amely egy helyi fájlból gyűjti az adatokat, és a Flume-on keresztül HDFS-be ír, hasonlóan a Unix "tail" parancsához)
  • Rendszernaplók
  • Apache log4j (engedélyezze Java alkalmazások, amelyek eseményeket írhatnak HDFS-fájlokba a Flume segítségével).

Flume Architectúra

A Flume ügynök egy olyan JVM 3 összetevőből álló folyamatFüstforrás, Flume csatorna és a Flume mosogató– amelyen keresztül az események a külső forrásból történő kezdeményezés után továbbterjednek.

Flume Architectúra
Flume Architectúra
  1. A fenti diagramon a külső forrás (WebServer) által generált eseményeket a Flume Data Source fogyasztja. A külső forrás a célforrás által felismert formátumban küldi el az eseményeket a Flume-forrásnak.
  2. A Flume Source fogad egy eseményt, és eltárolja egy vagy több csatornában. A csatorna tárolóként működik, amely megőrzi az eseményt, amíg el nem fogyasztja a füstelvezető. Ez a csatorna helyi fájlrendszert használhat ezen események tárolására.
  3. A Flume Sink eltávolítja az eseményt a csatornáról, és egy külső tárolóban tárolja, például HDFS-ben. Több elvezető ágens is lehet, ebben az esetben a füstelnyelő továbbítja az eseményt az áramlásban lévő következő elvezető ágens füstforrásához.

A FLUME néhány fontos funkciója

  • A Flume rugalmas kialakítású, amely az adatfolyamokon alapuló adatfolyamokon alapul. Hibatűrő és robusztus, számos feladatátvétellel és helyreállítási mechanizmussal rendelkezik. A Flume Big Data különböző szintű megbízhatóságot kínál, amely magában foglalja "legjobb kézbesítés" és egy "végponttól végpontig szállítás". Legjobb kézbesítés nem tolerálja a Flume csomópont meghibásodását, míg "végponttól végpontig szállítás" mód több csomópont meghibásodása esetén is garantálja a kézbesítést.
  • A Flume adatokat szállít a források és a nyelők között. Ez az adatgyűjtés lehet ütemezett vagy eseményvezérelt. A Flume saját lekérdezés-feldolgozó motorral rendelkezik, amely megkönnyíti minden új adatköteg átalakítását, mielőtt azok a kívánt fogadóba kerülnének.
  • Lehetséges Flume süllyed tartalmaz HDFS és a HBase. A Flume Hadoop eseményadatok továbbítására is használható, beleértve, de nem kizárólagosan a hálózati forgalmi adatokat, a közösségi média webhelyek által generált adatokat és az e-mail üzeneteket.

Flume, könyvtár és forráskód beállítása

Mielőtt elkezdené a tényleges folyamatot, győződjön meg arról, hogy telepítve van a Hadoop. Felhasználó módosítása „hduser”-re (a Hadoop konfigurációja során használt azonosító, átválthat a Hadoop konfigurációja során használt felhasználói azonosítóra)

Flume, könyvtár és forráskód beállítása

Step 1) Hozzon létre egy új könyvtárat "FlumeTutorial" néven

sudo mkdir FlumeTutorial
  1. Adjon olvasási, írási és végrehajtási engedélyeket
    sudo chmod -R 777 FlumeTutorial
  2. Fájlok másolása MyTwitterSource.java és a MyTwitterSourceForFlume.java ebben a könyvtárban.

Töltse le a bemeneti fájlokat innen

Ellenőrizze az összes fájl fájljogosultságát, és ha hiányzik az olvasási jogosultság, akkor adja meg ugyanazt a

Flume, könyvtár és forráskód beállítása

Step 2) Az "Apache Flume" letöltése egy webhelyről https://flume.apache.org/download.html

Ebben a Flume oktatóanyagban az Apache Flume 1.4.0-t használtuk.

Flume, könyvtár és forráskód beállítása

Következő Kattintson

Flume, könyvtár és forráskód beállítása

Step 3) Másolja a letöltött tarballt a választott könyvtárba, és bontsa ki a tartalmat a következő paranccsal

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

Flume, könyvtár és forráskód beállítása

Ez a parancs létrehoz egy új nevű könyvtárat apache-flume-1.4.0-bin és bontsa ki belőle a fájlokat. Erre a könyvtárra a továbbiakban úgy fogunk hivatkozni a cikk többi részében.

Step 4) Flume könyvtár beállítása

másolat 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 nak nek

/lib/

Lehetséges, hogy a másolt JAR egyikének vagy mindegyikének végrehajtási engedéllyel kell rendelkeznie. Ez problémákat okozhat a kód fordítása során. Tehát vonja vissza az ilyen JAR végrehajtási engedélyét.

Esetemben, twitter4j-core-4.0.1.jar volt engedélyt kell végrehajtani. Az alábbiak szerint visszavontam-

sudo chmod -x twitter4j-core-4.0.1.jar

Flume, könyvtár és forráskód beállítása

Ezt követően a parancs „olvasási” engedélyt ad twitter4j-core-4.0.1.jar mindenkinek.

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

Felhívjuk figyelmét, hogy letöltöttem

– twitter4j-core-4.0.1.jar ból ből https://mvnrepository.com/artifact/org.twitter4j/twitter4j-core

- Minden flame JAR pl. flume-ng-*-1.4.0.jar ból ből http://mvnrepository.com/artifact/org.apache.flume

Töltsön be adatokat a Twitterről a Flume segítségével

Step 1) Lépjen a forráskód fájlokat tartalmazó könyvtárba.

Step 2) Készlet CLASSPATH hogy tartalmazzon /lib/* és a ~/FlumeTutorial/flume/mytwittersource/*

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

Adatok betöltése a Twitterről a Flume segítségével

Step 3) Fordítsa le a forráskódot a paranccsal-

javac -d . MyTwitterSourceForFlume.java MyTwitterSource.java

Adatok betöltése a Twitterről a Flume segítségével

Step 4)Hozzon létre egy üveget

Először is hozzon létre Manifest.txt fájlt egy tetszőleges szövegszerkesztővel, és add hozzá az alábbi sort -

Main-Class: flume.mytwittersource.MyTwitterSourceForFlume

.. itt flume.mytwittersource.MyTwitterSourceForFlume a főosztály neve. Kérjük, vegye figyelembe, hogy a sor végén meg kell nyomnia az Enter billentyűt.

Adatok betöltése a Twitterről a Flume segítségével

Most hozza létre a JAR-tMyTwitterSourceForFlume.jar' mint-

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

Adatok betöltése a Twitterről a Flume segítségével

Step 5) Másolja ezt az edényt ide /lib/

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

Adatok betöltése a Twitterről a Flume segítségével

Step 6) Lépjen a Flume konfigurációs könyvtárába, /konf

Ha a flume.conf nem létezik, akkor másolja ki a flume-conf.properties.template-et, és nevezze át flume.conf-ra

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

Adatok betöltése a Twitterről a Flume segítségével

If flume-env.sh nem létezik, akkor másold ki flume-env.sh.template és nevezze át erre flume-env.sh

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

Adatok betöltése a Twitterről a Flume segítségével

Twitter alkalmazás létrehozása

Step 1) Hozzon létre egy Twitter-alkalmazást a bejelentkezéssel https://developer.twitter.com/

Twitter alkalmazás létrehozása

Twitter alkalmazás létrehozása

Step 2) Ugrás "Saját pályázataim" (Ez a lehetőség akkor jelenik meg, ha 'Tojás' gombra kattintott a jobb felső sarokban)

Twitter alkalmazás létrehozása

Step 3) Kattintson az új alkalmazás létrehozására "Új alkalmazás létrehozása"

Step 4) Töltse ki a jelentkezés részleteit az alkalmazás nevének, leírásának és webhelyének megadásával. Olvassa el az egyes beviteli mezők alatt található megjegyzéseket.

Twitter alkalmazás létrehozása

Step 5) Görgessen le az oldalon, és jelöléssel fogadja el a feltételeket 'Igen, egyetértek' és kattintson a gombra"Hozza létre Twitter-alkalmazását"

Twitter alkalmazás létrehozása

Step 6) Az újonnan létrehozott alkalmazás ablakában lépjen a lapra, "API kulcsok" görgessen lefelé az oldalon, és kattintson a gombra "Hozzáférési token létrehozása"

Twitter alkalmazás létrehozása

Twitter alkalmazás létrehozása

Step 7) Frissítsd az oldalt.

Step 8) Kattints a "OAuth tesztelése". Ez megjelenik "OAuth" az alkalmazás beállításait.

Twitter alkalmazás létrehozása

Step 9) módosít "flume.conf" ezeket használva OAuth beállítások. A módosítás lépései "flume.conf" az alábbiakban találhatók.

Twitter alkalmazás létrehozása

Másolnunk kell a fogyasztói kulcsot, a fogyasztói titkot, a hozzáférési tokent és a hozzáférési jogkivonat titkát a „flume.conf” frissítéséhez.

Megjegyzés: Ezek az értékek a felhasználó tulajdonát képezik, ezért bizalmasak, ezért nem szabad megosztani őket.

Módosítsa a „flume.conf” fájlt

Step 1) Nyisd ki "flume.conf" írási módban, és állítsa be az alábbi paraméterek értékeit-

sudo gedit flume.conf

Másolja az alábbi tartalmat -

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

Módosítsa a „Flume.conf” fájlt

Step 2) Továbbá, állítsa be TwitterAgent.sinks.HDFS.hdfs.path az alábbi,

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

Módosítsa a „Flume.conf” fájlt

Tudni , és a , lásd a paraméter értékét "fs.defaultFS" beállít $HADOOP_HOME/etc/hadoop/core-site.xml

Módosítsa a „Flume.conf” fájlt

Step 3) Az adatok HDFS-be ürítéséhez, amikor megérkezik, törölje az alábbi bejegyzést, ha létezik,

TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600

Példa: Twitter-adatok streamelése a Flume segítségével

Step 1) Nyisd ki "flume-env.sh" írási módban, és állítsa be az alábbi paraméterek értékeit,

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

Twitter-adatok streamelése a Flume segítségével

Step 2) Indítsa el a Hadoop-ot

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

Step 3) A Flume tarballból származó JAR-fájlok közül kettő nem kompatibilis a Hadoop 2.2.0-val. Tehát az alábbi Apache Flume-példa lépéseit kell követnünk, hogy a Flume kompatibilis legyen a Hadoop 2.2.0-val.

a. Mozog protobuf-java-2.4.1.jar kívül ' /lib'.

Ugrás ' /lib'

CD /lib

sudo mv protobuf-java-2.4.1.jar ~/

Twitter-adatok streamelése a Flume segítségével

b. Keresse meg a „guava” JAR fájlt az alábbiak szerint

find . -name "guava*"

Twitter-adatok streamelése a Flume segítségével

Mozog guava-10.0.1.jar kívül ' /lib'.

sudo mv guava-10.0.1.jar ~/

Twitter-adatok streamelése a Flume segítségével

c. Letöltés guava-17.0.jar ból ből http://mvnrepository.com/artifact/com.google.guava/guava/17.0

Twitter-adatok streamelése a Flume segítségével

Most másolja ezt a letöltött jar fájlt ide ' /lib'

Step 4) Ugrás ' /kuka' és indítsa el a Flume-ot, mint...

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

Twitter-adatok streamelése a Flume segítségével

Parancssor ablak, ahol a flume tweeteket tölt le-

Twitter-adatok streamelése a Flume segítségével

A parancsablak üzenetéből láthatjuk, hogy a kimenet ide van írva /user/hduser/flume/tweets/ könyvtárban.

Most nyissa meg ezt a könyvtárat egy webböngészővel.

Step 5) Az adatbetöltés eredményének megtekintéséhez nyissa meg a böngészőt http://localhost:50070/ és böngésszen a fájlrendszerben, majd lépjen abba a könyvtárba, ahová az adatokat betöltötte, azaz

/flume/tweetek/

Twitter-adatok streamelése a Flume segítségével