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