Spark vs Hadoop: Melyik a legjobb Big Data Framework?



Ez a blogbejegyzés az apache spark vs hadoop szóról szól. Ez ötletet ad arról, hogy melyik a megfelelő Big Data keretrendszer, amelyet különféle esetekben kell választani.

Ezt az Apache Spark vs Hadoop blogot úgy kezdem, hogy először bemutatom a Hadoopot és a Sparkot, hogy beállítsam a megfelelő kontextust mindkét keretrendszerhez. Ezután haladva összehasonlítjuk a Big Data keretrendszereket különböző paramétereken, hogy elemezzük azok erősségeit és gyengeségeit.De bármi is legyen az összehasonlításunk eredménye, tudnia kell, hogy mind a Spark, mind a Hadoop a .

Apache Spark vs Hadoop: Bevezetés a Hadoop-ba

A Hadoop egy olyan keretrendszer, amely lehetővé teszi, hogy először tárolja a Big Data-ot egy elosztott környezetben, így párhuzamosan tudja feldolgozni. A Hadoop-ban alapvetően két komponens van:





HDFS

A HDFS az erőforrások absztrakcióját hozza létre, hadd egyszerűsítsem az Ön számára. A virtualizációhoz hasonlóan logikailag is láthatja a HDFS-t a Big Data tárolására szolgáló egységként, de valójában elosztott módon több csomóponton tárolja adatait. Itt van a master-slave architektúra. A HDFS-ben a Namenode egy fő csomópont, a Datanode pedig slave.

NameNode

A fő démon az, amely fenntartja és kezeli a DataNode-okat (slave-csomópontok). A fürtben tárolt összes fájl metaadatait rögzíti, pl. A tárolt blokkok helye, a fájlok mérete, az engedélyek, a hierarchia stb. Ez rögzíti a fájlrendszer metaadatainak minden egyes változását.



Például, ha egy fájlt törölnek a HDFS-ből, a NameNode ezt azonnal rögzíti az EditLog-ban. Rendszeresen kap egy szívverést és egy blokkjelentést a fürt összes DataNode-jától annak biztosítása érdekében, hogy a DataNodes éljen. Nyilvántartást vezet a HDFS összes blokkjáról és arról, hogy ezek a blokkok mely csomópontokban vannak tárolva.

DataNode

Ezek rabszolga démonok, amelyek minden rabszolgagépen futnak. A tényleges adatokat a DataNodes tárolja. Feladataik az ügyfelek olvasási és írási kérelmeinek kiszolgálása. Felelősek a blokkok létrehozásáért, a blokkok törléséért és azok replikálásáért is a NameNode által hozott döntések alapján.

HDFS - Apache Spark vs Hadoop - EdurekaFONAL

A YARN az összes feldolgozási tevékenységét erőforrások kiosztásával és ütemezési feladatokkal hajtja végre. Két nagy démonja van, azaz Erőforrás menedzser és NodeManager .



Erőforrás menedzser

Ez egy fürtszintű (minden fürtönként egy) összetevő, és a főgépen fut. Kezeli a YARN tetején futó erőforrásokat és ütemezi az alkalmazásokat.

NodeManager

Ez egy csomópont szintű összetevő (minden csomóponton egy), és minden slave gépen fut. Felelős a tárolók kezeléséért és az egyes tárolók erőforrás-felhasználásának ellenőrzéséért. Ezenkívül nyomon követi a csomópontok állapotát és a naplókezelést is. Folyamatosan kommunikál a ResourceManagerrel, hogy naprakész maradjon. Tehát párhuzamos feldolgozást hajthat végre HDFS-en a MapReduce használatával.

Ha többet szeretne megtudni a Hadoopról, átélheti ezt blog. Most, hogy mindannyian készen állunk a Hadoop bevezetésre, térjünk át a Spark bemutatkozására.

Apache Spark vs Hadoop: Bevezetés az Apache Spark-ba

Az Apache Spark egy keretrendszer a valós idejű adatelemzéshez elosztott számítási környezetben. Memórián belüli számításokat hajt végre az adatfeldolgozás sebességének növelése érdekében. Gyorsabb a nagyméretű adatok feldolgozásához, mivel kihasználja a memóriában lévő számításokat és más optimalizálásokat. Ezért nagy feldolgozási teljesítményre van szükség.

A rugalmas elosztott adatkészlet (RDD) a Spark alapvető adatstruktúrája. Ez egy megváltoztathatatlan elosztott tárgyi gyűjtemény. Az RDD egyes adatkészletei logikai partíciókra vannak felosztva, amelyeket a fürt különböző csomópontjain lehet kiszámítani. Az RDD-k bármilyen típusú Python, Java vagy Scala objektumot tartalmazhatnak, beleértve a felhasználó által definiált osztályokat is. A szikra alkatrészei gyors és megbízható. Az Apache Spark a következő összetevőket tartalmazza:

program egy szám megfordítására java-ban
  1. Szikra mag - A Spark Core a nagyszabású párhuzamos és elosztott adatfeldolgozás alapmotorja. Ezenkívül a mag tetején felépített további könyvtárak sokféle terhelést tesznek lehetővé a streaming, az SQL és a gépi tanulás számára. Felelős a memóriakezelésért és a hibák helyreállításáért, a fürtön lévő feladatok ütemezéséért, terjesztéséért és megfigyeléséért, valamint a tárolórendszerekkel való interakcióért.
  2. Spark Streaming - A Spark Streaming a Spark összetevője, amelyet a valós idejű adatfolyamok feldolgozására használnak. Így hasznos kiegészítés az alapvető Spark API-hoz. Lehetővé teszi az élő adatfolyamok nagy áteresztőképességű és hibatűrő adatfolyam-feldolgozását
  3. Spark SQL : A Spark SQL egy új modul a Sparkban, amely integrálja a relációs feldolgozást a Spark funkcionális programozási API-jával. Támogatja az adatok lekérdezését akár SQL-en, akár a Hive Query Language-en keresztül. Azok számára, akik ismerik az RDBMS-t, a Spark SQL egyszerű átmenet lesz a korábbi eszközeiről, ahol kiterjesztheti a hagyományos relációs adatfeldolgozás határait.
  4. GraphX : A GraphX ​​a Spark API grafikonokhoz és gráfokkal párhuzamos számításokhoz. Így kiterjeszti a Spark RDD-t egy Rugalmas elosztott tulajdonság-gráffal. Magas szinten a GraphX ​​kiterjeszti a Spark RDD absztrakciót a Rugalmas elosztott tulajdonsággrafikon bevezetésével: egy irányított multigráf, amelynek tulajdonságai minden csúcshoz és élhez kapcsolódnak.
  5. MLlib (Machine Learning): Az MLlib a Machine Learning Library rövidítése. A Spark MLlib gépi tanulás végrehajtására szolgál az Apache Spark alkalmazásban.

Amint láthatja, a Spark magas szintű könyvtárakkal rendelkezik, beleértve az R, SQL, Python, Scala, Java stb. Támogatását. Ezek a szabványos könyvtárak növelik a zökkenőmentes integrációkat az összetett munkafolyamatokban. Ezen túlmenően lehetővé teszi a különféle szolgáltatások integrálását vele, például az MLlib, a GraphX, az SQL + Data Frames, a Streaming szolgáltatások stb.

Ha többet szeretne megtudni az Apache Sparkról, átélheti ezt blog. Most az alapja az Apache Spark vs Hadoop számára. Haladjunk előre, és hasonlítsuk össze az Apache Spark-ot a Hadoop-tal különböző paramétereken, hogy megértsük erősségeiket.

Apache Spark vs Hadoop: Összehasonlítandó paraméterek

Teljesítmény

A szikra gyors, mert memóriájában van feldolgozása. A lemezt olyan adatokhoz is felhasználhatja, amelyek nem férnek el a memóriában. A Spark memóriában történő feldolgozása szinte valós idejű elemzéseket nyújt. Ez alkalmassá teszi a Sparkot hitelkártya-feldolgozó rendszer, gépi tanulás, biztonsági elemzések és a tárgyak internete szenzorainak használatára.

A Hadoop eredetileg úgy volt beállítva, hogy folyamatosan gyűjtsön adatokat több forrásból anélkül, hogy aggódna az adatok típusa és az elosztott környezetben történő tárolása miatt. A MapReduce kötegelt feldolgozást használ. A MapReduce soha nem valós idejű feldolgozásra készült, a YARN fő gondolata a párhuzamos feldolgozás az elosztott adatkészlet felett.

A kettő összehasonlításával az a probléma, hogy különböző módon végzik a feldolgozást.

Egyszerű használat

A Spark felhasználóbarát API-kat tartalmaz a Scala, a Java, a Python és a Spark SQL számára. A Spark SQL nagyon hasonlít az SQL-hez, így az SQL-fejlesztők számára könnyebbé válik a tanulás. A Spark interaktív héjat is biztosít a fejlesztők számára, hogy lekérdezzenek és végrehajtsanak más műveleteket, valamint azonnali visszajelzést kapjanak.

A Hadoop-ban egyszerűen beolvashatja az adatokat, akár shell használatával, akár több eszközzel, például Sqoop, Flume stb. Integrálva. A YARN csak egy feldolgozási keretrendszer, és integrálható több eszközzel, például a Hive és a Pig. A HIVE egy adattárházi összetevő, amely elosztott környezetben nagy adathalmazok olvasását, írását és kezelését végzi SQL-szerű felület használatával. Ezt átélheti Hadoop ökoszisztéma blog a Hadoop-tal integrálható különféle eszközökről.

Költségek

A Hadoop és a Spark egyaránt Apache nyílt forráskódú projekt, így a szoftvernek nincs költsége. A költségek csak az infrastruktúrához kapcsolódnak. Mindkét terméket úgy tervezték, hogy alacsony TCO-val rendelkező árucikk-hardveren fusson.

Most arra lehet kíváncsi, hogyan különböznek egymástól. A Hadoopban történő tárolás és feldolgozás lemezalapú, és a Hadoop szabványos memóriamennyiséget használ. Tehát a Hadoop segítségével sok lemezterületre van szükségünk, valamint gyorsabb lemezekre. A lemez I / O terjesztéséhez a Hadoopnak több rendszerre is szüksége van.

Az Apache Spark memóriafeldolgozásának köszönhetően sok memória szükséges, de képes kezelni a normál sebességet és mennyiségű lemezt. Mivel a lemezterület viszonylag olcsó árucikk, és mivel a Spark nem használja a lemez I / O-t a feldolgozáshoz, ehelyett nagy mennyiségű RAM-ra van szükség a memóriában lévő összes dolog végrehajtásához. Így a Spark rendszer több költséggel jár.

De igen, egy fontos dolog, amit szem előtt kell tartani, hogy a Spark technológiája csökkenti a szükséges rendszerek számát. Lényegesen kevesebb rendszerre van szüksége, amelyek többe kerülnek. Tehát lesz egy olyan pont, amikor a Spark csökkenti a számítási egységenkénti költségeket még a további RAM-igény mellett is.

hogyan lehet beolvasni egy karaktert a java-ban

Adatfeldolgozás

Kétféle adatfeldolgozás létezik: kötegelt feldolgozás és adatfolyam-feldolgozás.

Kötegelt feldolgozás vs adatfolyam-feldolgozás

Kötegelt feldolgozás : A kötegelt feldolgozás kulcsfontosságú volt a big data világ számára. A legegyszerűbben kifejezve, a kötegelt feldolgozás nagy, egy időszak alatt összegyűjtött adatmennyiséggel dolgozik. A kötegelt feldolgozás során az adatokat először összegyűjtik, majd egy későbbi szakaszban előállítják a feldolgozott eredményeket.

A kötegelt feldolgozás hatékony módja a nagy, statikus adatkészletek feldolgozásának. Általában az archivált adatkészletek kötegelt feldolgozását hajtjuk végre. Például egy ország átlagos jövedelmének kiszámítása vagy az e-kereskedelem elmúlt évtizedbeli változásának értékelése.

Adatfolyam feldolgozása : Az adatfolyam feldolgozás a jelenlegi trend a big data világban. Az óra igénye a sebesség és a valós idejű információ, amit a gőzfeldolgozás végez. A kötegelt feldolgozás nem teszi lehetővé a vállalkozások számára, hogy valós időben gyorsan reagáljanak a változó üzleti igényekre, az adatfolyam-feldolgozás gyors növekedést mutatott.

Most visszatérve az Apache Spark vs Hadoop oldalra, a YARN alapvetően kötegelt feldolgozási keretrendszer. Amikor elküldünk egy munkát a YARN-nak, az kiolvassa a fürt adatait, végrehajtja a műveletet és visszaírja az eredményeket a fürtbe. Ezután újra elolvassa a frissített adatokat, elvégzi a következő műveletet, és az eredményeket visszaírja a fürtbe, és így tovább.

A Spark hasonló műveleteket hajt végre, de a memóriában történő feldolgozást használja és optimalizálja a lépéseket. A GraphX ​​lehetővé teszi a felhasználók számára, hogy ugyanazokat az adatokat nézzék meg, mint grafikonok és gyűjtemények. A felhasználók átalakíthatják és összekapcsolhatják a grafikonokat a Rugalmas elosztott adatkészletek (RDD) segítségével is.

Hibatűrés

Hadoop és Spark egyaránt hibatűrést biztosít, de mindkettő eltérő megközelítést alkalmaz. HDFS és YARN esetén a master démonok (azaz a NameNode és a ResourceManager) ellenőrzik a rabszolga démonok (azaz a DataNode és a NodeManager) szívverését. Ha bármelyik rabszolga démon meghiúsul, a mester démonok minden függőben lévő és folyamatban lévő műveletet átterjesztenek egy másik rabszolgára. Ez a módszer hatékony, de jelentősen megnövelheti az egyszeres meghibásodással járó műveletek befejezési idejét is. Mivel a Hadoop árucikk-hardvert használ, a HDFS egy másik módja az adatok replikálásával biztosítja a hibatűrést.

Amint fentebb tárgyaltuk, az RDD-k az Apache Spark építőkövei. Az RDD-k hibatűrést biztosítanak a Spark számára. Hivatkozhatnak a külső tárolórendszerben található bármely adatkészletre, például HDFS, HBase, megosztott fájlrendszerre. Párhuzamosan működtethetők.

Az RDD-k megőrizhetik az adatkészletet a memóriában a műveletek során, ami a jövőbeni műveleteket tízszer sokkal gyorsabbá teszi. Ha elveszik egy RDD, akkor azt az eredeti transzformációk segítségével automatikusan kiszámítják. A Spark így biztosítja a hibatűrést.

Biztonság

A Hadoop támogatja a Kerberos hitelesítését, de ezt nehéz kezelni. Mindazonáltal olyan harmadik fél gyártókat is támogat, mint az LDAP (Lightweight Directory Access Protocol) a hitelesítéshez. Titkosítást is kínálnak. A HDFS támogatja a hagyományos fájlengedélyeket, valamint a hozzáférés-vezérlési listákat (ACL). A Hadoop szolgáltatási szintű engedélyt biztosít, amely garantálja, hogy az ügyfelek megfelelő jogosultságokkal rendelkeznek a munkák benyújtásához.

A Spark jelenleg támogatja a megosztott titkos hitelesítést. A Spark integrálható a HDFS-be, és felhasználhatja a HDFS ACL-eket és a fájlszintű engedélyeket. A Spark a YARN-on is futtatható, kihasználva a Kerberos képességeit.

Olyan esetek, amikor a Hadoop illik a legjobban:

  • Archív adatok elemzése. A YARN lehetővé teszi hatalmas mennyiségű adat párhuzamos feldolgozását. Az adatok egyes részeit párhuzamosan és külön-külön dolgozzák fel a különböző DataNode-okon, és az egyes NodeManager eredmények összegyűjtik.
  • Ha nincs szükség azonnali eredményre. A Hadoop MapReduce jó és gazdaságos megoldás a kötegelt feldolgozáshoz.

Olyan esetek, amikor a Spark illik a legjobban:

Valós idejű nagy adatok elemzése:

A valós idejű adatelemzés azt jelenti, hogy a valós idejű eseményfolyamok által generált adatok feldolgozása másodpercenként több millió esemény ütemével történik, például a Twitter adatai. A Spark erőssége abban rejlik, hogy támogatja az adatok továbbítását az elosztott feldolgozással együtt. Ez egy hasznos kombináció, amely szinte valós idejű adatfeldolgozást biztosít. A MapReduce olyan előnyökkel jár, hogy nagy mennyiségű adat kötegelt elosztott feldolgozását tervezték. A valós idejű adatok továbbra is feldolgozhatók a MapReduce-on, de sebessége közel sem felel meg a Spark sebességének.

hogyan adja át az értéket java-ban

A Spark azt állítja, hogy az adatok feldolgozása 100x gyorsabb, mint a MapReduce, míg a lemezekkel 10x gyorsabb.

Grafikon feldolgozása:

A legtöbb gráffeldolgozó algoritmus, például az oldalrangsor, többszörös iterációt hajt végre ugyanazon az adaton, és ehhez üzenetátadási mechanizmusra van szükség. Kifejezetten be kell programoznunk a MapReduce-ot, hogy ugyanazon adatok felett kezeljük az ilyen többszörös iterációkat. Nagyjából így működik: Olvassa el az adatokat a lemezről, és egy bizonyos iteráció után írjon eredményeket a HDFS-be, majd olvassa el az adatokat a HDFS-től a következő iterációhoz. Ez nagyon nem hatékony, mivel magában foglalja az adatok olvasását és írását a lemezre, ami nehéz I / O műveletekkel és az adatok replikációjával jár a fürtön a hibatűrés érdekében. Ezenkívül minden MapReduce iterációnak nagyon magas a késleltetése, és a következő iteráció csak az előző feladat teljes befejezése után kezdődhet meg.

Az üzenet átadásához a szomszédos csomópontok pontszámai is szükségesek egy adott csomópont pontszámának értékeléséhez. Ezekhez a számításokhoz a szomszédoktól kellenek üzenetek (vagy a munka több szakaszának adatai), ez a mechanizmus hiányzik a MapReduce-ból. Különböző gráffeldolgozó eszközöket, például a Pregel és a GraphLab fejlesztettek ki annak érdekében, hogy kielégítsék a gráffeldolgozó algoritmusok hatékony platformjának szükségességét. Ezek az eszközök gyorsak és méretezhetők, de nem hatékonyak ezen összetett többlépcsős algoritmusok létrehozásához és utófeldolgozásához.

Az Apache Spark bemutatása nagy mértékben megoldotta ezeket a problémákat. A Spark egy GraphX ​​nevű grafikonszámítási könyvtárat tartalmaz, amely leegyszerűsíti az életünket. A memóriában történő számítás és a beépített grafikon támogatás egy vagy két fokos nagyságrenddel javítja az algoritmus teljesítményét a hagyományos MapReduce programokkal szemben. A Spark a Netty és az Akka kombinációját használja az üzenetek terjesztésére a végrehajtók között. Nézzünk meg néhány olyan statisztikát, amely a PageRank algoritmus teljesítményét ábrázolja a Hadoop és a Spark segítségével.

Iteratív gépi tanulási algoritmusok:

Szinte az összes gépi tanulási algoritmus iteratívan működik. Amint azt korábban láthattuk, az iteratív algoritmusok I / O szűk keresztmetszeteket vonnak be a MapReduce megvalósításaiba. A MapReduce durva részletezésű feladatokat (feladat szintű párhuzamosság) használ, amelyek túl nehézek az iteratív algoritmusokhoz. Szikra a Mesos segítségével - egy elosztott rendszermag, minden iteráció után gyorsítótárba helyezi a köztes adatkészletet, és több iterációt futtat ezen a gyorsítótárazott adatkészleten, amely csökkenti az I / O-t és segít az algoritmus gyorsabb futtatásában hibatűrő módon.

A Spark rendelkezik beépített, skálázható gépi tanulási könyvtárral, az MLlib néven, amely kiváló minőségű algoritmusokat tartalmaz, amelyek kihasználják az iterációkat és jobb eredményeket hoznak, mint a MapReduce-on néha használt egy lépéses közelítések.

  • Gyors adatfeldolgozás. Mint tudjuk, a Spark lehetővé teszi a memóriában történő feldolgozást. Ennek eredményeként a Spark akár 100-szor gyorsabb a RAM-ban tárolt adatoknál, és akár 10-szer gyorsabb a tárolt adatoknál.
  • Iteratív feldolgozás. A Spark RDD-je lehetővé teszi több térképi művelet végrehajtását a memóriában, anélkül, hogy átmeneti adatsorokat kellene lemezre írni.
  • Valós idejű feldolgozás. A Spark kiváló eszköz azonnali üzleti betekintéshez. Ez az oka annak, hogy a Sparkot a hitelkártya streaming rendszerében használják.

- Apache Spark: Apache Hadoop gyilkos vagy megmentője?

A válasz erre - A Hadoop MapReduce és az Apache Spark nem versenyeznek egymással. Valójában egész jól kiegészítik egymást. A Hadoop hatalmas adatállományokat hoz ellenőrzés alá az árucikk-rendszerek által. A Spark valós idejű, memóriában történő feldolgozást biztosít azoknak az adathalmazoknak, amelyek ezt igénylik. Ha kombináljuk, az Apache Spark képessége, vagyis a nagy feldolgozási sebesség, az előrehozott elemzés és a többszörös integráció támogatása a Hadoop áruhardveren végzett alacsony költségű műveletével adja a legjobb eredményt. Hadoop az Apache Spark képességeit dicséri. A Spark nem tudja teljesen helyettesíteni a Hadoop-ot, de jó hír, hogy a Spark iránti kereslet jelenleg minden idők legmagasabb szintje! Ez a megfelelő alkalom a Spark elsajátítására, és a lehető legjobban kihasználni az utadba kerülő karrierlehetőségeket. Kezd el most!

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

Ha meg akarja tanulni a Sparkot, és karriert szeretne kialakítani a Spark területén, hogy nagyméretű adatfeldolgozást hajtson végre az RDD, a Spark Streaming, a SparkSQL, az MLlib, a GraphX ​​és a Scala segítségével a Real Life használati esetekkel, nézze meg interaktív, élő online oldalunkat itt, 24 * 7 támogatással jár, amely végigvezeti Önt a tanulási időszak alatt.