Apache Hadoop | |
---|---|
Sorts | ramverk |
Författare | Doug Cutting [d] |
Utvecklaren | Apache Software Foundation |
Skrivet i | Java |
Operativ system | plattformsoberoende och POSIX |
Första upplagan | 1 april 2006 [1] |
Hårdvaruplattform | Java Virtual Machine |
senaste versionen | |
Licens | Apache License 2.0 och GNU GPL |
Hemsida | hadoop.apache.org _ |
Mediafiler på Wikimedia Commons |
Hadoop är ett projekt av Apache Software Foundation , en fritt distribuerad uppsättning verktyg , bibliotek och ett ramverk för att utveckla och köra distribuerade program som körs på kluster av hundratals och tusentals noder. Används för att implementera sök- och kontextuella mekanismer för många högbelastade webbplatser, inklusive Yahoo! och Facebook [2] . Utvecklad i Java inom ramen för beräkningsparadigmet MapReduce , enligt vilket applikationen är uppdelad i ett stort antal identiska elementära uppgifter som är körbara på klusternoderna och naturligt reduceras till slutresultatet.
Från och med 2014 består projektet av fyra moduler - Hadoop Common ( mellanprogramvara - en uppsättning infrastrukturprogramvarubibliotek och verktyg som används för andra moduler och relaterade projekt), HDFS ( distribuerat filsystem ), YARN (ett system för att schemalägga uppgifter och hantera ett kluster) och Hadoop MapReduce (en plattform för programmering och exekvering av distribuerade MapReduce-beräkningar), tidigare inkluderade Hadoop ett antal andra projekt som blev självständiga inom projektsystemet Apache Software Foundation.
Det anses vara en av de grundläggande teknikerna för " big data ". Ett helt ekosystem av relaterade projekt och teknologier har bildats runt Hadoop, av vilka många ursprungligen utvecklades som en del av projektet och senare blev oberoende. Sedan andra hälften av 2000-talet har det skett en process av aktiv kommersialisering av tekniken , flera företag bygger sin verksamhet helt och hållet på skapandet av kommersiella distributioner av Hadoop- och ekosystemtekniska supporttjänster, och nästan all viktig informationsteknologi leverantörer för organisationer i en eller annan form inkluderar Hadoop i produktstrategier och produktlinjer.
Utvecklingen initierades i början av 2005 av Doug Cutting med syftet att bygga en distribuerad mjukvaruinfrastruktur för Nutch- projektet , en gratis sökmotor för programvara i Java , dess ideologiska grund var publiceringen av Googles anställda Jeffrey Dean och Sanjay Gemawat [3] om beräkningskoncept för MapReduce [4] . Det nya projektet fick sitt namn efter grundarens leksaksbabyelefant [5] .
Under 2005-2006 utvecklades Hadoop av två utvecklare - Cutting och Mike Cafarella ( Mike Cafarella ) i deltidsläge [4] , först som en del av Nutch-projektet, sedan - Lucene- projektet . I januari 2006 bjöds Cutting in av Yahoo att leda ett dedikerat team för utvecklingen av en distribuerad datorinfrastruktur, som även inkluderar uppdelningen av Hadoop i ett separat projekt. I februari 2008 lanserade Yahoo en klustersökmotor med 10 000 kärnor som drivs av Hadoop.
I januari 2008 blir Hadoop toppnivåprojektet i projektsystemet Apache Software Foundation . I april 2008 slog Hadoop världsrekordet i det standardiserade datasorteringsriktmärket och bearbetade 1 TB på 209 sekunder. på ett kluster av 910 noder [6] . Från det ögonblicket började Hadoop användas i stor utsträckning utanför Yahoo - Last.fm , Facebook , The New York Times [7] implementerar tekniken för sina webbplatser och anpassningar genomförs för att köra Hadoop i Amazon EC2- moln .
I april 2010 beviljade Google Apache Software Foundation rättigheterna att använda MapReduce-teknologin, tre månader efter att den försvarades i det amerikanska patentverket , och därigenom avlastade organisationen av eventuella patentanspråk [8] .
Sedan 2010 har Hadoop upprepade gånger karakteriserats som en viktig " big data "-teknik, dess utbredda användning för massivt parallell databehandling förutspås, och tillsammans med Cloudera har en serie teknikstartuper dykt upp som helt är fokuserade på kommersialiseringen av Hadoop [9] [10] . Under 2010 blev flera delprojekt av Hadoop - Avro , HBase , Hive , Pig , Zookeeper - successivt toppnivåprojekten för Apache-stiftelsen, som fungerade som början på bildandet av ett ekosystem runt Hadoop . I mars 2011 tilldelades Hadoop Guardian Media Groups årliga innovationspris , där tekniken utsågs till " det 21:a århundradets schweiziska armékniv " [11] .
Implementeringen av YARN-modulen i Hadoop 2.0, som släpptes hösten 2013, bedöms som ett betydande steg som tar Hadoop bortom MapReduce-paradigmet och sätter tekniken på nivån av en universell lösning för att organisera distribuerad databehandling [12] .
Hadoop Common inkluderar bibliotek för hantering av filsystem som stöds av Hadoop, och skript för att skapa den nödvändiga infrastrukturen och hantera distribuerad bearbetning, för bekvämligheten av vilken en specialiserad förenklad kommandoradstolk ( FS-skal , filsystemskal ) har skapats, lanserad från operativsystemet systemskal med ett kommando av formen: , där är ett tolkkommando, och är en lista över resurser med prefixet den filsystemtyp som stöds, till exempel eller . De flesta tolkkommandon implementeras i analogi med motsvarande Unix-kommandon (till exempel, , , , , , , , , , , dessutom stöds vissa nycklar för liknande Unix-kommandon, till exempel den rekursiva nyckeln för , , ) , det finns kommandon som är specifika för Hadoop (t.ex. räknar antalet kataloger, filer och byte i en given sökväg, tömmer papperskorgen och ändrar replikeringsfaktorn för en given resurs). hdfs dfs -command URIcommandURIhdfs://example.com/file1file:///tmp/local/file2catchmodchownchgrpcpdulsmkdirmvrmtail-Rchmodchownchgrpcountexpungesetrep
HDFS ( Hadoop Distributed File System ) är ett filsystem utformat för att lagra stora filer distribuerade block för block mellan noderna i ett datorkluster. Alla block i HDFS (förutom det sista blocket i en fil) har samma storlek, och varje block kan placeras på flera noder, blockstorleken och replikeringsfaktorn (antal noder som varje block ska placeras på) definieras i inställningarna på filnivå. Tack vare replikering säkerställs stabiliteten hos ett distribuerat system mot fel i enskilda noder. Filer kan bara skrivas till HDFS en gång (ändring stöds inte), och endast en process kan skriva till en fil åt gången. Organisationen av filer i namnutrymmet är traditionell hierarkisk : det finns en rotkatalog, kapsling av kataloger stöds och filer och andra kataloger kan finnas i samma katalog.
Att distribuera en HDFS-instans tillhandahåller en central namnnod ( eng. name node ), som lagrar filsystemmetadata och metainformation om distributionen av block, och en serie datanoder ( eng. data node ), som direkt lagrar filblock. Namnnoden är ansvarig för att bearbeta operationer på fil- och katalognivå - öppna och stänga filer, manipulera kataloger, datanoder bearbetar direkt dataskrivning och läsoperationer. Namnnoden och datanoderna är försedda med webbservrar som visar nodernas aktuella status och låter dig se innehållet i filsystemet. Administrativa funktioner är tillgängliga från kommandoradsgränssnittet.
HDFS är en integrerad del av projektet, dock stöder Hadoop arbete med andra distribuerade filsystem utan att använda HDFS, stöd för Amazon S3 och CloudStore är implementerat i huvuddistributionen. Å andra sidan kan HDFS användas inte bara för att köra MapReduce-jobb, utan också som ett allmänt distribuerat filsystem, i synnerhet är en distribuerad NoSQL DBMS HBase implementerad ovanpå den, och Apache Mahout skalbar maskininlärningssystem körs i sin miljö .
YARN ( engelska Yet Another Resource Negotiator - " another resource intermediary ") är en modul som dök upp med version 2.0 (2013), som ansvarar för att hantera klusterresurser och schemalägga uppgifter. Om den här funktionen i tidigare utgåvor integrerades i MapReduce -modulen , där den implementerades av en enda komponent ( JobTracker ), så finns det i YARN en logiskt oberoende demon - resursplaneraren ( ResourceManager ), som abstraherar alla datorresurser i kluster och hanterar deras tillhandahållande till distribuerade behandlingsapplikationer. Både MapReduce-program och andra distribuerade applikationer som stöder lämpliga programmeringsgränssnitt kan fungera under kontroll av YARN; YARN ger möjlighet till parallellt utförande av flera olika uppgifter inom klustret och deras isolering (enligt principerna för multitenancy ). En distribuerad applikationsutvecklare behöver implementera en speciell applikationshanteringsklass ( ApplicationMaster ) som är ansvarig för att koordinera uppgifter inom de resurser som tillhandahålls av resursplaneraren; resursplaneraren är ansvarig för att skapa instanser av applikationskontrollklassen och interagera med den genom lämpligt nätverksprotokoll.
YARN kan betraktas som ett klusteroperativsystem i den meningen att det fungerar som ett gränssnitt mellan klustrets hårdvaruresurser och en bred klass av applikationer som använder dess kraft för att utföra beräkningsbehandling [13] .
Hadoop MapReduce är ett mjukvaruramverk för programmering av distribuerad datoranvändning inom MapReduce- paradigmet . En applikationsutvecklare för Hadoop MapReduce behöver implementera en bashanterare som, på varje beräkningsnod i klustret, säkerställer omvandlingen av de initiala nyckel-värde- paren till en mellanliggande uppsättning nyckel-värde-par (klassen som implementerar gränssnittet Mapperär uppkallad efter den högre ordningens funktionen Map ), och hanteraren , som reducerar den mellanliggande uppsättningen av par till den slutliga, reducerade uppsättningen ( fold , klass som implementerar gränssnittet Reducer). Ramverket skickar de sorterade utgångarna från bashanterarna till ingången av faltningen, minskningen består av tre faser - shuffle ( shuffle , val av önskad sektion av utgången), sortering ( sortering , gruppering efter nycklar av utgångar från distributörer - ytterligare sortering, vilket krävs när olika atomprocessorer returnerar set med samma nycklar, samtidigt kan sorteringsreglerna i denna fas ställas in programmatiskt och använda alla funktioner i nycklarnas interna struktur) och reducera sig själv ( listvikning ) - erhålla resultatuppsättningen. För vissa typer av bearbetning krävs inte vikning, och ramverket returnerar i detta fall en uppsättning sorterade par som tas emot av basprocessorerna.
Hadoop MapReduce låter dig skapa jobb med både bashanterare och veck skrivna utan att använda Java: Hadoop streamingverktyg låter dig använda vilken körbar fil som helst som fungerar med standardoperativsystem I/O (till exempel UNIX- skalverktyg) som bashanterare och foldningar ), finns det också ett SWIG- kompatibelt C ++ Hadoop pipes API . Hadoop-distributioner inkluderar också implementeringar av olika specifika basprocessorer och sammanslagningar som oftast används i distribuerad bearbetning.
I de första versionerna av Hadoop MapReduce inkluderade en jobbschemaläggare ( JobTracker ), sedan version 2.0 har denna funktion flyttats till YARN , och sedan denna version är Hadoop MapReduce-modulen implementerad ovanpå YARN. Programmeringsgränssnitt är för det mesta bevarade, men det finns ingen fullständig bakåtkompatibilitet (det vill säga för att köra program skrivna för tidigare versioner av API , för att fungera i YARN, i allmänhet krävs deras modifiering eller omstrukturering , och endast med vissa begränsningar är bakåt binära kompatibilitetsalternativ möjliga [14] ).
Ett av Hadoops huvudmål var initialt att tillhandahålla horisontell klusterskalbarhet genom att lägga till billiga noder (massklassig utrustning, engelsk råvaruhårdvara ), utan att tillgripa kraftfulla servrar och dyra lagringsnätverk . Fungerande kluster med tusentals noder i storlek bekräftar genomförbarheten och kostnadseffektiviteten för sådana system, till exempel från och med 2011 är stora Hadoop-kluster kända i Yahoo (mer än 4 tusen noder med en total lagringskapacitet på 15 PB), Facebook (cirka 2 tusen noder per 21 PB) och Ebay (700 noder per 16 PB) [15] . Man tror dock att horisontell skalbarhet i Hadoop-system är begränsad, för Hadoop före version 2.0 uppskattades det maximala möjliga till 4 tusen noder vid användning av 10 MapReduce-jobb per nod [16] . På många sätt underlättades denna begränsning av koncentrationen i MapReduce-modulen av funktioner för att övervaka livscykeln för jobb, man tror att med dess borttagande till YARN-modulen i Hadoop 2.0 och decentralisering - fördelningen av en del av övervakningsfunktionerna till bearbetningsnoder - horisontell skalbarhet har ökat.
En annan begränsning av Hadoop-system är storleken på RAM på namnnoden ( NameNode ), som lagrar hela klustrets namnutrymme för bearbetningsdistribution, dessutom är det totala antalet filer som namnnoden kan bearbeta 100 miljoner [17] . För att övervinna denna begränsning pågår ett arbete med att fördela namnnoden, som är vanlig i den nuvarande arkitekturen för hela klustret, i flera oberoende noder. Ett annat alternativ för att övervinna denna begränsning är att använda distribuerad DBMS ovanpå HDFS, såsom HBase , där rollen som filer och kataloger spelas av poster i en stor databastabell från applikationens synvinkel.
Från och med 2011 byggdes ett typiskt kluster från ensocket multi-core x86-64 - noder som kör Linux med 3-12 disklagringsenheter anslutna till ett 1Gb/s-nätverk. Det finns trender både att minska nodernas beräkningskraft och använda lågeffektprocessorer ( ARM , Intel Atom ) [18] och användningen av högpresterande beräkningsnoder samtidigt med nätverkslösningar med hög bandbredd ( InfiniBand i Oracle Big Data Appliance , högpresterande 10 Gb/s Fibre Channel och Ethernet SAN i FlexPod big data mallkonfigurationer).
Skalbarheten hos Hadoop-system beror till stor del på egenskaperna hos de data som behandlas, först och främst deras interna struktur och funktioner för att extrahera nödvändig information från dem, och komplexiteten i bearbetningsuppgiften, som i sin tur dikterar organisationen av bearbetningscykler, beräkningsintensiteten för atomära operationer och, slutligen, nivån av parallellitet och klusterbelastning. Hadoop-manualen (första versionerna, före 2.0) angav att en acceptabel nivå av parallellitet är användningen av 10-100 instanser av grundläggande processorer per klusternod, och för uppgifter som inte kräver betydande CPU-tid - upp till 300; för faltningar ansågs det vara optimalt att använda dem med antalet noder multiplicerat med en koefficient från intervallet 0,95 till 1,75 och en konstant mapred.tasktracker.reduce.tasks.maximum. Med ett större koefficientvärde kommer de snabbaste noderna, efter att ha slutfört den första konvergensomgången, att ta emot den andra delen av mellanpar för bearbetning tidigare, vilket ökar koefficienten överbelastas klustret, men ger samtidigt mer effektiv lastbalansering . YARN använder istället konfigurationskonstanter som bestämmer värdena för tillgängligt RAM och virtuella processorkärnor tillgängliga för resursplaneraren [19] , baserat på vilken nivån av parallellitet bestäms.
Mot bakgrund av populariseringen av Hadoop 2008 och rapporter om att bygga Hadoop-kluster i Yahoo och Facebook, skapades Cloudera i oktober 2008, ledd av Michael Olson, den tidigare VD:n för Sleepycat (företaget som skapade Berkeley DB ), helt inriktat på kommersialiseringen av Hadoop-teknologier. I september 2009 flyttade den huvudsakliga Hadoop-utvecklaren Doug Cutting till Cloudera från Yahoo, och tack vare denna övergång beskrev kommentatorer Cloudera som "den nya fanbäraren av Hadoop", trots att huvuddelen av projektet fortfarande skapades av anställda på Facebook och Yahoo [20] . MapR grundades 2009 med målet att skapa en högpresterande version av Hadoop-distributionen och leverera den som proprietär programvara. I april 2009 lanserade Amazon Elastic MapReduce, en molntjänst som gör det möjligt för abonnenter att skapa Hadoop-kluster och köra jobb på dem på en tidsbaserad basis. Senare, som ett alternativ, fick Amazon Elastic MapReduce-prenumeranter ett val mellan den klassiska distributionen från Apache och distributioner från MapR.
År 2011 klippte Yahoo av divisionen som utvecklade och använde Hadoop till ett oberoende företag - Hortonworks , snart lyckades det nya företaget sluta ett avtal med Microsoft om att gemensamt utveckla Hadoop-distributionen för Windows Azure och Windows Server [21] . Samma år, med framväxten av Hadoop som en av kärnteknologierna för big data, inkluderade praktiskt taget alla stora teknologiprogramvaruleverantörer för organisationer Hadoop-teknologier i en eller annan form i sina strategier och produktlinjer. Så, Oracle släppte Big Data-apparaten hårdvaru-mjukvarukomplex (förmonterat i en telekommunikationsgarderob och förkonfigurerat Hadoop-kluster med ett distributionskit från Cloudera) [22] , IBM skapade BigInsights-produkten baserad på Apache-distributionssatsen [ 23] , licensierade EMC från MapR deras högpresterande Hadoop för integration i produkter från det nyligen förvärvade Greenplum [24] (denna affärsenhet delades senare av till ett fristående företag Pivotal , och den flyttade till en helt oberoende Hadoop-distribution baserat på Apache-kod [25] ), slöt Teradata ett avtal med Hortonworks om att integrera Hadoop i Aster Big Analytics-apparaten [26] . 2013 skapade Intel sin egen distribution av Hadoop [27] , ett år senare övergav sin utveckling till förmån för lösningar från Cloudera, där man förvärvade 18 % av aktierna [28] .
Volymen av mjukvaru- och tjänstemarknaden kring Hadoop-ekosystemet för 2012 uppskattas till 540 miljoner dollar med en tillväxtprognos till 1,6 miljarder dollar 2017, marknadsledarna är kaliforniska startups Cloudera, MapR och Hortonworks [29] . Utöver dem noteras även Hadapt (övertagen i juli 2014 av Teradata [30] ), Datameer , Karmasphere och Platfora som bygger hela sin verksamhet på att skapa produkter för att förse Hadoop-system med analytiska möjligheter [31] .
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Projekt på högsta nivå |
| ||||||
Delprojekt |
| ||||||
Apache |
| ||||||
Andra projekt | |||||||
Utveckla projekt ( inkubator ) |
| ||||||
Avvecklade projekt ( Attic ) | |||||||
|