Úvod do Hadoop ekosystému
Martin Macák
Fakulta informatiky, Masarykova univerzita, Brno
14. 3. 2019
Osnova prednášky
1. Hadoop
2. Nástroje Hadoop ekosystému
Hadoop
∙ HDFS – distribuovaný file system
∙ MapReduce – framework na definovanie úlohy na
spracovanie dát
∙ YARN – framework na vykonanie úlohy (kde? ako?)
Hadoop
MapReduce
YARN
HDFS
Užívateľ napíše program
Tento program sa
pošle do clusteru
YARN zistí, kde
vykonať výpočet
Hadoop – možnosti inštalácie
∙ Standalone
∙ defaultne
∙ jeden stroj, jeden proces
∙ super na debugging MapReduce programov
∙ Pseudo-Distributed
∙ jeden stroj, viacej procesov
∙ využíva HDFS a YARN
∙ stále super iba na testovanie programov
∙ Fully Distributed
∙ cluster
∙ ťažšie sa konfiguruje
∙ typicky produkčné prostredie
Hadoop – možnosti inštalácie
∙ Hadoop distribúcie
∙ ľahšia inštalácia a konfigurácia
∙ viacero nástrojov Hadoop ekosystému
Hadoop
∙ HDFS
∙ MapReduce
∙ YARN
Hadoop
∙ HDFS
∙ MapReduce
∙ YARN
HDFS
∙ cluster, na prácu s veľkými datasetmi
∙ dávkové spracovanie
∙ odolnosť proti chybám (výpadok stroja, . . . )
HDFS
∙ Data Nodes – obsahujú dáta
∙ Name Node – obsahuje info, kde tie dáta nájdeme
HDFS
Veľký súbor
HDFS
Veľký súbor
Block 1
Block 2
Block 3
Block 4
Block 5
Block 6
defaultne 128 MB veľkosť
aký efekt by mala nižšia
veľkosť bloku?
paralelizmus, overhead
aký efekt by mala vyššia
veľkosť bloku?
overhead, paralelizmus
HDFS
Data Node 1
Block 1
Block 2
Block 3
Block 4
Data Node 2
Block 5
Block 6
Data Node 3
Name node 1
BigFile01: Block 1: DN 1
BigFile01: Block 2: DN 1
BigFile01: Block 3: DN 2
BigFile01: Block 4: DN 2
BigFile01: Block 5: DN 3
BigFile01: Block 6: DN 3
HDFS
∙ ak crashne Data Node?
∙ ak crashne Name Node?
HDFS – replikácia
Data Node 1
Data Node 2
Data Node 3
Block 3
Block 4
Block 1
Block 2
Block 5
Block 6
Block 3
Block 4
Block 1
Block 2
Block 5
Block 6
HDFS – replikácia
Name node 1
BigFile01: Block 1: DN 1
BigFile01: Block 2: DN 1
BigFile01: Block 3: DN 2
BigFile01: Block 4: DN 2
BigFile01: Block 5: DN 3
BigFile01: Block 6: DN 3
BigFile01: Block 1: DN 2
BigFile01: Block 2: DN 2
BigFile01: Block 3: DN 3
BigFile01: Block 4: DN 3
BigFile01: Block 5: DN 1
BigFile01: Block 6: DN 1
HDFS – replikácia
∙ defaultne 3 pre Fully Distributed mód, inak 1
∙ aký efekt by mal vyšší replikačný faktor?
spoľahlivosť, redundancia, efektívnosť zápisov
∙ aký efekt by mal nižší replikačný faktor?
redundancia, efektívnosť zápisov, spoľahlivosť
HDFS
∙ ak crashne Data Node?
∙ ak crashne Name Node?
HDFS – strata Name Nodu
∙ bez Name Nodu nevieme, kde sú dáta
∙ čo sa dá robiť, aby sme z neho nestratili informácie?
∙ A) súbory s metadátami
fsimage (snapshot file systému pri štarte)
edits (edity vo file systéme)
∙ dlho to trvá
∙ B) náhradný Name Node
∙ treba každý daný časový interval synchronizovať s
hlavným Name Nodom
HDFS - prakticky
∙ hadoop fs
∙ podobné Linuxu: -ls, -mkdir, -touch, -cp, -mv, . . .
∙ z lokálneho file systému do HDFS: hadoop fs -put
∙ z HDFS do lokálneho file systému: hadoop fs -get
∙ hadoop fs -help
Hadoop
∙ HDFS
∙ MapReduce
∙ YARN
MapReduce
∙ programátor definuje map a reduce
∙ map
∙ operácia, ktorá sa dá vykonať paralelne na časti datasetu
∙ vracia key-value páry
∙ reduce
∙ operácia, ktorá kombinuje výsledky map operácií
MapReduce
Mapper
Mapper
Mapper
Mapper
Mapper
(A, 1)
(B, 5)
(C, 1)
(A, 4)
(B, 1)
(A, 1)
(C, 2)
(B, 2)
(C, 3)
Reducer
(A, 6)
(B, 8)
(C, 6)
MapReduce
∙ treba sa zamyslieť nad dvomi otázkami:
1. aké key-value páry majú vychádzať z Mapperov?
2. ako skombinovať hodnoty s rovnakými kľúčmi?
MapReduce – Java demo
∙ trieda Mapper
∙ trieda Reducer
∙ main
∙ trieda Job, ktorá používa Mapper a Reducer
∙ pre objekt triedy Job treba nakonfigurovať niekoľko
vlastností
∙ následne sa môže spustiť
Hadoop
∙ HDFS
∙ MapReduce
∙ YARN
YARN
∙ koordinácia úloh v clustery
∙ drží si info o disku, RAM, CPU, . . .
∙ na základe týchto informácií rozhoduje o priebehu danej
úlohy
∙ taktiež rieši preplánovanie úloh pri výpadkoch
YARN
∙ Resource Manager
∙ beží na Name Node, má na starosti celý cluster
∙ Node Manager
∙ beží na Data Node, má na starosti len svoj uzol
∙ každý Data Node má svoj Node Manager
Hadoop ekosystém
∙ súbor nástrojov, ktoré sa časom objavili okolo Hadoopu
Hive
∙ SQL nad MapReduce – HQL
Pig
∙ manipulácie dát nad MapReduce – Pig Latin
HBase
∙ column-family NoSQL databáza nad HDFS
∙ sám o sebe poskytuje len CRUD operácie
∙ na dotazovanie treba použiť iný nástroj (Hive, Drill, . . . )
Drill
∙ SQL dotazovanie nad viacerými úložiskami
∙ podporuje napr. HDFS, HBase, MongoDB, . . .
Mahout
∙ machine learning algoritmy
Zookeeper
∙ koordinuje nástroje Hadoop ekosystému
∙ udržiava konfigurácie, poskytuje synchronizáciu, . . .
Rekapitulácia
1. Hadoop
∙ HDFS, MapReduce, YARN
2. Hadoop ekosystém
∙ v praxi treba vedieť viac nástrojov
∙ Hive, Pig, HBase, Drill, . . .
macak@mail.muni.cz