Predavatelj: izr. prof. Uroš Lotrič Asistent: Davor Sluga
Vsebina 5 x V Problemi velikih podatkov Apache Hadoop kot rešitev Kaj je Hadoop HDFS YARN MapReduce Hadoop ekosistem
VVVVV Volume (Količina) Količina podatkov eksponentno narašča (MB GB TB PB) Socialna omrežja, IoT Variety (Raznovrstnost) Podatki iz različnih virov, v različnih formatih Podatki so strukturirani (shema, sql), delno strukturirani (xml, json) nestrukturirani (avdio, video, slike) Velocity (Hitrost) Hitro generiranje podatkov Value (Vrednost) Vsebina ima vrednost Potrebne metode, ki jo znajo izluščiti Veracity (Nekonsistentnost) Nekonsistentnost podatkov, pri zajemanju ali obdelavi se lahko kaj izgubi
Problemi velikih podatkov Shranjevanje Ni možno na tradicionalnih sistemih Hitrost zbiranja, eksponentno naraščanje Podatki prihajajo iz različnih virov Prenos Veliko podatkov je treba prenesti na računska vozlišča Pasovna širina prenosa podatkov ne narašča eksponentno 1 Gbps, 1 TB 150 min Obdelava Ogromne količine podatkov čas narašča
Hadoop Ogrodje za paralelno shranjevanje in obdelavo podatkov v porazdeljenem okolju Zgradba HDFS Hadoop Distributed File System Omogoča shranjevanje podatkov v porazdeljeno okolje MapReduce Računska vozlišča sistema Hadoop Paralelna obdelava podatkov, shranjenih v HDFS
Hadoop Shranjevanje velikih količin podatkov HDFS je porazdeljeni datotečni sistem Raznovrstni podatki HDFS pri shranjevanju ne uporablja nobene validacijske sheme Lahko shrani karkoli Hitrejše procesiranje podatkov Paralelno procesiranje z MapReduce
Hadoop HDFS Hierarhična arhitektura Logično HDFS vidimo kot eno vozlišče (NameNode), dejansko se podatki shranijo na mnogo vozlišč (DataNode) NameNode Vhodne podatke razdeli na manjše bloke in jih porazdeli med vozlišča DataNode Hrani samo meta podatke o lokaciji podatkov na vozliščih DataNode Kje je shranjen kakšen podatkovni blok Kje so shranjene replike Vozlišča DataNode dejansko hranijo podatke Potreba po replikaciji Vozlišča DataNode običajna strojna oprema, velika verjetnost, da odpovedo Vsak blok repliciran trikrat
Hadoop HDFS Pri shranjevanju podatkov v HDFS ni potrebno definirati sheme Raztegljivost Količina podatkov eksponentno narašča Lahko dodamo več virov na vozlišča DataNode (vertikalno) Lahko povečamo število vozlišč DataNode (horizontalno) Hadoop predstavlja abstrakcijo virov, z njim celoten HDFS vidimo kot enoten vir
Hadoop HDFS HDFS Blok Velikost bloka 128 MB Primer Datoteko velikost 500 MB razbije na štiri bloke
Hadoop HDPS Vozlišče NameNode Glavno vozlišče Vzdržuje in upravlja vozlišča DataNode Shranjuje metapodatke Lokacije blokov, velikost datotek, pravice, podatke o replikah Dve datoteki vezani na metapodatke fsimage Stanje datotečnega sistema od začetka delovanja vozlišča NameNode editlog Vse nedavne spremembe na datotečnem sistemu (fsimage) Sprejema signal hearbeat in poročila o stanju blokov z vozlišč DataNode
Hadoop HDFS Vozlišča DataNode Shranjevalna vozlišča Shranjujejo podatkovne bloke Obdelujejo bralne in pisalne zahteve Odjemalec pošlje zahtevo vozlišču NameNode Vozlišče NameNode aktivira ustrezna vozlišča DataNode Običajna strojna oprema, ne pretirano visoka kvaliteta Replikacija signal Hearbeat Da vozliščle DataNode vsak trenutek pozna arhitekturo sistema Vsake tri sekunde
Hadoop HDFS Vozlišče Secondary NameNode Pomoč vozlišču NameNode Ne gre za varnostno kopijo vozlišča NameNode če vozlišče NameNode odpove, ga ne moremo zamenjati z vozliščem Secondary NameNode Iz zadnje slike datotečnega sistema fsimage in sprememb editlogs gradi enotno (končno) sliko datotečnega sistema Jo po potrebi pošlje na vozlišče NameNode
Hadoop HDFS Vozlišče Secondary NameNode Gradnja slike sistema (checkpointing) Enkrat na uro, fsimage: kompletna slika sistema od zagona vozlišča NameNode Ob ustvarjanju slike sistema NameNode ustvari datoteko editlog, ki vključuje podatke o spremembah datotek, podatke o spremembah meta podatkov, podatke iz pomnilnika vozlišča NameNode Secondary NameNode iz svoje trenutne slike fsimage in sprememb v editlog ustvarja enotno sliko fsimage (final) Nov fsimage se redno skopira nazaj na NameNode
Hadoop YARN Yet Another Resource Negotiator Vozlišče ResourceManager Sprejema zahteve za obdelave s stani odjemalca Posreduje zahteve na ustrezna vozlišča NodeManager Vozlišče NodeManager Nameščeno na vsakem vozlišču DataNode Dejansko izvaja obdelava podatkov Samo na podatkih, ki so shranjeni na tem vozlišču
Hadoop YARN Arhitektura Odjemalec: pošlje zahtevo na ResourceManager ResourceManager: Razvrščevalnik Razdeli zahtevo na vozlišča NodeManager Upošteva različne zahteve (več odjemalcev, hkratno izvajanje več aplikacij) AppManager Sprejema statuse in zahteve vozlišč NodeManager Vozliščem NodeManager dodeljuje vire
Hadoop YARN Arhitektura NodeManager: AppMaster Sporoča potrebe po virih razvrščevalniku Vzpostavi vsebnik in bdi nad izvajanjem obdelave Vsebnik izvajalno okolje s potrebnimi viri V njem se obdelava dejansko izvaja
Hadoop YARN Delovni tok obdelave 1. Odjemalec pošlje zahtevo za procesiranje na ResourceManager 2. Razvrščevalnik določi vire, ki bodo zahtevo izvajali (lokacija podatkov, zasedenost virov) in v vsebnikih na NodeMangerjih zažene AppManager 3. AppManager se registrira na ResourceManagerju 4. AppManager zahteva podatke o izvajalnem vsebniku 5. AppManager sproži zagon izvajalnega vsebnika na NodeManagerju 6. V izvajalnem vsebniku se izvede obdelava 7. Odjemalec lahko poizveduje o statusu posla 8. NodeManager vrne rezultate na ResourceManager ResourceManager Ko so vse obdelave zaključene, združi rezultate Rezultate shrani na HDFS
Hadoop HDFS in YARN Postavitev servisov NodeManager je vedno na istem vozlišču kot DataNode NameNode in ResourceManager sta lahko ločeni vozlišči
Hadoop MapReduce Mapreduce Ideja Je programsko ogrodje za obdelavo velikih količin podatkov Uporablja porazdeljene in vzporedne algoritme okolja Hadoop Dva dela: Map in Reduce Zahtevo za obdelavo pošlje tja, kjer so podatki Klasični centri HPC delajo obratno: podatke pošiljajo na računske vire
Hadoop MapReduce Mapreduce Dva dela: Map in Reduce Funkcija Map Prebere bloke podatkov v obliki <ključ1, vrednost1> Iz njih ustvari množico parov <ključ2, vrednost2> Funkcija Reduce Sprejme pare <ključ2, vrednost2> Iz več Map poslov naredi redukcijo Usvari končne pare <ključ3, vrednost3>
Hadoop MapReduce: WordCount Shranjevanje podatkov Input: ena datoteka z vsemi besedami Splitting: bloki datoteke porazdeljeni na vozlišča DataNode
Hadoop MapReduce: WordCount Shranjevanje podatkov Mapping: se izvaja na NodeManagerjih Shuffling, Reducing: se izvaja na ResourceManagerju Final result: ResourceManager shrani na HDFS
Hadoop MapReduce: WordCount start-all.sh stop-all.sh Spletni vmesniki Podatki o vozliščih Število aktivnih vozlišč Brskanje po HDFS preko spletnega vmesnika Seznam servisov ukaz jps
Hadoop MapReduce: WordCount start-all.sh jps hdfs dfs -ls / hdfs dfs -put HuckleBerryFinn.txt / javac WordCount.java -cp $(hadoop classpath) jar cf wc.jar WordCount*.class hadoop jar wc.jar WordCount /HuckleBerryFinn.txt /outwc hdfs dfs -get /outwc hdfs dfs -rm -r /outwc stop-all.sh http://localhost:9870 http://localhost:8088 http://localhost:8088/cluster?user.name=hduser
Hadoop ekosistem
MapReduce Glavno orodje v ekosistemu Hadoop Zahteva programiranje Z njim je izdelava porazdeljenih/vzporednih aplikacij enostavnejša V programu MapReduce sta pomembni dve funkciji Map: filtriranje, grupiranje, sortiranje Reduce: redukcija rezultatov map funkcije Java primarno, ni omejen s tem. Problem s prenosljivostjo.
Yahoo PIG Poenostavi pripravo poslov Procesiranje podatkov z uporabo poizvedb (query) Dve komponenti Jezik PIG latin Izvajalno okolje 1 vrstica Pig latin je 100 vrstic posla MapReduce Platforma za pripravo toka podatkov Naloži podatke Grupiranje/filtriranje/združevanje/razvrščanje Izpis na zaslon
Apache HIVE Podobno kot PIG Jezik zelo podoben SQL Razvit na Facebooku Takrat so analitiki znali uporabljati samo podatkovne baze SQL Dve komponenti HIVE pozivna vrstica Gonilnik JDBC/ODBC Možno dodajanje lastnih funkcij
Mahout in Spark MLib Okolje za pripravo aplikacij za strojno učenje Pozivna vrstica Knjižnica z vnaprej pripravljenimi algoritmi Filtriranje, razvrščanje, klasifikacija Market basket analysis
Apache Spark Vodilno orodje v ekosistemu Hadoop University of Berkley, kasneje predan Apache Orodje za podatkovno analitiko v realnem času MapReduce: pošiljanje poslov v vrsto Napisan v jeziku Scala izračuni v pomnilniki (in-memory computations) za pohitritev izvajanja operacij MapReduce 100 x hitrejši z uporabo izračunov v pomnilniku Spark ne potrebuje Hadoopa Veliko podatkov je v HDFS, zato souporaba
Apache HBase Podatkovna baza nosql Shranjevanje poljubnih podatkov Lahko back-end spletnih strani, avtomatsko zbiranje podatkov Fault-tolerant način shranjevanja redkih podatkov Napisan v Javi, Hbase aplikacije se lahko piše z uporabo storitev REST Samostojno ali v povezavi s HDFS
Apache Drill Namenjen hkratni povezavi z različnimi podatkovni bazami SQL in nosql Uporablja ANSI SQL Ena poizvedba lahko dela na vseh bazah
OOZIE Upravnik poslov Dva modula Workflow: Skrbi za izvajanje posla na podlagi podanega podatkovnega toka Coordinator: Na podlagi pridobljenih podatkov ali drugih dogodkov sproža izvajanje operacij
Flume in Sqoop Flume Ekstrakcija podatkov iz socialnih omrežij Vpisovanje podatkov na HDFS Sqoop Uvažanje in izvažanje podatkov iz relacijskih podatkovnih baz v HDFS
Apache Solr in Lucene Iskanje in indeksiranje v ekosistemu Hadoop Lucene Zasnovan na Javi Knjižnica za iskanje in indeksiranje Solr je aplikacija uporablja Lucene
Apache Zookeeper Strežnik za zelo zanesljivo porazdeljeno koordinacijo med orodji ekosistema Omogoča komunikacijo med vsemi omenjenimi orodji v ekosistemu Izvaja sinhronizacijo, konfiguracijo, Upravlja s servisi, ki tečejo v sistemu
Apache Ambari Upravljalnik gruče Hadoop Omogoča enostavno inštalacijo in konfiguracijo ekosistema Centralno upravljanje vseh servisov start, stop, rekonfiguracija Nadzira status gruče