Apache Hadoop | |
---|---|
Typ | rámec |
Autor | Doug Cutting [d] |
Vývojář | Apache Software Foundation |
Zapsáno v | Jáva |
Operační systém | multiplatformní a POSIX |
První vydání | 1. dubna 2006 [1] |
Hardwarová platforma | Java virtuální stroj |
Nejnovější verze |
|
Licence | Licence Apache 2.0 a GNU GPL |
webová stránka | hadoop.apache.org _ |
Mediální soubory na Wikimedia Commons |
Hadoop je projekt Apache Software Foundation , volně distribuovaná sada utilit , knihoven a frameworku pro vývoj a spouštění distribuovaných programů běžících na klastrech stovek a tisíců uzlů. Používá se k implementaci vyhledávacích a kontextových mechanismů pro mnoho webů s vysokým zatížením, včetně Yahoo! a Facebook [2] . Vyvinuto v Javě v rámci výpočetního paradigmatu MapReduce , podle kterého je aplikace rozdělena do velkého počtu stejných elementárních úloh, které jsou spustitelné na uzlech clusteru a jsou přirozeně redukovány na konečný výsledek.
Od roku 2014 se projekt skládá ze čtyř modulů - Hadoop Common ( střední software - sada infrastrukturních softwarových knihoven a utilit používaných pro další moduly a související projekty), HDFS ( distribuovaný souborový systém ), YARN (systém pro plánování úloh a správu clusteru) a Hadoop MapReduce (platforma pro programování a provádění distribuovaných výpočtů MapReduce), dříve Hadoop zahrnoval řadu dalších projektů, které se osamostatnily v rámci projektového systému Apache Software Foundation.
Je považována za jednu ze základních technologií „ velkých dat “. Kolem Hadoopu se vytvořil celý ekosystém souvisejících projektů a technologií, z nichž mnohé byly původně vyvinuty jako součást projektu a později se osamostatnily. Od druhé poloviny 20. století probíhá proces aktivní komercializace technologie , několik společností staví své podnikání výhradně na vytváření komerčních distribucí Hadoop a služeb technické podpory ekosystémů a téměř všech hlavních informačních technologií poskytovatelé pro organizace v té či oné formě zahrnují Hadoop do produktových strategií a produktových řad.
Vývoj inicioval počátkem roku 2005 Doug Cutting s cílem vybudovat distribuovanou výpočetní softwarovou infrastrukturu pro projekt Nutch , svobodný softwarový vyhledávač v Javě , jehož ideologickým základem byla publikace zaměstnanců Google Jeffreyho Deana a Sanjaye Gemawata [3] o výpočetních konceptech MapReduce [4] . Nový projekt byl pojmenován po zakladatelově hračce slůně [5] .
V letech 2005-2006 byl Hadoop vyvinut dvěma vývojáři - Cuttingem a Mikem Cafarellou ( Mike Cafarella ) v režimu na částečný úvazek [4] , nejprve jako součást projektu Nutch, poté - projektu Lucene . V lednu 2006 byl Cutting pozván Yahoo , aby vedl specializovaný tým pro vývoj distribuované výpočetní infrastruktury, která také zahrnuje oddělení Hadoop do samostatného projektu. V únoru 2008 Yahoo spustilo 10 000 jádrový clusterový vyhledávač poháněný Hadoopem.
V lednu 2008 se Hadoop stává projektem nejvyšší úrovně projektového systému Apache Software Foundation . V dubnu 2008 překonal Hadoop světový výkonový rekord v benchmarku standardizovaného třídění dat , když zpracoval 1 TB za 209 sekund. na shluku 910 uzlů [6] . Od té chvíle se Hadoop začal široce používat mimo Yahoo - Last.fm , Facebook , The New York Times [7] implementují technologii pro své stránky a probíhají adaptace pro provozování Hadoopu v cloudech Amazon EC2 .
V dubnu 2010 Google udělil nadaci Apache Software Foundation práva k používání technologie MapReduce, tři měsíce poté, co byla obhajována v americkém patentovém úřadu , čímž ulehčila organizaci případných patentových nároků [8] .
Od roku 2010 je Hadoop opakovaně charakterizován jako klíčová technologie „ big data “, předpokládá se její široké využití pro masivně paralelní zpracování dat a spolu s Cloudera se objevila řada technologických startupů, které se zcela zaměřují na komercializaci Hadoopu. [9] [10] . V průběhu roku 2010 se několik dílčích projektů Hadoop - Avro , HBase , Hive , Pig , Zookeeper - postupně stalo špičkovými projekty nadace Apache, které sloužily jako počátek formování ekosystému kolem Hadoopu . V březnu 2011 byla společnost Hadoop oceněna výroční cenou za inovaci Guardian Media Group , na které byla technologie jmenována „ Švýcarským armádním nožem 21. století“ [11] .
Implementace modulu YARN v Hadoopu 2.0, vydaného na podzim 2013, je hodnocena jako významný skok, který posouvá Hadoop za paradigma MapReduce a staví technologii na úroveň univerzálního řešení pro organizaci distribuovaného zpracování dat [12] .
Hadoop Common zahrnuje knihovny pro správu souborových systémů podporovaných Hadoopem a skripty pro vytváření potřebné infrastruktury a správu distribuovaného zpracování, pro jejichž pohodlí byl vytvořen specializovaný zjednodušený interpret příkazového řádku ( FS shell , souborový systém shell ), spouštěný z operačního systému. systémový shell s příkazem ve tvaru: , kde je příkaz tlumočníka a je seznam prostředků s předponou podporovaného typu systému souborů, jako je nebo . Většina příkazů interpretu je implementována analogicky s odpovídajícími unixovými příkazy (například , , , , , , , , , , navíc jsou podporovány některé klíče podobných unixových příkazů, například rekurzivní klíč pro , , ) , existují příkazy specifické pro Hadoop (například spočítá počet adresářů, souborů a bajtů v dané cestě, vyprázdní koš a upraví faktor replikace pro daný prostředek). hdfs dfs -command URIcommandURIhdfs://example.com/file1file:///tmp/local/file2catchmodchownchgrpcpdulsmkdirmvrmtail-Rchmodchownchgrpcountexpungesetrep
HDFS ( Hadoop Distributed File System ) je souborový systém určený k ukládání velkých souborů distribuovaných blok po bloku mezi uzly výpočetního clusteru. Všechny bloky v HDFS (kromě posledního bloku souboru) mají stejnou velikost a každý blok lze umístit na více uzlů, velikost bloku a faktor replikace (počet uzlů, na které by měl být každý blok umístěn) jsou definovány v nastavení na úrovni souboru. Díky replikaci je zajištěna stabilita distribuovaného systému proti výpadkům jednotlivých uzlů. Soubory lze zapisovat do HDFS pouze jednou (úprava není podporována) a do souboru může zapisovat vždy pouze jeden proces. Organizace souborů ve jmenném prostoru je tradiční hierarchická : existuje kořenový adresář, je podporováno vnořování adresářů a soubory a další adresáře mohou být umístěny ve stejném adresáři.
Nasazení instance HDFS poskytuje centrální jmenný uzel ( eng. name node ), ukládající metadata systému souborů a metainformace o distribuci bloků, a řadu datových uzlů ( eng. data node ), přímo ukládající bloky souborů. Jmenný uzel je zodpovědný za zpracování operací na úrovni souborů a adresářů – otevírání a zavírání souborů, manipulaci s adresáři, datové uzly přímo zpracovávají operace zápisu a čtení dat. Názvový uzel a datové uzly jsou vybaveny webovými servery , které zobrazují aktuální stav uzlů a umožňují zobrazit obsah systému souborů. Administrativní funkce jsou dostupné z rozhraní příkazového řádku.
HDFS je nedílnou součástí projektu, nicméně Hadoop podporuje práci s dalšími distribuovanými souborovými systémy bez použití HDFS, v hlavní distribuci je implementována podpora pro Amazon S3 a CloudStore . Na druhou stranu lze HDFS použít nejen ke spouštění úloh MapReduce, ale také jako univerzální distribuovaný souborový systém, konkrétně je nad ním implementován distribuovaný NoSQL DBMS HBase a škálovatelný Apache Mahout systém strojového učení běží ve svém prostředí .
YARN ( anglicky Yet Another Resource Negotiator - „ další zprostředkovatel zdrojů “) je modul, který se objevil ve verzi 2.0 (2013), který je zodpovědný za správu zdrojů clusteru a plánování úloh. Pokud byla v předchozích verzích tato funkce integrována do modulu MapReduce , kde byla implementována jedinou komponentou ( JobTracker ), pak v YARN existuje logicky nezávislý démon - plánovač zdrojů ( ResourceManager ), který abstrahuje všechny výpočetní zdroje cluster a spravuje jejich poskytování aplikacím distribuovaného zpracování. Jak programy MapReduce, tak jakékoli jiné distribuované aplikace, které podporují vhodná programovací rozhraní, mohou pracovat pod kontrolou YARN; YARN poskytuje možnost paralelního provádění několika různých úkolů v rámci clusteru a jejich izolaci (podle principů multitenancy ). Vývojář distribuovaných aplikací potřebuje implementovat speciální třídu správy aplikací ( ApplicationMaster ), která je zodpovědná za koordinaci úloh v rámci zdrojů poskytovaných plánovačem zdrojů; plánovač zdrojů je zodpovědný za vytváření instancí třídy řízení aplikací a interakci s ní prostřednictvím příslušného síťového protokolu.
YARN lze považovat za klastrový operační systém v tom smyslu, že funguje jako rozhraní mezi hardwarovými prostředky klastru a širokou třídou aplikací, které využívají jeho výkon k provádění výpočetního zpracování [13] .
Hadoop MapReduce je softwarový rámec pro programování distribuovaných výpočtů v rámci paradigmatu MapReduce . Vývojář aplikace pro Hadoop MapReduce potřebuje implementovat základní obslužný program, který na každém výpočetním uzlu clusteru zajistí transformaci počátečních párů klíč-hodnota na přechodnou sadu párů klíč-hodnota (třída, která implementuje rozhraní, Mapperje pojmenovaná po funkci vyššího řádu Map ) a handler , který redukuje prostřední sadu párů na konečnou, redukovanou množinu ( fold , třída, která implementuje rozhraní Reducer). Framework předává setříděné výstupy ze základních handlerů na vstup konvoluce, redukce se skládá ze tří fází - shuffle ( shuffle , výběr požadované sekce výstupu), sort ( třídění , seskupování podle klíčů výstupů od distributorů - dodatečné třídění, které je nutné, když různé atomové procesory vracejí sady se stejnými klíči, zároveň lze třídicí pravidla v této fázi nastavit programově a využívat libovolné vlastnosti vnitřní struktury klíčů) a zmenšovat se ( skládání seznamu ) - získání sady výsledků. U některých typů zpracování není skládání vyžadováno a framework v tomto případě vrací sadu seřazených párů přijatých základními procesory.
Hadoop MapReduce vám umožňuje vytvářet úlohy se základními obslužnými rutinami i záhyby napsanými bez použití Javy: Streamovací nástroje Hadoop vám umožňují použít jakýkoli spustitelný soubor , který pracuje se standardním I/O operačním systémem (například obslužné programy prostředí UNIX ), jako základní obslužné nástroje a záhyby ), existuje také SWIG - kompatibilní C++ Hadoop pipes API . Distribuce Hadoop také zahrnují implementace různých konkrétních základních procesorů a souhrnů, které se nejčastěji používají v distribuovaném zpracování.
V prvních verzích Hadoop MapReduce obsahoval plánovač úloh ( JobTracker ), od verze 2.0 byla tato funkce přesunuta do YARN a od této verze je nad YARN implementován modul Hadoop MapReduce. Programovací rozhraní jsou většinou zachována, ale není zde úplná zpětná kompatibilita (to znamená pro spouštění programů napsaných pro předchozí verze API , pro práci v YARN je obecně nutná jejich úprava nebo refaktoring , a to pouze s určitými omezeními jsou možné možnosti zpětné binární kompatibility [14 ] ).
Jedním z hlavních cílů Hadoopu bylo zpočátku poskytovat horizontální škálovatelnost clusteru přidáním levných uzlů (masové vybavení, anglický komoditní hardware ), aniž by bylo nutné používat výkonné servery a drahé úložné sítě . Funkční clustery o velikosti tisíců uzlů potvrzují proveditelnost a nákladovou efektivitu takových systémů, například od roku 2011 jsou známy velké clustery Hadoop v Yahoo (více než 4 tisíce uzlů s celkovou úložnou kapacitou 15 PB), Facebook (asi 2 tisíce uzlů na 21 PB) a Ebay (700 uzlů na 16 PB) [15] . Předpokládá se však, že horizontální škálovatelnost v systémech Hadoop je omezená, pro Hadoop před verzí 2.0 se maximální možné odhadovalo na 4 tisíce uzlů při použití 10 úloh MapReduce na uzel [16] . V mnoha ohledech bylo toto omezení usnadněno koncentrací funkcí pro sledování životního cyklu pracovních míst v modulu MapReduce, má se za to, že jeho odstraněním do modulu YARN v Hadoop 2.0 a decentralizace - distribuce části monitorovacích funkcí na zpracovatelské uzly – zvýšila se horizontální škálovatelnost.
Dalším omezením Hadoop systémů je velikost RAM na jmenném uzlu ( NameNode ), kde je uložen celý jmenný prostor clusteru pro zpracování distribuce, navíc celkový počet souborů, které je jmenný uzel schopen zpracovat, je 100 milionů [17] . K překonání tohoto omezení se pracuje na distribuci názvu uzlu, který je v současné architektuře běžný pro celý cluster, do několika nezávislých uzlů. Další možností, jak toto omezení překonat, je použití distribuovaného DBMS nad HDFS, jako je HBase , ve kterém roli souborů a adresářů hrají z pohledu aplikace záznamy v jedné velké databázové tabulce.
Od roku 2011 byl typický cluster vytvořen z jednosocketových vícejádrových x86-64 uzlů se systémem Linux s 3-12 diskovými úložnými zařízeními připojenými k síti 1 Gb/s. Existují trendy jak snižovat výpočetní výkon uzlů a používat procesory s nízkou spotřebou ( ARM , Intel Atom ) [18] , tak používání vysoce výkonných výpočetních uzlů současně s řešeními širokopásmových sítí ( InfiniBand v Oracle Big Data Zařízení , vysoce výkonný 10Gb/s Fibre Channel a Ethernet SAN v konfiguracích šablon velkých dat FlexPod ).
Škálovatelnost systémů Hadoop do značné míry závisí na vlastnostech zpracovávaných dat, především na jejich vnitřní struktuře a vlastnostech pro extrakci potřebných informací z nich a na složitosti úlohy zpracování, která zase diktuje organizaci cykly zpracování, výpočetní náročnost atomových operací a v konečném důsledku i úroveň paralelismu a zatížení klastrů. Manuál Hadoop (první verze, před 2.0) uváděl, že přijatelnou úrovní paralelismu je použití 10-100 instancí základních procesorů na uzel clusteru a pro úlohy, které nevyžadují významný čas CPU - až 300; pro konvoluce se považovalo za optimální použít je počtem uzlů vynásobeným koeficientem z rozsahu od 0,95 do 1,75 a konstantou mapred.tasktracker.reduce.tasks.maximum. S vyšší hodnotou koeficientu nejrychlejší uzly, které dokončily první kolo konvergence, obdrží druhou část mezilehlých párů ke zpracování dříve, takže zvýšení koeficientu přetíží shluk, ale zároveň poskytuje efektivnější vyvažování zátěže . YARN místo toho používá konfigurační konstanty, které určují hodnoty dostupné paměti RAM a jader virtuálních procesorů dostupných pro plánovač zdrojů [19] , na základě kterých se určuje úroveň paralelismu.
Na pozadí popularizace Hadoopu v roce 2008 a zpráv o budování klastrů Hadoop na Yahoo a Facebooku byla v říjnu 2008 vytvořena Cloudera , vedená Michaelem Olsonem, bývalým generálním ředitelem společnosti Sleepycat (společnost, která vytvořila Berkeley DB ), plně zaměřená na komercializace Hadoop technologií. V září 2009 se hlavní vývojář Hadoop Doug Cutting přestěhoval do Cloudery z Yahoo a díky tomuto přechodu komentátoři označili Cloudera za „nového nositele standardu Hadoop“, a to navzdory skutečnosti, že většinu projektu stále vytvářeli zaměstnanci společnosti Facebook a Yahoo [20] . MapR byla založena v roce 2009 s cílem vytvořit vysoce výkonnou verzi distribuce Hadoop a dodávat ji jako proprietární software. V dubnu 2009 Amazon spustil Elastic MapReduce, cloudovou službu, která umožňuje předplatitelům vytvářet clustery Hadoop a spouštět na nich úlohy na základě času. Později jako alternativa dostali předplatitelé Amazon Elastic MapReduce na výběr mezi klasickou distribucí od Apache a distribucí od MapR.
V roce 2011 Yahoo oddělilo divizi, která vyvíjela a používala Hadoop, do samostatné společnosti - Hortonworks , brzy se nové společnosti podařilo uzavřít dohodu s Microsoftem o společném vývoji distribuce Hadoop pro Windows Azure a Windows Server [21] . Ve stejném roce, kdy se Hadoop objevil jako jedna ze základních technologií velkých dat, prakticky všichni hlavní dodavatelé technologického softwaru pro organizace zahrnuli technologie Hadoop v té či oné podobě do svých strategií a produktových řad. Oracle tedy vydal hardwarově-softwarový komplex zařízení Big Data (předem sestavený v telekomunikační skříni a předkonfigurovaný cluster Hadoop s distribuční sadou od Cloudera) [22] , IBM vytvořilo produkt BigInsights založený na distribuční sadě Apache [ 23] , EMC licencovala od MapR jejich vysoce výkonný Hadoop pro integraci do produktů nedávno získané společnosti Greenplum [24] (tato obchodní jednotka byla později vyčleněna do samostatné společnosti Pivotal , která se přesunula do zcela nezávislé distribuce Hadoop na základě kódu Apache [25] ), Teradata uzavřela smlouvu s Hortonworks na integraci Hadoop do zařízení Aster Big Analytics [26] . V roce 2013 Intel vytvořil vlastní distribuci Hadoop [27] , o rok později upustil od svého vývoje ve prospěch řešení od Cloudery, ve které získal 18% podíl [28] .
Objem trhu se softwarem a službami kolem ekosystému Hadoop pro rok 2012 se odhaduje na 540 milionů USD s prognózou růstu na 1,6 miliardy USD do roku 2017, lídry trhu jsou kalifornské startupy Cloudera, MapR a Hortonworks [29] . Kromě nich jsou také firmy Hadapt (převzaté v červenci 2014 Teradata [30] ), Datameer , Karmasphere a Platfora, které celé své podnikání staví na vytváření produktů, které poskytují systémům Hadoop analytické schopnosti [31] .
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Projekty nejvyšší úrovně |
| ||||||
Podprojekty |
| ||||||
Webové |
| ||||||
Jiné projekty | |||||||
Rozvojové projekty ( Inkubátor ) |
| ||||||
Vyřazené projekty ( podkroví ) | |||||||
|