nav line

Distribuované zpracování dat pomocí nástrojů Apache Software Foundation

Tento článek bude zaměřen na technologie softwarové nadace Apache, které nám mají usnadnit práci při zpracování velkého množství dat. Popíši ekosystém Apache Hadoop, model MapReduce pro distribuované zpracování a jeho implementaci v Hadoop použitou. Dále představím souborový systém HDFS, sloupcově orientovanou databázi Hbase,datový sklad Hive či centralizovanou službu pro správu konfigurací, distribuované synchronizace a skupinových služeb zvanou ZooKeeper.

Apache Hadoop

Hadoop je framework pro paralelní běh aplikací určený pro zpracování velkého objemu dat na běžných počítačích. Sdružuje v sobě několik nástrojů, které jsou navzájem nezávislé a které řeší problematiku určité části procesu pořizování, ukládání a zpracování dat (například volně dostupná nerelační databáze Cassandra). Hadoop vznikl v roce 2005 a jeho tvůrci jsou Mike Cafarella a Doug Cutting. Je navržený, aby z důvodu zajištění vyšší spolehlivosti, detekoval a řešil chyby na úrovni aplikace. Momentálně se jedná o unikátní projekt pro svoji funkčnost a oblíbenost. Z tohoto projektu vychází mnoho komerčních řešení. Ve svých řešeních ho používají a na jeho rozvoji se podílejí i největší “hráči” (Microsoft, Yahoo, Facebook, Ebay apod.).

Hadoop Common

Spravuje množinu pomocných funkcí a rozhraní pro distribuované souborové systémy a obecný vstup/výstup, které používají všechny knihovny frameworku (nástroje pro serializaci, Java RPC - vzdálené volání procedur, odolné datové struktury apod.).

Hadoop YARN

Jedná se o správce plánování a monitorování úloh v Hadoop frameworku. Zavádí pojem správce zdrojů („resource manager“), který se na základě informací z plánovače a správce vláken stará o rozdělování úloh na jednotlivé vlákna (většinou reprezentována samostatnými stroji) v clusteru. Správce zdrojů získává informace nejen o stavu vláken, ale i o úspěšnosti či selhání jednotlivých úloh či vláken. Slouží tak i jako monitoring stavu vlákna, na kterém Hadoop běží a v případě selhání jednoho vlákna předá požadavek na jiné vlákno clusteru.

Hadoop MapReduce

Úloha zpracování velkého množství textových dat je víceméně velmi jednoduchá. Nicméně, pokud je hlavním požadavkem, aby výpočet skončil v rozumném čase, je nutné jej rozdělit mezi více strojů. Tím se tato poměrně jednoduchá úloha komplikuje. Proto přišla firma Google s abstrakcí, která skrývá paralelizaci, vyvážení zátěže a rozdělení dat do knihovny s programovým schématem MapReduce, kterou je možné provozovat na běžných počítačích. Inspiraci k pojmenování tvůrci získali z „primitiv“ funkcionálních programovacích jazyků (Haskell, Lisp).

Map v názvu značí namapování „unární funkce“ na seznam a slouží pro rozdělení úlohy na jednotlivé „slave uzly“. Reduce znamená redukování těchto seznamů pomocí „binární funkce“ a slouží k redukci výsledků na „master uzlu“ (odstranění duplicitních indexů a řádků). Z toho je patrné, že je zde uplatněn princip nadřízených a podřízených (master/slave) uzlů. V principu přijme nadřízený uzel požadavek uživatele. Předá map funkci k vykonání svým podřízeným serverům. Od podřízených serverů dostane výsledky, které následně redukuje a konečný výsledek předá uživateli.

Hadoop MapReduce je založen na Hadoop YARN čímž získává tyto vlastnosti:

  • distribuovatelnost - rovnoměrné rozložení úlohy do jednotlivých výpočetních uzlů s ohledem na jejich výkon
  • škálovatelnost - možnost doplnění dalších uzlů do clusteru
  • robustnost - obnova úlohy při lokálním výpadku

Hadoop Distributed File System (HDFS)

HDFS je distribuovaný souborový systém navržený pro uložení velmi velkých souborů. Jedná se o aplikaci napsanou v Javě tvořící další vrstvu nad souborovým systémem operačního systému. HDFS klient poskytuje programové aplikační rozhraní (API) na způsob standardů POSIX. Nicméně autoři nedodrželi přesné POSIX standarty, na úkor vylepšení výkonu. HDFS ukládá informace o datech a data samotná samostatně. Metadata jsou ukládána na vyhrazeném serveru nazvaném „NameNode“, aplikační data jsou umístěna na více serverech zvaných „DataNode“. Všechny servery jsou vzájemně propojeny a komunikují mezi sebou pomocí protokolů založených na TCP.

Stručně se dá tento souborový systém popsat jako

  • úsporný - běží na obvyklých serverech
  • spolehlivý - řeší redundanci a obnovu dat při výpadku (bez nutnosti RAID)
  • rozšiřitelný - automaticky přenáší data na nové uzly při zvětšení clusteru

Tyto nástroje jsou základem celé řady řešení, které nám dávají svobodnou volbu v co nejefektivnějším přístupu k objemným datům. Umožňuje nám v poměru cena/výkon získat opravdu špičková řešení, která jsou prověřená těmi největšími firmami. Zde se zmíním, dle mého názoru, o několika zásadních.

Apache HBase

Apache HBase je nerelační (sloupcově orientovaná) distribuovaná databáze. HBase používá HDFS jako uložiště a podporuje jak dávkově orientované výpočty pomocí MapReduce tak i bodové dotazy (náhodné čtení). Rychlost odezvy je důležitější než časová konzistence a úplnost.

Apache Hive

Jedná se o distribuovaný datový sklad, kde jsou data uložená v HDFS. Apache Hive umožňuje pomocí HQL (dotazovací jazyk založený na SQL, který je za běhu překládán na úlohy MapReduce) vytvářet tabulky, schémata a reporty přímo nad daty, čímž umožňuje strukturovaný přístup.

Apache ZooKeeper

Apache ZooKeeper je centralizovaná služba pro správu konfigurací, pojmenovávání, poskytování distribuované synchronizace a poskytování skupinových služeb. Ulehčuje správu serverů, na kterých Hadoop běží a snižuje riziko nekonzistentního nastavení mezi servery.

Mimo tyto řešení je na Hadoop frameworku založeno mnoho dalších projektů a rozšířeních. Velké obliby dosahuje nerelační databáze Apache Cassandra, nebo uživatelsky přívětivé webové rozhraní pro správu a monitoring clusteru Apache Ambari.

Z nástroji z rodiny Apache Hadoop je možné za velmi nízké náklady dosáhnout velmi dobrých výsledků. Jelikož je Hadoop navržen pro provoz na komoditním hardware odpadá nutnost zpracování dat na specializovaných počítačích určených pro práci s s velkým objemem dat.

Ohodnoťte článek

Distribuované zpracování dat pomocí nástrojů Apache Software Foundation
Seriál
Svět databází a webová integrace

Související články

Vyhledávání na blogu

Webová integrace

Webová integrace jako nová oblast pro business „velkých" webových agentur.

o webové integraci

Profily blogujících