Sqoop bemutató: Mi az Apache Sqoop? Architecture & példa
Mi az SQOOP a Hadoopban?
Apache SQOOP (SQL-to-Hadoop) egy olyan eszköz, amely támogatja az adatok tömeges exportálását és HDFS-be való importálását strukturált adattárolókból, például relációs adatbázisokból, vállalati adattárházakból és NoSQL-rendszerekből. Ez egy adatmigrációs eszköz, amely egy csatlakozó architektúrán alapul, amely támogatja a bővítményeket az új külső rendszerekhez való csatlakozás biztosításához.
A Hadoop Sqoop példája egy olyan vállalat, amely éjszakai Sqoop importálást futtat, hogy a napi adatokat egy éles tranzakciós RDBMS-ből betöltse egy Kaptár adattárház a további elemzéshez.
A következő Apache Sqoop oktatóanyagban az Apache Sqoop architektúráról fogunk tanulni.
Sqoop Architectúra
Az összes létező Adatbázis-kezelő rendszerek tervezték SQL szabványt szem előtt tartva. Az egyes DBMS-ek azonban bizonyos mértékig eltérnek a nyelvjárás tekintetében. Tehát ez a különbség kihívásokat jelent a rendszerek közötti adatátvitel során. A Sqoop csatlakozók olyan összetevők, amelyek segítenek leküzdeni ezeket a kihívásokat.
A Sqoop Hadoop és a külső tárolórendszer közötti adatátvitel a Sqoop csatlakozóinak segítségével lehetséges.
A Sqoop csatlakozókkal rendelkezik számos népszerű relációs adatbázissal való munkavégzéshez, beleértve MySQL, PostgreSQL, Oracle, SQL Server és DB2. Ezen összekötők mindegyike tudja, hogyan léphet kapcsolatba a kapcsolódó DBMS-sel. Létezik egy általános JDBC-csatlakozó is, amellyel bármilyen támogatott adatbázishoz csatlakozhat JavaJDBC protokollja. Ezenkívül a Sqoop Big Data optimalizált MySQL és a PostgreSQL olyan összekötők, amelyek adatbázis-specifikus API-kat használnak a tömeges átvitelek hatékony végrehajtásához.
Ezen túlmenően a Sqoop in big data különféle harmadik féltől származó csatlakozókkal rendelkezik az adattárolókhoz, a nagyvállalatoktól kezdve adattárházak (beleértve a Netezza, a Teradata és Oracle) NoSQL-áruházakba (például Couchbase). Ezek a csatlakozók azonban nem tartoznak a Sqoop csomaggal; ezeket külön kell letölteni, és könnyen hozzáadhatók egy meglévő Sqoop telepítéshez.
Miért van szükségünk Sqoop-ra?
A Hadoop használatával végzett analitikai feldolgozás hatalmas mennyiségű adatot igényel különböző forrásokból a Hadoop-fürtökbe. Ez a heterogén forrásokból származó, tömeges adatok Hadoopba történő betöltése, majd feldolgozása bizonyos kihívásokkal jár. Az adatok konzisztenciájának fenntartása és biztosítása, valamint az erőforrások hatékony felhasználásának biztosítása néhány olyan tényező, amelyet figyelembe kell venni, mielőtt kiválasztaná az adatbetöltés megfelelő megközelítését.
Fő problémák:
1. Adatbetöltés parancsfájlok segítségével
Az adatok betöltésére szolgáló parancsfájlok hagyományos megközelítése nem alkalmas tömeges adatbetöltésre a Hadoopba; ez a megközelítés nem hatékony és nagyon időigényes.
2. Közvetlen hozzáférés külső adatokhoz a Map-Reduce alkalmazáson keresztül
A külső rendszerekben található adatokhoz való közvetlen hozzáférés biztosítása (a Hadoopba való betöltés nélkül) a térképcsökkentési alkalmazások számára bonyolítja ezeket az alkalmazásokat. Tehát ez a megközelítés nem kivitelezhető.
3. Amellett, hogy képes hatalmas mennyiségű adattal dolgozni, a Hadoop többféle formában is képes dolgozni az adatokkal. Így az ilyen heterogén adatok Hadoopba való betöltéséhez különböző eszközöket fejlesztettek ki. Sqoop és a Flume két ilyen adatbetöltő eszköz.
A következő, példákat tartalmazó Sqoop oktatóanyagban megismerjük a Sqoop, a Flume és a HDFS közötti különbséget.
Sqoop vs Flume vs HDFS a Hadoopban
Sqoop | Flume | HDFS |
---|---|---|
A Sqoop strukturált adatforrásokból, például RDBMS-ből származó adatok importálására szolgál. | A Flume tömeges streaming adatok HDFS-be helyezésére szolgál. | A HDFS egy elosztott fájlrendszer, amelyet a Hadoop ökoszisztéma használ az adatok tárolására. |
A Sqoop csatlakozó alapú architektúrával rendelkezik. A csatlakozók tudják, hogyan kell csatlakozni a megfelelő adatforráshoz és lekérni az adatokat. | A Flume ügynökalapú architektúrával rendelkezik. Itt egy kódot írnak (amelyet "ügynöknek" neveznek), amely gondoskodik az adatok lekéréséről. | A HDFS elosztott architektúrájú, ahol az adatok több adatcsomópont között vannak elosztva. |
A HDFS az adatimportálás célhelye a Sqoop használatával. | Az adatok nulla vagy több csatornán keresztül áramlanak a HDFS-hez. | A HDFS az adattárolás végső célpontja. |
A Sqoop adatbetöltés nem eseményvezérelt. | A Flume adatterhelését egy esemény is előidézheti. | A HDFS csak tárolja a számára bármilyen módon biztosított adatokat. |
Ahhoz, hogy adatokat strukturált adatforrásokból importálhassunk, csak Sqoop parancsokat kell használni, mert a csatlakozói tudják, hogyan kommunikálnak a strukturált adatforrásokkal, és hogyan kérhetnek le adatokat azokból. | A streaming adatok, például a Twitteren generált tweetek vagy egy webszerver naplófájljainak betöltéséhez a Flume alkalmazást kell használni. A Flume ügynökök a streaming adatok lekérésére készültek. | A HDFS-nek saját beépített shell-parancsai vannak az adatok tárolására. A HDFS nem tud streaming adatokat importálni |