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.

- 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.
- 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.
- 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)
Step 1) Hozzon létre egy új könyvtárat "FlumeTutorial" néven
sudo mkdir FlumeTutorial
- Adjon olvasási, írási és végrehajtási engedélyeket
sudo chmod -R 777 FlumeTutorial
- 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
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.
Következő Kattintson
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
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
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/*"
Step 3) Fordítsa le a forráskódot a paranccsal-
javac -d . MyTwitterSourceForFlume.java MyTwitterSource.java
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.
Most hozza létre a JAR-tMyTwitterSourceForFlume.jar' mint-
jar cfm MyTwitterSourceForFlume.jar Manifest.txt flume/mytwittersource/*.class
Step 5) Másolja ezt az edényt ide /lib/
sudo cp MyTwitterSourceForFlume.jar <Flume Installation Directory>/lib/
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
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
Twitter alkalmazás létrehozása
Step 1) Hozzon létre egy Twitter-alkalmazást a bejelentkezéssel https://developer.twitter.com/
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)
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.
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"
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"
Step 7) Frissítsd az oldalt.
Step 8) Kattints a "OAuth tesztelése". Ez megjelenik "OAuth" az alkalmazás beállításait.
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.
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
Step 2) Továbbá, állítsa be TwitterAgent.sinks.HDFS.hdfs.path az alábbi,
TwitterAgent.sinks.HDFS.hdfs.path = hdfs:// : / /flume/tweetek/
Tudni , és a , lásd a paraméter értékét "fs.defaultFS" beállít $HADOOP_HOME/etc/hadoop/core-site.xml
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"
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 ~/
b. Keresse meg a „guava” JAR fájlt az alábbiak szerint
find . -name "guava*"
Mozog guava-10.0.1.jar kívül ' /lib'.
sudo mv guava-10.0.1.jar ~/
c. Letöltés guava-17.0.jar ból ből http://mvnrepository.com/artifact/com.google.guava/guava/17.0
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
Parancssor ablak, ahol a flume tweeteket tölt le-
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/