Mi a Hadoop?

A Hadoop egy nyílt forráskódú, Java-alapú keretrendszer, amelyet nagy mennyiségű adat tárolására és feldolgozására használnak. Az adatokat olcsó commodity szervereken tárolják, amelyek fürtökben futnak. Elosztott fájlrendszere lehetővé teszi az egyidejű feldolgozást és a hibatűrést. A Doug Cutting és Michael J. Cafarella által kifejlesztett Hadoop a MapReduce programozási modellt használja az adatok gyorsabb tárolására és lekérdezésére a csomópontokról. A keretrendszert az Apache Software Foundation kezeli, és az Apache License 2.0.

Évek óta, miközben az alkalmazásszerverek feldolgozási teljesítménye sokszorosára nőtt, az adatbázisok korlátozott kapacitásuk és sebességük miatt lemaradtak. Napjainkban azonban, amikor számos alkalmazás nagy mennyiségű feldolgozandó adatot generál, a Hadoop jelentős szerepet játszik abban, hogy az adatbázisok világa megkapja az oly szükséges átalakítást.

Download Hadoop and Data Lakes now.
Read Now

Üzleti szempontból is vannak közvetlen és közvetett előnyök. A nyílt forráskódú technológia olcsó, többnyire felhőben (és néha helyben) lévő szervereken történő alkalmazásával a szervezetek jelentős költségmegtakarítást érnek el.

Az adatok tömeges összegyűjtésének képessége és az ezen adatok összezúzásából származó meglátások emellett jobb üzleti döntéseket eredményeznek a valós életben – például a megfelelő fogyasztói szegmensre való összpontosítás, a hibás folyamatok kiszűrése vagy kijavítása, az emeleti műveletek optimalizálása, releváns keresési eredmények biztosítása, prediktív elemzések végrehajtása és így tovább.

Hogyan javítja a Hadoop a hagyományos adatbázisokat

A Hadoop a hagyományos adatbázisok két fő kihívását oldja meg:

Kapacitás: A Hadoop nagy mennyiségű adatot tárol.

A HDFS (Hadoop Distributed File System) nevű elosztott fájlrendszer használatával az adatokat darabokra osztják, és árukiszolgálókból álló fürtökben tárolják. Mivel ezek az árukiszolgálók egyszerű hardverkonfigurációkkal épülnek, az adatok növekedésével ezek gazdaságosak és könnyen skálázhatók.

Gyorsaság: A Hadoop gyorsabban tárolja és lekérdezi az adatokat.

A Hadoop a MapReduce funkcionális programozási modellt használja az adathalmazok párhuzamos feldolgozására. Így amikor egy lekérdezést elküldünk az adatbázisba, az adatok szekvenciális feldolgozása helyett a feladatok felosztásra kerülnek, és párhuzamosan futnak az elosztott szervereken. Végül az összes feladat kimenetét összesítik és visszaküldik az alkalmazásnak, drasztikusan javítva a feldolgozási sebességet.

A Hadoop 5 előnye a nagy adatokhoz

A nagy adatok és az analitika számára a Hadoop életmentő. Az emberekről, folyamatokról, tárgyakról, eszközökről stb. gyűjtött adatok csak akkor hasznosak, ha értelmes minták jelennek meg, amelyek viszont jobb döntéseket eredményeznek. A Hadoop segít leküzdeni a nagy adatmennyiségből adódó kihívást:

  1. Rugalmasság – A bármelyik csomópontban tárolt adatok a fürt többi csomópontjában is replikálódnak. Ez biztosítja a hibatűrést. Ha az egyik csomópont leáll, a fürtben mindig rendelkezésre áll egy biztonsági másolat az adatokról.
  2. Skálázhatóság – A hagyományos rendszerekkel ellentétben, amelyeknek az adattárolás korlátot szab, a Hadoop skálázható, mivel elosztott környezetben működik. Szükség esetén a felállítás könnyen bővíthető további szerverekkel, amelyek akár több petabájtnyi adatot is tárolhatnak.
  3. Alacsony költségek – Mivel a Hadoop nyílt forráskódú keretrendszer, és nem kell licencet beszerezni, a költségek jelentősen alacsonyabbak a relációs adatbázis-rendszerekhez képest. Az olcsó commodity hardverek használata szintén a megoldás gazdaságossága mellett szól.
  4. Sebesség – A Hadoop elosztott fájlrendszere, az egyidejű feldolgozás és a MapReduce modell lehetővé teszi az összetett lekérdezések másodpercek alatt történő futtatását.
  5. Adatdiverzitás – A HDFS képes különböző adatformátumok tárolására, például strukturálatlan (pl. videók), félig strukturált (pl. XML-fájlok) és strukturált adatok tárolására. Az adatok tárolása során nem szükséges egy előre meghatározott séma alapján validálni. Inkább az adatokat bármilyen formátumban ki lehet dobni. Később, a lekérdezéskor az adatok elemzése és bármilyen sémába való illesztése szükség szerint történik. Ez rugalmasságot biztosít ahhoz, hogy ugyanazokból az adatokból különböző meglátásokat lehessen levezetni.

Download O’Reilly Report: Moving Hadoop to the Cloud most.
Read Now

A Hadoop ökoszisztéma: Core Components

A Hadoop nem csupán egy alkalmazás, hanem egy platform, amelynek különböző szerves összetevői lehetővé teszik az elosztott adattárolást és -feldolgozást. Ezek a komponensek együtt alkotják a Hadoop ökoszisztémát.

Egy részük alapkomponens, amely a keretrendszer alapját képezi, míg mások kiegészítő komponensek, amelyek kiegészítő funkciókat hoznak a Hadoop világába.

A Hadoop alapkomponensei:

HDFS: Az elosztott fájlrendszer fenntartása

A HDFS a Hadoop pillére, amely az elosztott fájlrendszert tartja fenn. Lehetővé teszi az adatok tárolását és replikálását több szerveren keresztül.

A HDFS-nek van egy NameNode és egy DataNode. A DataNode-ok azok az árukiszolgálók, ahol az adatokat ténylegesen tárolják. A NameNode viszont metaadatokat tartalmaz a különböző csomópontokon tárolt adatokra vonatkozó információkkal. Az alkalmazás csak a NameNode-dal lép kapcsolatba, amely szükség szerint kommunikál az adatcsomópontokkal.

YARN: Yet Another Resource Negotiator

YARN a Yet Another Resource Negotiator rövidítése. Ez kezeli és ütemezi az erőforrásokat, és eldönti, hogy mi történjen az egyes adatcsomópontokban. A központi fő csomópontot, amely az összes feldolgozási kérést kezeli, erőforrás-kezelőnek nevezik. Az erőforrás-kezelő a csomópont-kezelőkkel lép kölcsönhatásba; minden szolga adatcsomópontnak saját csomópont-kezelője van a feladatok végrehajtásához.

MapReduce

A MapReduce egy programozási modell, amelyet először a Google használt a keresési műveletek indexelésére. Ez a logika az adatok kisebb halmazokra való felosztására szolgál. Két függvény – Map() és Reduce() – alapján működik, amelyek gyorsan és hatékonyan elemzik az adatokat.

Először a Map függvény több adathalmazt csoportosít, szűr és rendez párhuzamosan, hogy tuplikat (kulcs-érték párokat) hozzon létre. Ezután a Reduce függvény aggregálja az adatokat ezekből a tuplikból a kívánt kimenet előállításához.

A Hadoop ökoszisztéma: Kiegészítő komponensek

A következőkben néhány kiegészítő komponenst mutatunk be, amelyeket széles körben használnak a Hadoop ökoszisztémában.

Hive: Adattárház

A Hive egy adattárházi rendszer, amely segít a HDFS-ben lévő nagy adathalmazok lekérdezésében. A Hive előtt a fejlesztőknek azzal a kihívással kellett szembenézniük, hogy összetett MapReduce feladatokat hozzanak létre a Hadoop-adatok lekérdezéséhez. A Hive a HQL (Hive Query Language) nyelvet használja, amely hasonlít az SQL szintaxisára. Mivel a legtöbb fejlesztő SQL-háttérből érkezik, a Hive könnyebben elsajátítható.

A Hive előnye, hogy egy JDBC/ODBC-illesztőprogram működik interfészként az alkalmazás és a HDFS között. A Hadoop fájlrendszert táblázatként tárja fel, a HQL-t MapReduce feladatokká alakítja, és fordítva. Így miközben a fejlesztők és az adatbázis-adminisztrátorok a nagy adathalmazok kötegelt feldolgozásának előnyeit élvezik, egyszerű, megszokott lekérdezésekkel érhetik el ezt. Az eredetileg a Facebook csapata által kifejlesztett Hive ma már nyílt forráskódú technológia.

Pig: Reduce MapReduce Functions

Az eredetileg a Yahoo! által kifejlesztett Pig abban hasonlít a Hive-hoz, hogy kiküszöböli a MapReduce függvények létrehozásának szükségességét a HDFS lekérdezéséhez. A HQL-hez hasonlóan az alkalmazott nyelv – itt “Pig Latin” néven – közelebb áll az SQL-hez. A “Pig Latin” egy magas szintű adatáramlási nyelvi réteg a MapReduce tetején.

A Pignek van egy futásidejű környezete is, amely a HDFS-hez kapcsolódik. Az olyan nyelveken, mint a Java vagy a Python írt szkriptek is beágyazhatók a Pig-be.

Hive Versus Pig

Noha a Pig és a Hive hasonló funkciókkal rendelkezik, az egyik hatékonyabb lehet a másiknál különböző forgatókönyvekben.

A Pig hasznos az adatelőkészítési szakaszban, mivel könnyen képes összetett egyesítések és lekérdezések végrehajtására. Emellett jól működik különböző adatformátumokkal, beleértve a félig strukturált és strukturálatlan adatokat is. A Pig Latin közelebb áll az SQL-hez, de eléggé eltér az SQL-től ahhoz, hogy tanulási görbével járjon.

A Hive viszont jól működik strukturált adatokkal, ezért hatékonyabb az adattárházak készítése során. A fürtök szerveroldalán használják.

A kutatók és programozók inkább a Pig-et használják a fürtök kliensoldalán, míg az üzleti intelligencia felhasználói, például az adatelemzők a Hive-ot találják megfelelőnek.

Flume: Nagy adatbevitel

A Flume egy nagy adatbeviteli eszköz, amely futárszolgálatként működik több adatforrás és a HDFS között. Összegyűjti, aggregálja és a HDFS-be küldi az olyan alkalmazások által generált hatalmas mennyiségű streaming adatot (pl. naplófájlok, események), mint a közösségi médiaoldalak, IoT-alkalmazások és e-kereskedelmi portálok.

A Flume funkciógazdag, ez:

  • Elosztott architektúrával rendelkezik.
  • megbízható adatátvitelt biztosít.
  • Hibatűrő.
  • Flexibilissé teszi az adatgyűjtést kötegekben vagy valós időben.
  • Szükség szerint horizontálisan skálázható a nagyobb forgalom kezelésére.

Az adatforrások kommunikálnak a Flume-ügynökökkel – minden ügynöknek van egy forrása, egy csatornája és egy nyelője. A forrás begyűjti az adatokat a feladótól, a csatorna ideiglenesen tárolja az adatokat, végül a nyelő továbbítja az adatokat a célállomásra, ami egy Hadoop szerver.

Sqoop: Adatbevitel relációs adatbázisokhoz

A Sqoop (“SQL”, a Hadoop számára) egy másik adatbeviteli eszköz, mint a Flume. Míg a Flume strukturálatlan vagy félig strukturált adatokon dolgozik, addig a Sqoop a relációs adatbázisokból történő adatexportra és relációs adatbázisokba történő adatimportra szolgál. Mivel a legtöbb vállalati adatot relációs adatbázisokban tárolják, a Sqoopot arra használják, hogy ezeket az adatokat importálják a Hadoopba, hogy az elemzők megvizsgálhassák.

Az adatbázis-adminisztrátorok és a fejlesztők egy egyszerű parancssori felületet használhatnak az adatok exportálásához és importálásához. A Sqoop ezeket a parancsokat MapReduce formátumba konvertálja, és a YARN segítségével elküldi a HDFS-be. A Sqoop emellett hibatűrő és a Flume-hoz hasonlóan párhuzamos műveleteket is végez.

Zookeeper: Elosztott alkalmazások koordinálása

A Zookeeper egy olyan szolgáltatás, amely elosztott alkalmazásokat koordinál. A Hadoop keretrendszerben adminisztrációs eszközként működik egy központi nyilvántartással, amely információkat tartalmaz az általa kezelt elosztott szerverek fürtjéről. Néhány kulcsfontosságú funkciója:

  • Konfigurációs információk karbantartása (a konfigurációs adatok közös állapota)
  • Nevezési szolgáltatás (név hozzárendelése az egyes szerverekhez)
  • Szinkronizációs szolgáltatás (kezeli a holtpontokat, versenyállapotokat és adatinkonzisztenciákat)
  • Vezető választás (konszenzus útján választ vezetőt a szerverek között)

A szerverek fürtjét, amelyen a Zookeeper szolgáltatás fut, “ensemble”-nek nevezzük. Az ensemble választ egy vezetőt a csoportból, a többiek pedig követőként viselkednek. A kliensek minden írási műveletét a vezetőn keresztül kell irányítani, míg az olvasási műveletek közvetlenül bármelyik szerverhez mehetnek.

A Zookeeper nagy megbízhatóságot és rugalmasságot biztosít a hibabiztos szinkronizáció, az atomicitás és az üzenetek szerializálása révén.

Kafka: Gyorsabb adatátvitel

A Kafka egy elosztott publish-subscribe üzenetküldő rendszer, amelyet gyakran használnak a Hadoop-pal együtt a gyorsabb adatátvitel érdekében. Egy Kafka fürt olyan szerverek csoportjából áll, amelyek közvetítőként működnek a termelők és a fogyasztók között.

A big data kontextusában a termelőre példa lehet egy érzékelő, amely hőmérsékleti adatokat gyűjt, hogy azokat továbbítsa vissza a szervernek. A fogyasztók a Hadoop szerverek. A termelők üzenetet tesznek közzé egy témában, a fogyasztók pedig a téma meghallgatásával húznak üzeneteket.

Egyetlen téma tovább osztható partíciókra. Minden azonos kulcsú üzenet egy adott partícióba érkezik. Egy fogyasztó egy vagy több partíciót is meghallgathat.

Azáltal, hogy az üzeneteket egy kulcs alá csoportosítjuk, és egy fogyasztó meghatározott partíciókat lát el, sok fogyasztó egyszerre hallgathatja ugyanazt a témát. Így egy téma párhuzamosítható, ami növeli a rendszer áteresztőképességét. A Kafka széles körben elterjedt a sebesség, a skálázhatóság és a robusztus replikáció miatt.

HBase: Nem relációs adatbázis

A HBase egy oszloporientált, nem relációs adatbázis, amely a HDFS tetején helyezkedik el. A HDFS egyik kihívása, hogy csak kötegelt feldolgozásra képes. Így az egyszerű interaktív lekérdezésekhez az adatokat továbbra is kötegekben kell feldolgozni, ami nagy késleltetéshez vezet.

A HBase úgy oldja meg ezt a kihívást, hogy alacsony késleltetéssel teszi lehetővé az egyes sorok lekérdezését hatalmas táblákon keresztül. Ezt úgy éri el, hogy belsőleg hash táblákat használ. Modellje a Google BigTable mintájára készült, amely a Google File System (GFS) elérését segíti.

A HBase skálázható, rendelkezik hibatámogatással, ha egy csomópont leáll, és jól kezeli a strukturálatlan és a félig strukturált adatokat is. Ezért ideális a nagy adattárolók analitikai célú lekérdezésére.

Letöltés O’Reilly Report: Moving Hadoop to the Cloud most.
Read Now

A Hadoop kihívásai

Noha a Hadoopot széles körben a big data egyik legfontosabb eszközének tekintik, még mindig vannak kihívások, amelyeket figyelembe kell venni. Ezek a kihívások a komplex ökoszisztéma jellegéből és abból fakadnak, hogy a Hadoop-funkciók elvégzéséhez fejlett technikai ismeretekre van szükség. A megfelelő integrációs platformmal és eszközökkel azonban a komplexitás jelentősen csökken, és így a vele való munka is könnyebbé válik.

Széles tanulási görbe

A Hadoop fájlrendszer lekérdezéséhez a programozóknak MapReduce függvényeket kell írniuk Java nyelven. Ez nem egyszerű, és meredek tanulási görbével jár. Emellett túl sok komponens alkotja az ökoszisztémát, és időbe telik megismerkedni velük.

A különböző adathalmazok különböző megközelítéseket igényelnek

A Hadoopban nincs “egyméretű” megoldás. A fent tárgyalt kiegészítő komponensek többsége egy-egy hiányosságra válaszul jött létre, amelyet ki kellett küszöbölni.

A Hive és a Pig például egyszerűbb módot biztosít az adathalmazok lekérdezésére. Emellett az adatbeviteli eszközök, mint például a Flume és a Sqoop, segítenek az adatokat több forrásból összegyűjteni. Számos más komponens is létezik, és a megfelelő választáshoz tapasztalatra van szükség.

A MapReduce korlátai

A MapReduce kiváló programozási modell a nagy adathalmazok kötegelt feldolgozására. Vannak azonban korlátai.

A fájlintenzív, többszörös olvasással és írással járó megközelítése nem alkalmas valós idejű, interaktív adatelemzésre vagy iteratív feladatokra. Az ilyen műveletekhez a MapReduce nem elég hatékony, és nagy késleltetéshez vezet. (Vannak megoldásai ennek a problémának. Az Apache egy olyan alternatíva, amely a MapReduce hiányát pótolja.)

Adatbiztonság

Amint a nagy adatok a felhőbe kerülnek, az érzékeny adatok a Hadoop szerverekre kerülnek, ami szükségessé teszi az adatbiztonság biztosítását. A hatalmas ökoszisztéma olyan sok eszközt tartalmaz, hogy fontos biztosítani, hogy minden eszköz megfelelő hozzáférési jogokkal rendelkezzen az adatokhoz. Megfelelő hitelesítésre, rendelkezésre bocsátásra, adattitkosításra és gyakori ellenőrzésre van szükség. A Hadoop képes kezelni ezt a kihívást, de a szakértelem és az aprólékos végrehajtás kérdése.”

Bár számos technológiai óriáscég használja már a Hadoop itt tárgyalt összetevőit, az iparágban még viszonylag újnak számít. A legtöbb kihívás ebből az új keletkezésből fakad, de egy robusztus big data integrációs platform mindegyiket megoldhatja vagy megkönnyítheti.

Hadoop vs Apache Spark

A MapReduce modell számos előnye ellenére nem hatékony interaktív lekérdezésekhez és valós idejű adatfeldolgozáshoz, mivel a feldolgozás egyes szakaszai között lemezes írásokra támaszkodik.

A Spark egy adatfeldolgozó motor, amely ezt a kihívást az in-memory adattárolás használatával oldja meg. Bár a Hadoop alprojektjeként indult, saját fürttechnológiával rendelkezik.

A Sparkot gyakran a HDFS tetején használják, hogy csak a Hadoop tárolási aspektusát használják ki. A feldolgozó algoritmushoz saját könyvtárakat használ, amelyek támogatják az SQL-lekérdezéseket, a streaminget, a gépi tanulást és a gráfokat.

Az adattudósok széles körben használják a Sparkot villámgyorsasága és elegáns, funkciógazdag API-jai miatt, amelyek megkönnyítik a nagy adathalmazokkal való munkát.

Bár úgy tűnhet, hogy a Spark előnyben van a Hadooppal szemben, mindkettő együtt is működhet. A követelményektől és az adathalmazok típusától függően a Hadoop és a Spark kiegészítik egymást. A Spark nem rendelkezik saját fájlrendszerrel, így tárolás szempontjából a HDFS-re vagy más hasonló megoldásokra van utalva.

Az igazi összehasonlítás valójában a Spark és a MapReduce modell feldolgozási logikája között zajlik. Amikor a RAM korlátozott, és az éjszakai munkákhoz a MapReduce jól illeszkedik. Az adatfolyamhoz, a gépi tanulási könyvtárak eléréséhez és a gyors, valós idejű műveletekhez azonban a Spark az ideális választás.

Egy jövő sok lehetőséggel

Alig egy évtized alatt a Hadoop nagyot lépett előre a számítástechnikai iparban. Ennek oka, hogy végre valóra váltotta az adatelemzés lehetőségét. A webhelylátogatások elemzésétől kezdve a csalások felderítésén át a banki alkalmazásokig sokrétűek az alkalmazási területei.

A Talend Open Studio for Big Data segítségével a Hadoop-beállítás könnyen integrálható bármilyen adatarchitektúrába. A Talend minden más adatkezelési megoldásnál több beépített adatkonnektort kínál, így zökkenőmentes adatáramlást építhet a Hadoop és bármelyik főbb fájlformátum (CSV, XML, Excel stb.), adatbázisrendszer (Oracle, SQL Server, MySQL stb.), csomagolt vállalati alkalmazás (SAP, SugarCRM stb.), sőt, olyan felhőalapú adatszolgáltatások, mint a Salesforce és a Force.com között.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.