Apache Hadoop és HDFS

Összefoglalás

Ez a kombinált olvasó és video lecke bemutatja hogyan használható az Apache Hadoop HDFS elosztott fájlrendszer a gyakorlatban. Docker virtualizáció segítségével bemutatjuk, hogyan lehet egy HDFS klasztert felállítani, majd azon fájlműveleteket végezni. Mindezt egy videó leckével is demonstráljuk, a könnyebb követhetőség érdekében.
A lecke fejezetei:
  • 1. fejezet: Hadoop klaszter létrehozása és futtatása Docker segítségével (olvasó)
  • 2. fejezet: HDFS használata, alapvető parancsok (videó)
Téma típusa: gyakorlati
Olvasási idő: 30 perc

Book to read, knowledge, lecture, open book, reading book icon 1. fejezet
Apache Hadoop klaszter indítása

Ahogy azt az előadásban is láthattuk, az Apache Hadoop keretrendszer és a HDFS elosztott fájlrendszer üzemeltetéséhez több szoftverkomponensre is szükségünk van: NameNode, ResourceManager, DataNode, HistoryNode, stb. Ebben a fejezetben bemutatjuk, hogy lehet telepítés nélkül, viszonylag egyszerű módon egy ilyen klasztert tetszőleges gépen beüzemelni. Ehhez a Docker [1] konténer szoftvert és előre elkészített konténer fájlokat fogunk használni. A Docker rendszer bemutatása nem tartozik jelen anyag keretébe, de az alábbi forrásokból további információk szerezhetők róla:

Docker elérhető az összes fontosabb operációs rendszerre, a következők feltételezik, hogy rendelkezésre áll egy telepített Docker rendszer a gépen, ami a hivatalos dokumentáció [1] alapján könnyen kivitelezhető. A klaszterhez szükséges egyes node-ok képfáljai GitHub-on elérhetők [2], a példa során innen fogjuk letölteni őket.

Képfájlok letöltése és Hadoop klaszter indítása

Első lépésként a Big Data Europe GitHub repozitóriumból töltsük le a megfelelő képfájlokat. Ehhez feltétel, hogy a Git [3] verziókövető elérhető legyen gépünkön. Amennyiben nem az, először telepítsük. Ezután a következő parancssal letölthetjük gépünkre a megfelelő Docker image fájlokat:

A parancs végrehajtása után letöltődnek a szükséges image-ek a docker-hadoop mappába a saját gépünkre. A klaszter elemeit a docker-compose.yml fájl írja le, amennyiben szükséges a klaszter működésének módosítása, úgy ezt a fájlt kell átszerkeszteni. A példánk során mi a módosítatlan konfigurációs fájlt fogjuk használni, ami a következő komponenseket definiálja:

A klaszter elindításához az alábbi Docker parancsot kell kiadnunk:

A parancs hatására a megfelelő Docker image-ek letöltődnek a Docker-Hub [4] központi image tárhelyről, lefordulnak és előállnak a szükséges állományok, majd a fenti szolgáltatások elindulnak. A futó szolgáltatásokat és a Hadoop klaszter elemeit az alábbi ábra szemléltet.

Hadoop klaszter beállításai

Először ellenőrizzük le, hogy a fenti parancs sikeresen végrehajtódott. Adjuk ki az alábbi Docker parancsot:

Ez a parancs az éppen futó Docker konténereket listázza ki, így a fenti ábrán is látható öt komponens mindegyikét látnunk kell a listában:

docker-ps

Ha minden rendben van, a NameNode komponenst böngészőből is elérjük a http://localhost:9870 címen. A következő kép a NameNode webes felületét mutatja:

NameNode

Előfordulhat, hogy a NameNode indulás után ún. safe mode-ba kerül, ekkor a fenti áttekintő oldalon a Safemonde is ON felirat jelenik meg. Ekkor az adat csomópontok nem írhatók, a klasztert nem tudjuk teljes körűen használni. Ebben az esetben a következő lépéseket kell végrehajtanunk.

  1. Indítsunk egy bash terminált a futó NameNode konténeren belül:
  1. Hagyjuk el a safe mode állapotot a következő parancs kiadásával
  1. Töröljünk és állítsunk helyre minden hibás blokkot, amit a safe mode miatti read only mód okozott

Ezután töltsük be a NameNode webes felületét, már a fenti Safemode is off feliratot kell látnunk.

Hadoop klaszter tesztelése

Amennyiben fut a Hadoop klaszterünk, a NameNode konténerben futtatott bash terminál segítségével Hadoop parancsokat adhatunk ki a hdfs parancssori kliens segítségével. Ezt az eszközt használhatjuk arra, hogy fájlműveleteket végezzünk a HDFS-en (lásd 2. fejezet). Ehhez lépjünk ismét be a futó NameNode dokcer konténerbe és indítsunk egy bash terminált:

Hozzunk létre pár egyszerű szöveges fájlt és másoljuk fel őket HDFS-re:

Miután a NameNode konténeren belül létrehoztuk a fájlokat, hozzunk létre egy könyvtárat HDFS-en és másoljuk fel ezt a két fájlt:

Most már a HDFS-en is elérhető a két fájl, tetszőleges Hadoop kompatibilis eszközzel feldolgozható (pl. MapReduce, Spark, stb.). Listázzuk ki az input könyvtár tartalmát és nézzük meg a fájl tartalmát:

A HDFS klaszter leállításához az alábbi Docker parancsot kell használni:

 Lectures Icon Images, Stock Photos & Vectors | Shutterstock 2. fejezet

Apache Hadoop File System (HDFS)

Az alábbi videó lecke a HDFS használatát, a rajta végezhető műveleteket demonstrálja:

video/3g_BigData-hadoop-SPOC/hdfs-demo.mp4

Check mark icon set. Green OK or V tick, red X, exclamation mark ...További feladatok

  1. Módosítsuk a Hadoop klaszter konfigurációt úgy, hogy egy data node helyett három induljon!
  2. Hozz létre egy feladat mappát a HDFS fájlrendszerben, és másolj fel egy tetszőleges csv fájlt bele, ezután listázd ki a fájlt parancssorból és nézd meg a NameNode webes felületén keresztül is a browser utility segítségével! Ezután pedig töltsd le a csv fájlt HDFS-ről a saját gépre!

Referenciák

[1] https://www.docker.com/

[2] https://github.com/big-data-europe/docker-hadoop

[3] https://git-scm.com/

[4] https://hub.docker.com/

[5] https://www.tutorialspoint.com/hadoop/hadoop_command_reference.htm