Hadoop

  • vhodné pro: velké soubory (čtení na disku až 100 MB/s, výhody sekvenčního čtení), streamovací přístup
  • nevhodné pro: spoustu malých souborů (hodně zpomalí rychlost disku, až na třeba 1 MB/s), náhodný přístup

Důvody pro Hadoop

  • distribuovatelnost - 1 soubor nemusí být celý v jednom nodu
  • replikace
  • NameNode - metadata na jiném serveru
  • append only FS

Architektura Hadoopu

  • HDFS: distribuovaný FS
    • velký soubor je rozdělen na 64 MB chunky a třikrát replikován
  • YARN: plánovač úloh a alokátor zdrojů
    • Application Master – alokuje zdroje
    • Resource Manager – globální správce zdrojů pro cluster. řeknu mu o paměť, RAM, on mi řekne, zda to jde
    • Node Manager – podřízený správce zdrojů na nodu, kouká se, zda je dost místa pro danou operaci
  • MapReduce
  • Zookeeper - sdílení konfiguračních souborů, komunikace clusterů
  • zvěřinec nad tím: Hive, Spark, HBase (NoSQL databáze), Kafka (messaging), Flume (ukládání logů), Sqoop (integrace z DB), Oozie (workflow scheduler), …

  • Name Node - ukládá metadata
  • Data Node
    • Ukládá Databloky
    • Získává bloky od klientů
    • Získává bloky od ostatních DataNodů
    • Dostává příkaz delete od NameNode
  • Secondary NameNode
    • pomocník pro NameNode, NE jeho záloha
    • dva soubory
      • fsimage - jak vypadá FS poté, co NameNode začal
      • edit logs - posloupnost změn na FS poté, co NameNode začal
    • po restartu NN jsou editlogs aplikovány na fsimage, abychom dostali poslední verzi snapshotu FS
    • ale restarty NN jsou vzácné, takže edit logy můžou být hodně velké a merge může dlouho trvat
    • je třeba nějak zmenšit velikost edit logů
  • replikační faktor většinou 3: 2 repliky ve stejném racku, třetí replika mimo

  • HDFS soubory jsou rozděleny do bloků - default 64MB/128MB, ale lze změnit

Typy souborů

  • řádkové - CSV, TSV, Avro (obsahuje schéma)
    • vhodné, pokud se ptám často na většinu sloupců
  • sloupcové - ORC, Parquet
    • vhodné, pokud se ptám jen na část sloupců
    • nevhodné pro modifikaci (v Hadoopu netřeba), náročné pro zápis
    • má metadata až na konci - předtím je ještě nezná, dává smysl
  • SequenceFile - data ve formátu klíč, hodnota
    • vhodný formát pro hodně malých souborů

Komprese

Rychlost Účinnost Splitovatelnost
GZIP/ZLib
BZip2
LZO
Snappy

Splitovatelnost – kompresní algoritmus vytváří bloky, které lze samostatně dekomprimovat – nutnost pro paralelní zpracování

  • kdy použít jaký
    • archivace - Gzip
    • splitable - možná nikdy, protože se můžou už bloky komprimovat a ne celé soubory
kj/hadoop-a-hdfs.txt · Poslední úprava: 18.09.2017 16:16 autor: kj

Nástroje pro stránku