Co je Hadoop?

Hadoop je open source framework založený na Javě, který se používá k ukládání a zpracování velkých objemů dat. Data se ukládají na levných komoditních serverech, které běží jako clustery. Jeho distribuovaný souborový systém umožňuje souběžné zpracování a odolnost proti chybám. Hadoop, který vyvinuli Doug Cutting a Michael J. Cafarella, používá programovací model MapReduce pro rychlejší ukládání a načítání dat ze svých uzlů. Tento rámec spravuje Apache Software Foundation a je licencován pod licencí Apache License 2.0.

Zatímco výpočetní výkon aplikačních serverů po léta mnohonásobně rostl, databáze kvůli své omezené kapacitě a rychlosti zaostávaly. Dnes však mnoho aplikací generuje velké objemy dat, které je třeba zpracovat, a proto hraje Hadoop významnou roli při zajišťování tolik potřebné změny ve světě databází.

Stáhněte si nyní Hadoop a datová jezera.
Čtěte nyní

I z obchodního hlediska existují přímé a nepřímé výhody. Použitím open-source technologie na levných serverech, které jsou většinou v cloudu (a někdy i on-premise), dosahují organizace významných úspor nákladů.

Schopnost shromažďovat obrovské množství dat a poznatky získané z jejich zpracování navíc vedou k lepším obchodním rozhodnutím v reálném světě – například ke schopnosti zaměřit se na správný segment zákazníků, vyřadit nebo opravit chybné procesy, optimalizovat provoz na podlaze, poskytovat relevantní výsledky vyhledávání, provádět prediktivní analýzu atd.

Jak Hadoop vylepšuje tradiční databáze

Hadoop řeší dva klíčové problémy tradičních databází:

Kapacita: Hadoop ukládá velké objemy dat.

Pomocí distribuovaného souborového systému zvaného HDFS (Hadoop Distributed File System) jsou data rozdělena na části a uložena v clusterech komoditních serverů. Protože jsou tyto komoditní servery postaveny na jednoduchých hardwarových konfiguracích, jsou úsporné a snadno škálovatelné s nárůstem objemu dat.

Rychlost: Hadoop ukládá a načítá data rychleji.

Hadoop používá funkční programovací model MapReduce k provádění paralelního zpracování napříč soubory dat. Při odesílání dotazu do databáze se tedy namísto sekvenčního zpracování dat úlohy rozdělí a souběžně probíhají napříč distribuovanými servery. Nakonec se výstupy všech úloh sloučí a odešlou zpět do aplikace, čímž se výrazně zvýší rychlost zpracování.

5 výhod systému Hadoop pro velká data

Pro velká data a analytiku je systém Hadoop záchranou. Data shromážděná o lidech, procesech, objektech, nástrojích atd. jsou užitečná pouze tehdy, když se objeví smysluplné vzorce, které následně vedou k lepším rozhodnutím. Hadoop pomáhá překonat výzvu, kterou představuje rozsáhlost velkých dat:

  1. Odolnost – Data uložená v libovolném uzlu jsou replikována i v ostatních uzlech clusteru. Tím je zajištěna odolnost proti chybám. Pokud dojde k výpadku jednoho uzlu, je v clusteru vždy k dispozici záloha dat.
  2. Škálovatelnost – Na rozdíl od tradičních systémů, které mají omezení v ukládání dat, je Hadoop škálovatelný, protože pracuje v distribuovaném prostředí. Podle potřeby lze sestavu snadno rozšířit o další servery, které mohou ukládat až několik petabajtů dat.
  3. Nízké náklady – Vzhledem k tomu, že Hadoop je open-source framework a není třeba pořizovat licence, jsou náklady ve srovnání s relačními databázovými systémy výrazně nižší. V jeho prospěch hraje také použití levného komoditního hardwaru, díky němuž je řešení ekonomické.
  4. Rychlost – Distribuovaný souborový systém Hadoop, souběžné zpracování a model MapReduce umožňují spouštět složité dotazy během několika sekund.
  5. Různorodost dat – Systém HDFS má schopnost ukládat různé formáty dat, jako jsou nestrukturovaná (např. videa), polostrukturovaná (např. soubory XML) a strukturovaná. Při ukládání dat není vyžadována validace podle předem definovaného schématu. Data lze spíše vypisovat v libovolném formátu. Později, při načítání, jsou data analyzována a přizpůsobena libovolnému schématu podle potřeby. To umožňuje flexibilně získávat různé poznatky pomocí stejných dat.

Stáhnout zprávu O’Reilly: Hadoop do cloudu nyní.
Přečtěte si ji nyní

Ekosystém Hadoop: Základní komponenty

Hadoop není jen jedna aplikace, je to spíše platforma s různými nedílnými komponentami, které umožňují distribuované ukládání a zpracování dat. Tyto komponenty dohromady tvoří ekosystém Hadoop.

Některé z nich jsou základními komponentami, které tvoří základ frameworku, zatímco některé jsou doplňkovými komponentami, které do světa Hadoop přinášejí doplňkové funkce.

Základní komponenty Hadoopu jsou:

HDFS: Udržování distribuovaného souborového systému

HDFS je pilířem Hadoopu, který udržuje distribuovaný souborový systém. Umožňuje ukládat a replikovat data na více serverech.

HDFS má NameNode a DataNode. DataNode jsou komoditní servery, na kterých jsou data skutečně uložena. NameNode naproti tomu obsahuje metadata s informacemi o datech uložených v různých uzlech. Aplikace komunikuje pouze s uzlem NameNode, který podle potřeby komunikuje s datovými uzly.

YARN: Yet Another Resource Negotiator

YARN je zkratka pro Yet Another Resource Negotiator. Spravuje a plánuje prostředky a rozhoduje, co se má dít v jednotlivých datových uzlech. Centrální hlavní uzel, který řídí všechny požadavky na zpracování, se nazývá Správce zdrojů. Správce zdrojů spolupracuje se správci uzlů; každý podřízený datový uzel má svého vlastního správce uzlů, který provádí úlohy.

MapReduce

MapReduce je programovací model, který poprvé použila společnost Google pro indexování svých vyhledávacích operací. Jedná se o logiku používanou k rozdělení dat na menší množiny. Funguje na základě dvou funkcí – Map() a Reduce() – které rychle a efektivně rozebírají data.

První funkce Map seskupuje, filtruje a třídí paralelně více sad dat a vytváří tuply (dvojice klíč, hodnota). Poté funkce Reduce agreguje data z těchto tuplů a vytvoří požadovaný výstup.

Ekosystém Hadoop: Doplňkové komponenty

Následuje několik doplňkových komponent, které se v ekosystému Hadoop hojně používají.

Hive: Datové sklady

Hive je systém pro ukládání dat, který pomáhá při dotazování velkých datových sad v systému HDFS. Před systémem Hive se vývojáři potýkali s problémem vytváření složitých úloh MapReduce pro dotazování dat v systému Hadoop. Hive používá jazyk HQL (Hive Query Language), který se podobá syntaxi jazyka SQL. Vzhledem k tomu, že většina vývojářů pochází z prostředí SQL, je snazší si Hive osvojit.

Výhodou Hive je, že jako rozhraní mezi aplikací a HDFS funguje ovladač JDBC/ODBC. Vystavuje souborový systém Hadoop jako tabulky, převádí jazyk HQL na úlohy MapReduce a naopak. Vývojáři a správci databází tak sice získají výhodu dávkového zpracování velkých souborů dat, ale mohou k tomu používat jednoduché, známé dotazy. Hive, původně vyvinutý týmem společnosti Facebook, je nyní technologií s otevřeným zdrojovým kódem.

Pig: Reduce MapReduce Functions

Pig, původně vyvinutý společností Yahoo!, je podobný Hive v tom, že eliminuje potřebu vytvářet funkce MapReduce pro dotazování systému HDFS. Podobně jako u HQL se použitý jazyk – zde nazývaný „Pig Latin“ – blíží jazyku SQL. „Pig Latin“ je vysokoúrovňová vrstva jazyka pro tok dat nad MapReduce.

Pig má také běhové prostředí, které spolupracuje s HDFS. Uvnitř Pig lze také vložit skripty v jazycích, jako je Java nebo Python.

Hive versus Pig

Ačkoli mají Pig a Hive podobné funkce, jeden z nich může být v různých scénářích efektivnější než druhý.

Pig je užitečný ve fázi přípravy dat, protože dokáže snadno provádět složitá spojení a dotazy. Dobře také pracuje s různými formáty dat, včetně polostrukturovaných a nestrukturovaných. Pig Latin má blíže k jazyku SQL, ale zároveň se od něj liší natolik, že je nutné se jej naučit.

Hive však dobře pracuje se strukturovanými daty, a proto je efektivnější při práci s datovými sklady. Používá se na serverové straně clusteru.

Výzkumníci a programátoři používají Pig spíše na klientské straně clusteru, zatímco uživatelé business intelligence, jako jsou datoví analytici, považují Hive za vhodný.

Flume:

Flume je nástroj pro příjem velkých objemů dat, který funguje jako kurýrní služba mezi různými zdroji dat a systémem HDFS. Shromažďuje, agreguje a odesílá obrovské množství proudových dat (např. soubory protokolů, události) generovaných aplikacemi, jako jsou weby sociálních médií, aplikace internetu věcí a portály elektronického obchodování, do systému HDFS.

Flume je bohatý na funkce, má:

  • Má distribuovanou architekturu.
  • Zajišťuje spolehlivý přenos dat.
  • Je odolný proti chybám.
  • Má flexibilitu pro sběr dat v dávkách nebo v reálném čase.
  • Dle potřeby lze horizontálně škálovat, aby zvládl větší provoz.

Zdroje dat komunikují s agenty Flume – každý agent má zdroj, kanál a sink. Zdroj shromažďuje data od odesílatele, kanál data dočasně ukládá a nakonec sink přenáší data do cíle, kterým je server Hadoop.

Sqoop:

Sqoop („SQL“ pro Hadoop) je další nástroj pro příjem dat, podobně jako Flume. Zatímco Flume pracuje s nestrukturovanými nebo částečně strukturovanými daty, Sqoop slouží k exportu dat z relačních databází a importu dat do nich. Vzhledem k tomu, že většina podnikových dat je uložena v relačních databázích, používá se Sqoop k importu těchto dat do Hadoopu, kde je mohou zkoumat analytici.

Administrátoři a vývojáři databází mohou k exportu a importu dat používat jednoduché rozhraní příkazového řádku. Sqoop tyto příkazy převede do formátu MapReduce a odešle je do systému HDFS pomocí sítě YARN. Sqoop je také odolný proti chybám a provádí souběžné operace jako Flume.

Zookeeper: Koordinace distribuovaných aplikací

Zookeeper je služba, která koordinuje distribuované aplikace. V rámci Hadoopu funguje jako nástroj pro správu s centralizovaným registrem, který obsahuje informace o clusteru distribuovaných serverů, které spravuje. Některé z jejích klíčových funkcí jsou:

  • Udržování konfiguračních informací (sdílený stav konfiguračních dat)
  • Pojmenovací služba (přiřazení jména každému serveru)
  • Synchronizační služba (řeší deadlocky, race condition a nekonzistenci dat)
  • Volba lídra (volí lídra mezi servery pomocí konsensu)

Klastr serverů, na kterých služba Zookeeper běží, se nazývá „ensemble“. Ansámbl volí ze skupiny vůdce, ostatní se chovají jako následovníci. Všechny operace zápisu od klientů musí být směrovány přes vůdce, zatímco operace čtení mohou jít přímo na libovolný server.

Zookeeper poskytuje vysokou spolehlivost a odolnost díky synchronizaci bezpečné při poruše, atomicitě a serializaci zpráv.

Kafka: Rychlejší přenosy dat

Kafka je distribuovaný systém publikování a odběru zpráv, který se často používá se systémem Hadoop pro rychlejší přenosy dat. Cluster Kafka se skládá ze skupiny serverů, které fungují jako prostředník mezi producenty a spotřebiteli.

V kontextu velkých dat může být příkladem producenta senzor, který shromažďuje údaje o teplotě a předává je zpět na server. Spotřebiteli jsou servery Hadoop. Producenti publikují zprávy na téma a konzumenti stahují zprávy nasloucháním tématu.

Jedno téma lze dále rozdělit na oddíly. Všechny zprávy se stejným klíčem přicházejí do určitého oddílu. Spotřebitel může naslouchat jednomu nebo více oddílům.

Seskupením zpráv pod jeden klíč a získáním spotřebitele pro obsluhu konkrétních oddílů může mnoho spotřebitelů naslouchat stejnému tématu najednou. Téma je tak paralelizováno, což zvyšuje propustnost systému. Kafka je široce rozšířená pro svou rychlost, škálovatelnost a robustní replikaci.

HBase: Nerelační databáze

HBase je sloupcová nerelační databáze, která je umístěna nad systémem HDFS. Jedním z problémů systému HDFS je, že umí pouze dávkové zpracování. Pro jednoduché interaktivní dotazy se tedy data stále musí zpracovávat dávkově, což vede k vysoké latenci.

HBase tento problém řeší tím, že umožňuje dotazy na jednotlivé řádky v obrovských tabulkách s nízkou latencí. Toho dosahuje interním použitím hashovacích tabulek. Je modelována po vzoru tabulky Google BigTable, která pomáhá přistupovat k souborovému systému Google (GFS).

HBase je škálovatelná, má podporu při výpadku uzlu a dobře pracuje s nestrukturovanými i polostrukturovanými daty. Proto je ideální pro dotazování velkých datových úložišť pro analytické účely.

Stáhnout zprávu O’Reilly: Hadoop do cloudu nyní.
Přečtěte si ji hned

Problémy Hadoopu

Ačkoli je Hadoop všeobecně považován za klíčového pomocníka při zpracování velkých objemů dat, stále existují určité problémy, které je třeba zvážit. Tyto výzvy vyplývají z povahy jeho složitého ekosystému a z potřeby pokročilých technických znalostí k provádění funkcí systému Hadoop. Se správnou integrační platformou a nástroji se však složitost výrazně snižuje, a proto je i práce s ním jednodušší.

Strmá křivka učení

Pro dotazování souborového systému Hadoop musí programátoři napsat funkce MapReduce v jazyce Java. To není jednoduché a zahrnuje to strmou křivku učení. Také je příliš mnoho komponent, které tvoří ekosystém, a seznámení se s nimi vyžaduje čas.

Různé datové sady vyžadují různé přístupy

V systému Hadoop neexistuje žádné univerzální řešení. Většina výše zmíněných doplňkových komponent vznikla jako reakce na mezeru, kterou bylo třeba vyřešit.

Například Hive a Pig poskytují jednodušší způsob dotazování na datové sady. Kromě toho nástroje pro příjem dat, jako jsou Flume a Sqoop, pomáhají shromažďovat data z různých zdrojů. Existuje i řada dalších komponent a pro správnou volbu je třeba mít zkušenosti.

Omezení MapReduce

MapReduce je vynikající programovací model pro dávkové zpracování velkých datových sad. Má však svá omezení.

Jeho souborově náročný přístup s vícenásobným čtením a zápisem není vhodný pro interaktivní analýzu dat v reálném čase nebo iterativní úlohy. Pro takové operace není MapReduce dostatečně efektivní a vede k vysokým latencím. (Tento problém lze obejít. Alternativou, která zaplňuje mezeru po MapReduce, je Apache)

Zabezpečení dat

S přesunem velkých dat do cloudu se na servery Hadoop přesouvají citlivá data, což vyvolává potřebu zajistit jejich zabezpečení. Rozsáhlý ekosystém obsahuje tolik nástrojů, že je důležité zajistit, aby každý nástroj měl správná přístupová práva k datům. Je třeba zajistit odpovídající ověřování, provisioning, šifrování dat a častý audit. Systém Hadoop je schopen tuto výzvu řešit, ale je to otázka odborných znalostí a pečlivosti při provádění.

Přestože mnoho technologických gigantů používá zde diskutované komponenty systému Hadoop, je v tomto odvětví stále relativně nový. Většina problémů vyplývá z tohoto počátku, ale robustní platforma pro integraci velkých dat je může všechny vyřešit nebo usnadnit.

Hadoop vs Apache Spark

Model MapReduce i přes své mnohé výhody není efektivní pro interaktivní dotazy a zpracování dat v reálném čase, protože se spoléhá na zápis na disk mezi jednotlivými fázemi zpracování.

Spark je engine pro zpracování dat, který tento problém řeší pomocí ukládání dat v paměti. Ačkoli začal jako dílčí projekt systému Hadoop, má vlastní technologii clusteru.

Často se Spark používá nad systémem HDFS, aby se využil pouze aspekt ukládání dat systému Hadoop. Pro algoritmus zpracování používá vlastní knihovny, které podporují dotazy SQL, streamování, strojové učení a grafy.

Datoví vědci Spark hojně využívají pro jeho bleskovou rychlost a elegantní, funkčně bohaté rozhraní API, které usnadňuje práci s velkými soubory dat.

Ačkoli se může zdát, že Spark má oproti Hadoopu výhodu, oba mohou pracovat společně. V závislosti na požadavku a typu datových sad se Hadoop a Spark vzájemně doplňují. Spark nemá vlastní souborový systém, takže je při ukládání dat závislý na systému HDFS nebo jiných podobných řešeních.

Skutečné srovnání je vlastně mezi logikou zpracování Sparku a modelem MapReduce. Pokud je paměť RAM omezená a pro noční úlohy je MapReduce vhodným řešením. Pro streamování dat, přístup ke knihovnám strojového učení a pro rychlé operace v reálném čase je však ideální volbou Spark.

Budoucnost s mnoha možnostmi

Za pouhých deset let se systém Hadoop výrazně prosadil ve výpočetním průmyslu. Díky němu se totiž možnosti analýzy dat konečně staly reálnými. Jeho využití je rozmanité – od analýzy návštěvnosti stránek přes odhalování podvodů až po bankovní aplikace.

S aplikací Talend Open Studio for Big Data je snadné integrovat nastavení Hadoop do jakékoli datové architektury. Talend poskytuje více vestavěných datových konektorů než jakékoli jiné řešení pro správu dat, což umožňuje vytvářet bezproblémové datové toky mezi Hadoopem a jakýmkoli významným souborovým formátem (CSV, XML, Excel atd.), databázovým systémem (Oracle, SQL Server, MySQL atd.), balíčkovými podnikovými aplikacemi (SAP, SugarCRM atd.) a dokonce i cloudovými datovými službami, jako jsou Salesforce a Force.com.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.