Ú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