Apache Hadoop je soubor open-sourcových nástrojů, které mají za cíl zjednodušit použití sítě mnoha počítačů k řešení problémů, které zahrnují významné objemy dat a výpočtů. Nabízí softwarový Framework pro distribuované ukládání a zpracování big data za pomoci programovacího modelu MapReduce.

Původně byl navržen za účelem použití v oblasti klustrů postavených do komoditního hardware, což je stále jeden z obvyklých způsobů využití. Všechny moduly jsou postaveny s fundamentálním předpokladem, že dochází k hardwarovým výpadkům a Framework by tak měl být schopen tyto výpadky automaticky adresovat.

Jádro Apache Hadoop se skládá z úložné části, která je známá pod názvem Hadoop Distributed File System neboli HDFS a ze zpracovávající části, která vychází z programovacího modelu MapReduce. Hadoop rozděluje soubory do velkých bloků, které následně distribuuje napříč uzly v daném klustru. Nabalíčkovaný kód pak přenáší do jednotlivých uzlů tak, aby docházelo k paralelnímu zpracování dat.

To umožňuje, aby datová sada byla zpracovávaná rychleji a s vyšší efektivitou než by odpovídalo konvenční architektuře superpočítačů, která vychází z paralelních file systémů, kde jsou výpočty a data rozdistribuovaná za pomoci rychlé sítě.

Základ Apache Hadoop se skládá z následujících modulů:

  • Hadoop Common. Ten obsahuje knihovny a nástroje, které využívají ostatní Hadoop moduly.
  • Hadoop Distributed File System (HDFS). Distribuovaný file systém, který skladuje data na komoditních strojích.
  • Hadoop Yarn. Platforma zodpovědná za správu výpočetních zdrojů uspořádaných do klustrů, které využívá pro uživatelské aplikace.
  • Hadoop MapReduce. Implementace MapReduce programovacího modelu pro zpracování dat ve velkých objemech.

Termín Hadoop se používá nejen na tyto moduly, ale zároveň na samotný ekosystém nebo soubor přídavných softwarových balíčků, které je možné instalovat nad rámec nebo spolu s Hadoopem. Mezi tyto další balíčky patří například Apache Pig, Apache Hive, Apache HBase, Apache Phoenix, Apache Spark, Apache ZooKeeper, Cloudera Impala, Apache Flume, Apache Sqoop, Apache Oozie nebo Apache Storm.

Hadoop Framework sám o sobě je napsán především v Javě, s tím, že části kódu jsou psané v C a nástroje přístrojové řádky jsou psány jako shell skripty.

Výhody použití Hadoopu

  • Široká škála datových zdrojů. Hadoop šetří čas tím, že dokáže pracovat s libovolným formátem dat. Díky tomu si poradí s daty plynoucími z mnoha formátově nekompatibilních zdrojů.
  • Nákladová efektivita. Uložení dat v Hadoopu je nákladově efektivní.
  • Rychlost. Hadoop umožňuje zpracování dat na stejném serveru, kde jsou data i uložená. Zpracování terabytů dat tak trvá jen několik minut.
  • Duplikace. Data jsou ukládána ve více kopiích. V případě selhání jednoho článku tak nedochází ke ztrátě dat.

Nevýhody použití Hadoopu

  • Integrace s existujícími systémy. Hadoop není optimalizovaný pro jednoduchost použití. Instalace a integrace s existujícími databázemi může být náročná, zvláště vzhledem k tomu, že nenabízí žádnou podporu.
  • Administrace a jednoduchost použití. Hadoop vyžaduje hluboké znalosti MapReduce, zatímco většina odborníků, kteří pracují s daty, používá SQL. To znamená, že se zavedení Hadoopu pojí s obsáhlým školením uživatelů.
  • Bezpečnost. Hadoop nemá úroveň bezpečnosti, která by odpovídala bezpečnému podnikovému využití a to především v oblasti citlivých údajů.
  • Single Point of Failure (SPOF). Původní verze Hadoopu má pouze jediný uzel, který je zodpovědný za to, kde jsou uložena veškerá data. Proto jsou v případě selhání tohoto jediného uzlu klustry zbytečné. Další verze Hadoopu nicméně tento zásadní nedostatek odstranily.