Apache Hadoop | |
---|---|
Típusú | keretrendszer |
Szerző | Doug vágás [d] |
Fejlesztő | Apache Software Foundation |
Beírva | Jáva |
Operációs rendszer | cross-platform és POSIX |
Első kiadás | 2006. április 1. [1] |
Hardver platform | Java virtuális gép |
legújabb verzió | |
Engedély | Apache License 2.0 és GNU GPL |
Weboldal | hadoop.apache.org _ |
Médiafájlok a Wikimedia Commons oldalon |
A Hadoop az Apache Software Foundation projektje , amely szabadon terjesztett segédprogramok , könyvtárak és keretrendszer a több száz és több ezer csomópontból álló fürtökön futó elosztott programok fejlesztésére és végrehajtására . Keresési és kontextuális mechanizmusok megvalósítására szolgál számos nagy terhelésű webhelyen, beleértve a Yahoo! és a Facebook [2] . Java nyelven a MapReduce számítási paradigma keretein belül fejlesztették ki , amely szerint az alkalmazás nagyszámú azonos elemi feladatra van felosztva, amelyek a fürt csomópontjain végrehajthatók, és természetesen a végeredményre redukálódnak.
2014-től a projekt négy modulból áll - Hadoop Common ( középső szoftver - infrastrukturális szoftverkönyvtárak és segédprogramok, amelyeket más modulokhoz és kapcsolódó projektekhez használnak), HDFS ( elosztott fájlrendszer ) , YARN (feladatok ütemezésére és fürt kezelésére szolgáló rendszer) és Hadoop MapReduce (platform az elosztott MapReduce számítások programozására és végrehajtására), korábban a Hadoop számos más projektet is tartalmazott, amelyek függetlenné váltak az Apache Software Foundation projektrendszeren belül.
A „ big data ” egyik alaptechnológiájának tartják . A Hadoop körül a kapcsolódó projektek és technológiák teljes ökoszisztémája alakult ki, amelyek közül sokat kezdetben a projekt részeként fejlesztettek ki, majd később függetlenné váltak. A 2000-es évek második fele óta folyamatban van a technológia aktív kereskedelmi forgalomba hozatala , több vállalat teljes egészében a Hadoop és az ökoszisztéma műszaki támogatási szolgáltatások kereskedelmi disztribúcióinak létrehozására, valamint szinte az összes jelentősebb információs technológia létrehozására építi. A szervezetek szolgáltatói ilyen vagy olyan formában tartalmazzák a Hadoop-ot a termékstratégiákban és termékvonalakban.
A fejlesztést 2005 elején Doug Cutting kezdeményezte azzal a céllal, hogy elosztott számítástechnikai szoftver-infrastruktúrát építsenek ki a Nutch projekthez , egy ingyenes Java szoftverkeresőhöz , ideológiai alapja a Google munkatársainak, Jeffrey Deannek és Sanjay Gemawatnak a publikációja volt [3]. a MapReduce [4] számítási koncepcióiról . Az új projekt az alapító játék elefántról kapta a nevét [5] .
2005 és 2006 között a Hadoop-ot két fejlesztő – Cutting és Mike Cafarella ( Mike Cafarella ) fejlesztette részmunkaidőben [4] , először a Nutch projekt, majd a Lucene projekt részeként . 2006 januárjában Cutting felkérést kapott a Yahoo - tól, hogy vezessen egy dedikált csapatot egy elosztott számítástechnikai infrastruktúra fejlesztésére, amely magában foglalja a Hadoop külön projektbe történő szétválasztását is. 2008 februárjában a Yahoo elindított egy 10 000 magos fürt keresőmotort , amelyet Hadoop hajtott.
2008 januárjában a Hadoop az Apache Software Foundation projektrendszer legfelső szintű projektje lesz . 2008 áprilisában a Hadoop megdöntötte a világteljesítmény-rekordot a szabványosított adatrendezési benchmark terén, 1 TB-ot feldolgozva 209 másodperc alatt. egy 910 csomópontból álló klaszteren [6] . Ettől a pillanattól kezdve a Hadoopot széles körben használják a Yahoo-n kívül – a Last.fm , a Facebook , a The New York Times [7] implementálja a technológiát oldalaikon , és az adaptáció folyamatban van a Hadoop Amazon EC2 felhőkben való futtatásához .
2010 áprilisában a Google megadta az Apache Software Foundation-nek a MapReduce technológia használati jogát, három hónappal azután, hogy azt az Egyesült Államok Szabadalmi Hivatala megvédte , ezáltal tehermentesítette az esetleges szabadalmi igények megszervezését [8] .
2010 óta a Hadoop-ot többször is kulcsfontosságú „ big data ” technológiaként jellemezték, az előrejelzések szerint széles körben elterjedt masszívan párhuzamos adatfeldolgozásra, és a Cloudera mellett számos technológiai startup jelent meg, amelyek teljes mértékben a Hadoop kereskedelmi forgalomba hozatalára összpontosítanak. [9] [10] . 2010 folyamán a Hadoop több alprojektje - Avro , HBase , Hive , Pig , Zookeeper - egymás után vált az Apache alapítvány legfelső szintű projektjévé, amely a Hadoop körüli ökoszisztéma kialakulásának kezdetét jelentette . 2011 márciusában a Hadoop elnyerte a Guardian Media Group éves innovációs díját , amelyen a technológia elnyerte a „ 21. századi svájci kés ” [11] elnevezést .
A 2013 őszén megjelent Hadoop 2.0 YARN modul megvalósítása jelentős ugrásként értékelhető, amely túlmutat a MapReduce paradigmán, és a technológiát egy univerzális megoldás szintjére helyezi az elosztott adatfeldolgozás megszervezésében [12] .
A Hadoop Common a Hadoop által támogatott fájlrendszerek kezelésére szolgáló könyvtárakat, valamint a szükséges infrastruktúra létrehozásához és az elosztott feldolgozás kezeléséhez szükséges szkripteket tartalmaz, amelyek kényelmére speciális, egyszerűsített parancssori értelmezőt ( FS shell , fájlrendszer shell ) hoztak létre, amely az operációs rendszerből indult. rendszerhéj a következő formátumú paranccsal: , ahol egy interpreter parancs, és az erőforrások listája a támogatott fájlrendszertípussal, például vagy . A legtöbb értelmező parancsot a megfelelő Unix parancsokkal analóg módon valósítjuk meg (például , , , , , , , , , , , ráadásul a hasonló Unix parancsok néhány billentyűje támogatott, például a , , rekurzív kulcsa ) , vannak a Hadoopra jellemző parancsok (például megszámolja az adott útvonalon lévő könyvtárak, fájlok és bájtok számát, kiüríti a lomtárat és módosítja az adott erőforrás replikációs tényezőjét).hdfs dfs -command URIcommandURIhdfs://example.com/file1file:///tmp/local/file2catchmodchownchgrpcpdulsmkdirmvrmtail-Rchmodchownchgrpcountexpungesetrep
A HDFS ( Hadoop Distributed File System ) egy olyan fájlrendszer, amelyet nagy fájlok tárolására terveztek, blokkonként elosztva a számítási fürt csomópontjai között. A HDFS-ben lévő összes blokk (a fájl utolsó blokkját kivéve) azonos méretű, és minden blokk több csomópontra helyezhető, a blokk mérete és a replikációs tényező (a csomópontok száma, amelyekre az egyes blokkokat el kell helyezni) a következőben van megadva. a fájlszintű beállításokat. A replikációnak köszönhetően az elosztott rendszer stabilitása az egyes csomópontok meghibásodásával szemben biztosított. A fájlok csak egyszer írhatók HDFS-be (a módosítás nem támogatott), és egyszerre csak egy folyamat írhat egy fájlba. A fájlok elrendezése a névtérben hagyományos hierarchikus : van gyökérkönyvtár, a könyvtárak egymásba ágyazása támogatott, a fájlok és egyéb könyvtárak ugyanabban a könyvtárban helyezkedhetnek el.
A HDFS-példány telepítése egy központi névcsomópontot ( eng. name node ) biztosít, amely a fájlrendszer metaadatait és a blokkok elosztásával kapcsolatos metainformációkat tárolja, valamint egy sor adatcsomópontot ( eng. data node ), amelyek közvetlenül tárolják a fájlblokkokat. A név csomópont felelős a fájl- és könyvtárszintű műveletek feldolgozásáért - fájlok megnyitásáért és bezárásáért, könyvtárak manipulálásáért, az adatcsomópontok közvetlenül feldolgozzák az adatírási és -olvasási műveleteket. A névcsomópont és az adatcsomópontok webszerverekkel vannak ellátva, amelyek megjelenítik a csomópontok aktuális állapotát, és lehetővé teszik a fájlrendszer tartalmának megtekintését. Az adminisztrációs funkciók a parancssori felületről érhetők el.
A HDFS a projekt szerves része, azonban a Hadoop támogatja a HDFS használata nélkül végzett munkát más elosztott fájlrendszerekkel, az Amazon S3 és a CloudStore támogatása a fő disztribúcióban van megvalósítva. Másrészt a HDFS nem csak MapReduce feladatok futtatására használható, hanem általános célú elosztott fájlrendszerként is, ezen belül egy elosztott NoSQL DBMS HBase van implementálva, és az Apache Mahout méretezhető. gépi tanulási rendszer fut a környezetében .
A YARN ( angolul : Yet Another Resource Negotiator – „ egy másik erőforrás-közvetítő ”) egy modul, amely a 2.0-s verzióval (2013) jelent meg, és amely a fürterőforrások kezeléséért és a feladatok ütemezéséért felelős. Ha a korábbi kiadásokban ezt a funkciót a MapReduce modulba integrálták , ahol egyetlen komponenssel ( JobTracker ) valósították meg, akkor a YARN-ben van egy logikailag független démon - az erőforrásütemező ( ResourceManager ), amely absztrahálja az összes számítási erőforrást. fürt, és kezeli azok ellátását az elosztott feldolgozó alkalmazásokhoz. Mind a MapReduce programok, mind bármely más elosztott alkalmazás, amely támogatja a megfelelő programozási felületeket, működhet a YARN vezérlése alatt; A YARN lehetőséget biztosít több különböző feladat párhuzamos végrehajtására a klaszteren belül és ezek elkülönítésére (a többbérlet elvei szerint ). Az elosztott alkalmazásfejlesztőknek egy speciális alkalmazáskezelési osztályt ( ApplicationMaster ) kell megvalósítaniuk, amely a feladatok koordinálásáért felel az erőforrás-ütemező által biztosított erőforrásokon belül; az erőforrás-ütemező felelős az alkalmazásvezérlő osztály példányainak létrehozásáért és a megfelelő hálózati protokollon keresztüli interakcióért.
A YARN fürt operációs rendszernek tekinthető abban az értelemben, hogy interfészként működik a fürt hardver erőforrásai és az olyan alkalmazások széles osztálya között, amelyek teljesítményét számítási feldolgozás végrehajtására használják [13] .
A Hadoop MapReduce egy szoftverkeretrendszer az elosztott számítástechnika programozására a MapReduce paradigmán belül . A Hadoop MapReduce alkalmazásfejlesztőjének olyan alapkezelőt kell megvalósítania, amely a fürt minden számítási csomópontján biztosítja a kezdeti kulcs-érték párok átalakítását kulcs-érték párok köztes halmazává (az interfészt megvalósító Mapperosztály a Map magasabb rendű függvényről nevezték el ), és a kezelőt, amely a párok köztes halmazát a végső, redukált halmazra redukálja ( fold , az interfészt megvalósító osztály ). A keretrendszer átadja a rendezett kimeneteket az alapkezelőkről a konvolúció bemenetére, a redukció három fázisból áll - keverés ( keverés , a kimenet kívánt szakaszának kiválasztása), rendezés ( rendezés , csoportosítás a forgalmazók kimeneteinek kulcsai szerint) további rendezés, amely akkor szükséges, ha a különböző atomi processzorok ugyanazokkal a kulcsokkal adják vissza a készleteket, ugyanakkor a rendezési szabályok ebben a fázisban programozottan beállíthatók, és a kulcsok belső szerkezetének bármely jellemzőjét felhasználhatják, és csökkenthetik önmagát ( lista hajtogatása ) - az eredményhalmaz megszerzése. Bizonyos típusú feldolgozásoknál nincs szükség a hajtásra, és a keretrendszer ebben az esetben az alapprocesszorok által kapott rendezett párok halmazát adja vissza. Reducer
A Hadoop MapReduce lehetővé teszi a feladatok létrehozását az alapkezelőkkel és a Java használata nélkül írt hajtogatással is: A Hadoop streaming segédprogramok lehetővé teszik bármely olyan futtatható fájl használatát , amely a szabványos operációs rendszer I/O-jával (például UNIX shell -segédprogramokkal) működik alapkezelőként és hajtásként. ), létezik egy SWIG - kompatibilis C++ Hadoop pipes API is . Ezenkívül a Hadoop-disztribúciók az elosztott feldolgozásban leggyakrabban használt különféle alapprocesszorok és összesítések megvalósítását is tartalmazzák.
A Hadoop MapReduce első verziói tartalmaztak egy feladatütemezőt ( JobTracker ), a 2.0-s verzió óta ez a funkció átkerült a YARN-be , és ettől a verziótól kezdve a Hadoop MapReduce modul a YARN tetején van megvalósítva. A programozási felületek többnyire megmaradtak, de nincs teljes visszamenőleges kompatibilitás (vagyis az API korábbi verzióihoz írt programok futtatásához , a YARN-ben való működéshez általában ezek módosítása vagy átalakítása szükséges , és csak bizonyos megkötésekkel visszamenőleges bináris kompatibilitási opciók lehetségesek [14] ).
A Hadoop egyik fő célja kezdetben az volt, hogy vízszintes fürtméretezést biztosítson olcsó csomópontok hozzáadásával (tömegosztályú berendezések, angol árucikk hardver ), anélkül, hogy nagy teljesítményű szervereket és drága tárolóhálózatokat kellett volna igénybe vennie . A több ezer csomópontból álló működő klaszterek megerősítik az ilyen rendszerek megvalósíthatóságát és költséghatékonyságát, például 2011-től nagy Hadoop-fürtök ismertek a Yahoo-n (több mint 4 ezer csomópont összesen 15 PB tárolókapacitással), Facebook (kb. 2 ezer csomópont 21 PB-nként) és az Ebay (700 csomópont 16 PB-nként) [15] . Úgy gondolják azonban, hogy a Hadoop rendszerek horizontális méretezhetősége korlátozott, a 2.0-s verzió előtti Hadoop esetében a lehetséges maximumot 4 ezer csomópontra becsülték, ha csomópontonként 10 MapReduce-feladatot használtak [16] . Ezt a korlátozást sok tekintetben elősegítette a MapReduce funkciók koncentrációja a feladatok életciklusának figyelésére, és úgy gondolják, hogy a Hadoop 2.0 YARN moduljába való eltávolításával és a decentralizációval - a megfigyelési funkciók egy részének elosztásával a feldolgozó csomópontokhoz – a vízszintes méretezhetőség megnőtt.
A Hadoop rendszerek másik korlátja a RAM mérete a névcsomóponton ( NameNode ), amely a teljes fürt névterét tárolja a disztribúció feldolgozása céljából, ráadásul a névcsomópont által feldolgozott fájlok teljes száma 100 millió [17] . Ennek a korlátozásnak a kiküszöbölése érdekében a jelenlegi architektúrában a teljes fürtre jellemző névcsomópont több független csomópontra történő szétosztása folyamatban van. Egy másik lehetőség ennek a korlátozásnak a leküzdésére az elosztott DBMS használata a HDFS-n felül, például a HBase , amelyben a fájlok és könyvtárak szerepét az alkalmazás szempontjából egy nagy adatbázistáblában lévő rekordok játsszák.
2011-től egy tipikus fürt épült fel egy foglalatos többmagos x86-64 csomópontokból, amelyek Linuxot futtattak , 3-12 lemezes tárolóeszközzel, amelyeket 1 Gb/s-os hálózat kapcsolt össze. Vannak irányzatok mind a csomópontok számítási teljesítményének csökkentésére és az alacsony fogyasztású processzorok használatára ( ARM , Intel Atom ) [18] , mind a nagy teljesítményű számítási csomópontok nagy sávszélességű hálózati megoldásokkal egyidejű alkalmazása ( InfiniBand az Oracle Big Data -ban Készülék , nagy teljesítményű 10 Gb/s Fibre Channel és Ethernet SAN FlexPod big data sablon konfigurációkban).
A Hadoop rendszerek méretezhetősége nagymértékben függ a feldolgozott adatok jellemzőitől, mindenekelőtt a belső struktúrájuktól és a szükséges információk kinyeréséhez szükséges jellemzőiktől, valamint a feldolgozási feladat összetettségétől, ami viszont megszabja a feldolgozás megszervezését. feldolgozási ciklusok, az atomi műveletek számítási intenzitása, és végső soron a párhuzamosság és a klaszterterhelés szintje. A Hadoop kézikönyv (az első verziók, 2.0 előtt) azt jelezte, hogy a párhuzamosság elfogadható szintje az alapprocesszorok 10-100 példányának használata fürtcsomópontonként, és olyan feladatoknál, amelyek nem igényelnek jelentős CPU-időt - akár 300-at is; A konvolúciók esetében optimálisnak tartották a csomópontok számának és a 0,95 és 1,75 közötti együttható szorzatának és a konstansnak a felhasználását mapred.tasktracker.reduce.tasks.maximum. Nagyobb együttható érték mellett a leggyorsabb csomópontok, miután befejezték a konvergencia első körét, korábban megkapják a köztes párok második részét feldolgozásra, így az együttható növelése túlterheli a klasztert, ugyanakkor hatékonyabb terheléselosztást biztosít . A YARN ehelyett konfigurációs állandókat használ, amelyek meghatározzák az erőforrás-ütemező számára elérhető RAM és virtuális processzormagok értékeit [19] , amelyek alapján meghatározzák a párhuzamosság szintjét.
A Hadoop 2008-as népszerűsítése, valamint a Yahoo és a Facebook Hadoop-klasztereinek felépítéséről szóló jelentések hátterében a Cloudera 2008 októberében jött létre Michael Olson, a Sleepycat (a Berkeley DB -t létrehozó cég ) korábbi vezérigazgatója vezetésével . a Hadoop-technológiák kereskedelmi forgalomba hozatala. 2009 szeptemberében a Hadoop fő fejlesztője, Doug Cutting a Clouderához költözött a Yahoo-tól, és ennek az átállásnak köszönhetően a kommentátorok a Clouderát "a Hadoop új szabványhordozójaként" írták le, annak ellenére, hogy a projekt nagy részét még mindig a vállalat alkalmazottai hozták létre. Facebook és Yahoo [20] . A MapR 2009-ben alakult azzal a céllal, hogy létrehozza a Hadoop disztribúció nagy teljesítményű verzióját, és azt saját szoftverként szállítsa. 2009 áprilisában az Amazon elindította az Elastic MapReduce felhőszolgáltatást , amely lehetővé teszi az előfizetők számára, hogy Hadoop-fürtöket hozzanak létre, és azokon időalapú feladatokat hajtsanak végre. Később alternatívaként az Amazon Elastic MapReduce előfizetői választhattak az Apache klasszikus disztribúciója és a MapR disztribúciói között.
2011-ben a Yahoo független vállalattá vált a Hadoop-ot fejlesztő és használó részlegből - Hortonworks , hamarosan az új cégnek sikerült megállapodást kötnie a Microsofttal a Hadoop disztribúció közös fejlesztéséről a Windows Azure és a Windows Server számára [21] . Ugyanebben az évben, amikor a Hadoop a big data egyik alapvető technológiájaként megjelent, gyakorlatilag az összes jelentős szervezetek technológiai szoftverszállítója beépítette a Hadoop technológiákat valamilyen formában stratégiájába és termékvonalába. Tehát az Oracle kiadta a Big Data készülék hardver-szoftver komplexumot (előre összeszerelve egy telekommunikációs szekrényben és előre konfigurált Hadoop-fürttel a Cloudera disztribúciós készletével) [22] , az IBM megalkotta a BigInsights terméket az Apache disztribúciós készleten [ 22]. 23] , az EMC licencelte a MapR-től a nagy teljesítményű Hadoop-jukat a közelmúltban felvásárolt Greenplum [24] termékeibe való integráláshoz (ezt az üzleti egységet később önálló Pivotal vállalattá bontották ki , és egy teljesen független Hadoop disztribúcióra költözött Apache kód alapján [25] ), a Teradata megállapodást kötött a Hortonworks-szel a Hadoop integrálására az Aster Big Analytics készülékbe [26] . 2013-ban az Intel létrehozta a Hadoop [27] saját disztribúcióját , egy évvel később felhagyva a fejlesztéssel a Cloudera megoldásaira, amelyben 18%-os részesedést szerzett [28] .
A Hadoop ökoszisztéma körüli szoftver- és szolgáltatáspiac volumene 2012-ben 540 millió dollárra becsülhető, 2017-re pedig 1,6 milliárd dolláros növekedést prognosztizálnak, a piacvezetők pedig a kaliforniai startupok , a Cloudera, a MapR és a Hortonworks [29] . Rajtuk kívül a Hadapt (amelyet 2014 júliusában vett át a Teradata [30] ), a Datameer , a Karmasphere és a Platfora is megjegyezték, hogy teljes üzletüket a Hadoop rendszereket analitikai képességeket biztosító termékek létrehozására építik [31] .
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Legfelső szintű projektek |
| ||||||
Alprojektek |
| ||||||
Apache |
| ||||||
Egyéb projektek | |||||||
Fejlesztő projektek ( inkubátor ) |
| ||||||
Leszerelt projektek ( tetőtér ) | |||||||
|