Apache Sqoop oktatóanyag - Adatok importálása / exportálása a HDFS és az RDBMS között



Apache Sqoop oktatóanyag: Az Sqoop egy eszköz adatátvitelre a Hadoop és a relációs adatbázisok között. Ez a blog a Sooop importálását és exportálását tartalmazza a MySQL-ből.

Mielőtt elkezdené ezt az Apache Sqoop oktatóanyagot, tegyen egy lépést vissza. Emlékezhet az adatok bevitelének fontosságára, ahogyan azt korábbi blogunkban megvitattuk Apache Flume . Most, mivel tudjuk, hogy az Apache Flume adatszerzési eszköz strukturálatlan forrásokhoz, de a szervezetek működési adataikat relációs adatbázisokban tárolják. Szükség volt tehát egy olyan eszközre, amely képes adatokat importálni és exportálni relációs adatbázisokból. Ezért született meg Apache Sqoop. Az Sqoop könnyen integrálható a Hadoopszal, és a relációs adatbázisokból származó strukturált adatokat HDFS-re dobhatja, kiegészítve a Hadoop erejét. Ez az oka, megbízza az Apache Sqoop és a Flume alapos ismeretét.

Kezdetben a Sqoop-ot a Cloudera fejlesztette és tartotta karban. Később, 2011. július 23-án, Apache inkubálta. 2012 áprilisában a Sqoop projektet Apache legfelső szintű projektjeként hirdették meg.





Ebben az Apache Flume oktatóblogban a következőkre fogunk kitérni:



Az Apache Sqoop oktatóanyagot az Apache Sqoop bemutatásával kezdjük. Ezután haladva megértjük az Apache Sqoop használatának előnyeit.

Apache Sqoop bemutató: Sqoop bevezetés

Apache Sqoop - Apache Sqoop bemutató - EdurekaÁltalában az alkalmazások kölcsönhatásba lépnek a relációs adatbázissal az RDBMS segítségével, és ezáltal a relációs adatbázisok az egyik legfontosabb forrás, amely Big Data-t generál. Az ilyen adatokat az RDB kiszolgálók tárolják a relációs struktúrában. Itt az Apache Sqoop fontos szerepet játszik , megvalósítható interakciót biztosítva a relációs adatbázis-kiszolgáló és a HDFS között.

Tehát az Apache Sqoop egy eszköz a amely adatátvitelre szolgál HDFS (Hadoop tárhely) és relációs adatbázis-kiszolgálók, például MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres stb. Az Apache Sqoop adatokat visz relációs adatbázisokból HDFS-be, és adatokat exportál HDFS-ből relációs adatbázisokba. Hatékonyan továbbítja a tömeges adatokat a Hadoop és a külső adattárolók, például vállalati adattárházak, relációs adatbázisok stb. Között.



Így kapta a nevét a Sqoop - SQ L Hadnak nyisd ki & Hadoop SQL-re ”.

Ezenkívül az Sqoop-ot arra használják, hogy külső adattárolókból adatokat importáljon a Hadoop ökoszisztéma eszközeibe, például Kaptár & HBase .

Most, amikor tudjuk, mi az Apache Sqoop. Tehát haladjunk előre az Apache Sqoop oktatóanyagunkban, és értsük meg, miért használják az Sqoop-ot a szervezetek széles körben.

Apache Sqoop bemutató: Miért a Sqoop?

A Hadoop fejlesztő számára a tényleges játék az adatok HDFS-be történő betöltése után kezdődik. Játszják ezeket az adatokat, hogy a HDFS-ben tárolt adatokba rejtett különféle betekintést nyerjenek.

Tehát ehhez az elemzéshez a relációs adatbázis-kezelő rendszerekben található adatokat át kell vinni a HDFS-be. Az írás feladata Az adatok importálása és exportálása a relációs adatbázisból a HDFS-be nem érdekes és unalmas. Itt jön Apache Sqoop, hogy megmentse és eltávolítsa fájdalmaikat. Automatizálja az adatok importálásának és exportálásának folyamatát.

A Sqoop megkönnyíti a fejlesztők életét azáltal, hogy CLI-t biztosít az adatok importálásához és exportálásához. Csak meg kell adniuk az alapvető információkat, például az adatbázis-hitelesítést, a forrást, a rendeltetési helyet, a műveleteket stb. Ez gondoskodik a fennmaradó részről.

Az Sqoop belső módon konvertálja a parancsot MapReduce feladatokká, amelyeket aztán HDFS-en keresztül hajtanak végre. A YARN keretrendszert használja az adatok importálására és exportálására, amely a párhuzamosság mellett hibatűrést biztosít.

Ebben a Sqoop Tutorial blogban előre lépve megértjük a Sqoop főbb jellemzőit, majd áttérünk az Apache Sqoop architektúrára.

Apache Sqoop oktatóanyag: A Sqoop főbb jellemzői

A Sqoop számos olyan kiemelkedő funkciót kínál, mint például:

  1. Teljes terhelés : Az Apache Sqoop egyetlen paranccsal töltheti be az egész táblázatot. Az összes táblázatot egyetlen parancs segítségével is betöltheti egy adatbázisból.
  2. Járulékos Betöltés : Az Apache Sqoop a növekményes terhelés lehetőségét is biztosítja, ahová az asztal egyes részeit betöltheti, amikor azok frissülnek.
  3. Párhuzamos import Export : Az Sqoop a YARN keretrendszert használja az adatok importálására és exportálására, amely a párhuzamosság mellett hibatűrést biztosít.
  4. Importálás eredmények nak,-nek SQL lekérdezés : Az SQL lekérdezésből visszaküldött eredményt HDFS-be is importálhatja.
  5. Tömörítés : Az adatokat tömörítheti a deflate (gzip) algoritmus használatával –compress argumentummal, vagy a –compression-codec argumentum megadásával. Betöltheti a tömörített táblázatot is Apache Hive .
  6. Csatlakozók mert minden Jelentősebb RDBMS Adatbázisok : Az Apache Sqoop csatlakozókat biztosít több RDBMS adatbázis számára, amelyek szinte az egész kerületet lefedik.
  7. Kerberos Biztonság Integráció : A Kerberos egy számítógépes hálózati hitelesítési protokoll, amely a „jegyek” alapján működik, lehetővé téve a nem biztonságos hálózaton kommunikáló csomópontok számára, hogy biztonságos módon igazolják identitásukat egymásnak. Az Sqoop támogatja a Kerberos hitelesítést.
  8. Betöltés adat közvetlenül -ba HIVE / HBase : Az adatokat közvetlenül betöltheti Apache Hive elemzés céljából, és az adatokat a HBase-be is dobja, amely egy NoSQL adatbázis.
  9. Támogatás mert Felhalmozódás : Azt is utasíthatja az Sqoop-ot, hogy a táblázatot az Accumulo-ban importálja, nem pedig a HDFS-ben található könyvtárat.

Az architektúra az Apache Sqoop számára biztosítja ezeket az előnyöket. Most, hogy ismerjük az Apache Sqoop szolgáltatásait, lépjünk előre, és értsük meg az Apache Sqoop architektúráját és működését.

Apache Sqoop oktatóanyag: Sqoop architektúra és munka

Az alábbi ábra segítségével értsük meg, hogyan működik az Apache Sqoop:

c ++ névtér példa

Az importáló eszköz egyedi táblákat importál az RDBMS-ből a HDFS-be. A táblázat minden egyes sorát rekordként kezeljük a HDFS-ben.

Amikor elküldjük az Sqoop parancsot, a fő feladatunk részfeladatokra oszlik, amelyeket az egyes Map Task belsőleg kezel. A Map Task az a részfeladat, amely az adatok egy részét importálja a Hadoop ökoszisztémába. Az összes Map-feladat együttesen importálja a teljes adatot.

Az export is hasonló módon működik.

Az exportáló eszköz fájlokat exportál a HDFS-ből egy RDBMS-be. Az Sqoop bemenetként megadott fájlok rekordokat tartalmaznak, amelyeket sorokként hívnak meg a táblázatban.

Amikor elküldjük a munkánkat, akkor a térképi feladatokhoz hozzárendelik, amely a HDFS-ből származó adatok darabját hozza el. Ezeket a darabokat egy strukturált adatcélba exportáljuk. Mindezeket az exportált adatrészeket egyesítve a teljes adatot megkapjuk a rendeltetési helyen, amely az esetek többségében RDBMS (MYSQL / Oracle / SQL Server).

Redukciós fázis szükséges aggregációk esetén. De az Apache Sqoop csak importálja és exportálja azokat az adatokat, amelyek nem végeznek összesítést. A munka által indított több térképkészítő feltérképezése a felhasználó által meghatározott számtól függően. Az Sqoop importálásához minden leképező feladatot hozzárendelnek az importálandó adatok egy részéhez. A Sqoop a bemenő adatokat egyenlően osztja el a leképezők között a nagy teljesítmény érdekében. Ezután minden leképező kapcsolatot hoz létre az adatbázissal a JDBC segítségével, és lekéri az Sqoop által hozzárendelt adatok egy részét, és a CLI-ben megadott argumentumok alapján HDFS-be vagy Hive vagy HBase-be írja.

Most, hogy megértettük az Apache Sqoop architektúráját és működését, értsük meg az Apache Flume és az Apache Sqoop közötti különbséget.

Apache Sqoop oktatóanyag: Flume vs Sqoop

A fő különbség Flume és Sqoop között az, hogy:

  • A Flume csak strukturálatlan vagy félig strukturált adatokat emészt be a HDFS-be.
  • Míg az Sqoop képes importálni és exportálni a strukturált adatokat az RDBMS vagy az Enterprise adattárházakból a HDFS-be vagy fordítva.

Most, az Apache Sqoop bemutatónk továbblépésével, itt az ideje, hogy átmenjünk az Apache Sqoop parancsokon.

Apache Sqoop oktatóanyag: Sqoop parancsok

  • Sqoop - IMPORT parancs

Az Import parancs segítségével táblákat importálhatunk relációs adatbázisokból a HDFS-be. Esetünkben táblákat importálunk a MySQL adatbázisokból a HDFS-be.

Amint az alábbi képen látható, az alkalmazottak adatbázisában van egy alkalmazotti táblázat, amelyet importálni fogunk a HDFS-be.

A tábla importálásának parancsa:

sqoop import --connect jdbc: mysql: // localhost / alkalmazottak - edureka felhasználónév - asztali alkalmazottak

Amint az az alábbi képen látható, ennek a parancsnak a végrehajtása után a térképi feladatok a végén fognak végrehajtódni.

A kód végrehajtása után ellenőrizheti a HDFS webes felhasználói felületét, azaz a localhost: 50070, ahová az adatokat importálja.

  • Sqoop - IMPORT Parancs célkönyvtárral

Az alábbi paranccsal importálhatja a táblázatot a HDFS egy adott könyvtárába:

sqoop import --connect jdbc: mysql: // localhost / alkalmazottak - edureka felhasználónév - asztali alkalmazottak --m 1 --target-dir / alkalmazottak

A Sqoop párhuzamosan importálja az adatokat a legtöbb adatbázis-forrásból. -m tulajdonság a végrehajtandó leképezők számának megadására szolgál.

A Sqoop párhuzamosan importálja az adatokat a legtöbb adatbázis-forrásból. Megadhatja az importáláshoz használandó térképi feladatok (párhuzamos folyamatok) számát a -m vagy –Num-térképezők érv. Ezen argumentumok mindegyike egy egész számot vesz fel, amely megfelel a párhuzamosság mértékének.

A leképezők számát a könyvtárban található fájlok számától függetlenül szabályozhatja. Az exportteljesítmény a párhuzamosság mértékétől függ. Alapértelmezés szerint az Sqoop négy feladatot fog párhuzamosan használni az exportálási folyamathoz. Lehet, hogy ez nem optimális, kísérleteznie kell saját saját beállításával. A további feladatok jobb párhuzamosságot kínálhatnak, de ha az adatbázis már szűk keresztmetszetet mutat az indexek frissítésében, a kiváltó okok meghívásában stb., Akkor a további terhelés csökkentheti a teljesítményt.

Az alábbi képen láthatja, hogy a leképező feladat száma 1.

A MySQL táblák importálása során létrehozott fájlok száma megegyezik a létrehozott leképező számával.

  • Sqoop - IMPORT parancs hol záradékkal

A Sqoop importáló eszköz ’hol’ záradékával importálhat egy tábla egy részhalmazát. Végrehajtja a megfelelő SQL lekérdezést a megfelelő adatbázis-kiszolgálón, és az eredményt egy HDFS célkönyvtárban tárolja. A következő paranccsal lehet adatokat importálni a ‘ hol ' kikötés:

sqoop import --connect jdbc: mysql: // localhost / alkalmazottak - edureka felhasználónév - asztali alkalmazottak --m 3 --hol 'emp_no & gt 49000' --target-dir / Latest_Employees

  • Sqoop - növekményes import

Az Sqoop inkrementális importálási módot biztosít, amely csak néhány korábban importált sorkészletnél újabb sorok beolvasására használható. A Sqoop kétféle növekményes importot támogat: mellékel és utoljára módosítva . A –incremental argumentummal megadhatja a végrehajtandó növekményes import típusát.

Meg kell adnia mellékel mód, amikor olyan táblázatot importál, amelybe folyamatosan új sorokat adnak, növekvő sorazonosító értékekkel. A sor azonosítóját tartalmazó oszlopot a következővel adhatja meg: –Ellenőrző-oszlop . A Sqoop olyan sorokat importál, ahol az ellenőrző oszlop értéke nagyobb, mint a –Utolsó érték .

Meghívjuk az Sqoop által támogatott alternatív táblázatfrissítési stratégiát utoljára módosítva mód. Akkor használja, ha a forrástábla sorai frissülhetnek, és minden ilyen frissítés az utolsó módosított oszlop értékét az aktuális időbélyegre állítja.

Egy későbbi importálás során meg kell adnia –Utolsó érték ily módon biztosíthatja, hogy csak az új vagy frissített adatokat importálja. Ezt automatikusan úgy kezeljük, hogy növekményes importot hozunk létre mentett jobként, ami a preferált mechanizmus az ismétlődő növekményes importáláshoz.

Először beillesztünk egy új sort, amely frissül a HDFS-ben.

A növekményes import parancsa:

sqoop import --connect jdbc: mysql: // localhost / alkalmazottak - edureka felhasználónév - asztali alkalmazottak --target-dir / Legújabb_Dolgozók - növekményes függelék --check-oszlop emp_no --utolsó érték 499999

Az alábbi képen látható, hogy a frissített adatokkal új fájl jön létre.

  • Sqoop - Az összes táblázat importálása

Importálhatja az összes táblázatot az RDBMS adatbázis-kiszolgálóról a HDFS-be. Minden táblaadatot külön könyvtárban tárolunk, és a könyvtárnév megegyezik a táblanévvel. Kötelező, hogy az adatbázis minden táblájának rendelkeznie kell egy elsődleges kulcsmezővel. Az összes tábla adatbázisból történő importálására szolgáló parancs:

sqoop import-all-tables --csatlakoztassa a jdbc: mysql: // localhost / alkalmazottakat --felhasználónév edureka

  • Sqoop - Adatbázisok listázása

A Sqoop segítségével felsorolhatja a relációs adatbázisban jelen lévő adatbázisokat. Az Sqoop lista-adatbázisok eszköz elemzi és végrehajtja a ‘SHOW DATABASES’ lekérdezést az adatbázis-kiszolgálóval szemben. Az adatbázisok felsorolására szolgáló parancs a következő:

sqoop list-adatbázisok --connect jdbc: mysql: // localhost / --usureka edureka

  • Sqoop - Táblázatok felsorolása

Az Sqoop segítségével felsorolhatja egy adott adatbázis táblázatait is a MySQL adatbázis-kiszolgálón. Az Sqoop list-tables eszköz elemzi és végrehajtja a „TÁBLÁZATOK MUTATÁSA” lekérdezést. A táblák felsorolására szolgáló parancs egy adatbázis:

sqoop list-tables --connect jdbc: mysql: // localhost / alkalmazottak - edureka felhasználónév

  • Sqoop - Exportálás

Amint fentebb tárgyaltuk, exportálhat adatokat a HDFS-ből az RDBMS adatbázisba is. A céltáblának léteznie kell a cél adatbázisban.Az adatokat rekordként tároljuk a HDFS-ben. Ezeket a rekordokat beolvassa, elemzi és a felhasználó által megadott elválasztóval határolja.Az alapértelmezett művelet az összes rekord beillesztése a bemeneti fájlokból az adatbázis táblába az INSERT utasítás segítségével. Frissítési módban az Sqoop létrehozza az UPDATE utasítást, amely a meglévő rekordot helyettesíti az adatbázisban.

Tehát először egy üres táblázatot készítünk, ahová exportálni fogjuk az adatainkat.

Az adatok HDFS-ből a relációs adatbázisba történő exportálására szolgáló parancs:

sqoop export --connect jdbc: mysql: // localhost / alkalmazottak - edureka felhasználónév - tábla emp --export-dir / user / edureka / alkalmazottak

  • Sqoop – Codegen

Objektumorientált alkalmazásban minden adatbázis-táblának van egy Data Access Object osztálya, amely „getter” és „setter” módszereket tartalmaz az objektumok inicializálására. Codegen automatikusan létrehozza a DAO osztályt. DAO osztályt generál Java-ban, a Table Schema struktúra alapján.

A java kód előállítására szolgáló parancs a következő:

sqoop codegen --connect jdbc: mysql: // localhost / alkalmazottak - edureka felhasználónév - asztali alkalmazottak

A fenti képen láthatja az elérési utat, ahol a kód keletkezik. Menjünk el az utat és ellenőrizzük a létrehozott fájlokat.

Remélem, hogy ez a blog informatív és hozzáadott értéket jelent Önnek. Ha érdekel, hogy többet tudjon meg, átélheti ezt amely a Big Data-ról és arról szól, hogy Hadoop hogyan oldja meg a Big Data-val kapcsolatos kihívásokat.

Most, hogy megértette az Apache Sqoop-ot, nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Az Edureka Big Data Hadoop tanúsító tanfolyam segít a tanulóknak a HDFS, a fonal, a MapReduce, a Pig, a Hive, a HBase, az Oozie, a Flume és a Sqoop szakértőivé válni, valós idejű felhasználási esetek felhasználásával a kiskereskedelem, a szociális média, a repülés, az idegenforgalom és a pénzügy területén.

Van egy kérdésünk? Kérjük, említse meg a megjegyzések részben, és kapcsolatba lépünk Önnel.