sql >> Databáze >  >> RDS >> Database

Jak MapReduce funguje v Hadoopu

MapReduce byl model představený společností Google jako metoda řešení třídy problémů s velkými daty s velkými shluky levných strojů. Hadoop vstřebává tento model do jádra svého pracovního procesu. Tento článek poskytuje úvodní představu o modelu MapReduce, který Hadoop používá při řešení problému velkých dat.

Přehled

Typická Big Data aplikace se zabývá velkou sadou škálovatelných dat. Použití jediné databáze k ukládání a získávání může být hlavním úzkým hrdlem zpracování. To platí zejména v případě, že k ukládání velkého množství dat používáme monolitickou databázi, jak můžeme vidět u relačních databází a jak se používají jako jediné úložiště. To nebude fungovat, zvláště se musíme vypořádat s velkými datovými sadami v distribuovaném prostředí.

Google k řešení situace použil algoritmus MapReduce a přišel s řešením. Cílem je rozdělit větší úkol na menší zvládnutelné části a distribuovat je mezi počítače v síti ke zpracování. Takto získaný výsledek je integrován do konečného souboru dat. Tato myšlenka se stala základem projektu Hadoop Douga Cuttinga. Hadoop používá tento algoritmus ke zpracování dat paralelně s ostatními, aby poskytl kompletní statistickou analýzu velkých souborů dat. Proto lze Hadoop hrubě rozdělit na dvě části:

  • Zpracování: Využito pomocí algoritmu MapReduce
  • Úložiště: Využito HDFS

Hadoop MapReduce je tedy implementací algoritmu vyvinutého a udržovaného projektem Apache Hadoop. Funguje jako stroj sám o sobě, kde poskytujeme vstup a motor reaguje tak, že rychle a efektivně transformuje vstup na výstup, přičemž zpracování probíhá v několika fázích. Tato zjevně zjednodušující myšlenka potřebuje trochu propracování, jak následuje.

MapReduce

MapReduce je paralelní programovací model používaný pro rychlé zpracování dat v prostředí distribuovaných aplikací. Funguje na datových sadách (multiterabajtech dat) distribuovaných napříč clustery (tisíce uzlů) v komoditní hardwarové síti. Programy MapReduce běží na Hadoop a lze je psát ve více jazycích – Java, C++, Python a Ruby. Základní charakteristikou programu MapReduce je to, že do programů přirozeně vložil ducha paralelismu. Díky tomu je ideální pro analýzu dat ve velkém měřítku, která může využít model paralelismu ve své praxi k efektivnějšímu a rychlejšímu vytlačování výsledků z existující infrastruktury.

Jak to funguje

Hadoop MapReduce rozděluje úkoly do několika fází, z nichž každá má významnou sadu funkcí pro extrahování požadovaného výsledku z velkých dat. Funguje na uzlech v clusteru hostovaném na kolekci komoditních serverů. Proces začíná uživatelským požadavkem, který spustí jádro MapReduce, a končí uložením výsledku zpět do HDFS.

Spuštění úlohy MapReduce můžeme spustit vyvoláním JobClient.runJob(conf) metoda. Toto je pohodlný způsob vytvoření nového JobClienta instance. To zase vyvolá submitJob() a každou sekundu zjišťuje průběh úlohy a hlásí zpět konzoli, pokud od posledního generování zprávy došlo k nějaké změně. To má dominový efekt a spouští řadu operací v zákulisí. Prvním krokem je najít a přečíst vstupní soubor, který obsahuje nezpracovaná data. Formát souboru je libovolný a musí být převeden do formátu vhodného pro zpracování. Toto je úloha pro InputFormat a RecordReader(RR) . InputFormat používá funkci nazvanou InputSplit rozdělit soubor na menší části. RecorReader(RR) poté transformuje nezpracovaná data a zpřístupní je pro zpracování pomocí mapy .

Mapování

Jakmile jsou data přijatelná pro mapování, vytvoří samostatnou instanci pro každý vstupní pár (klíč a hodnota) a zahájí zpracování. Jakmile mapovací funkce začne produkovat výstup, není přímo zapsán na disk; místo toho se ukládá do vyrovnávací paměti, aby provedl nějaké předběžné třídění. Každá mapa udržuje kruhovou vyrovnávací paměť, kam přesměrovává výstup. Při překročení prahové velikosti se obsah rozlitého obsahu zapíše zpět na disk. Dále rozděluje data na oddíly přijatelné pro reduktor, do kterého jsou data přesměrována jako další. Všechny tyto práce však probíhají simultánně na více uzlech v clusteru Hadoop. Po dokončení mapových úkolů se mezivýsledky shromažďují v oddílu a dochází k míchání a třídění, aby se optimalizoval výstup pro redukci, která převezme jako vstup.

Zmenšit a sloučit

Co snížení dostane, je také pár klíč, hodnota a působí podobným způsobem jako mapa. Shromažďuje mapový výstup z několika mapových úloh v celém clusteru a začíná zpracovávat až po dokončení mapování. Má sadu vláken kopírky ke sloučení a přelití výstupu poskytovaného mapou na disk. Jak se kopie hromadí na disku, vlákno na pozadí je sloučí do větších, seřazených souborů. Poskytuje také výstup ve formě páru klíč, hodnota a může být nutné jej přeformátovat pomocí OutputFormat než bude aplikace schopna přijmout formát. OutputFormat nakonec vezme pár klíč, hodnota a zapíše zpracovaná data zpět do HDFS. Zde RecordWriter hraje hlavní roli, podobně jako RecordReader , kromě toho, že se na začátku účastní čtení z HDFS.

Závěr

Toto je jen špička ledovce. Existuje mnoho složitých detailů a mnohem více se děje v zákulisí. Stručně řečeno, Hadoop MapReduce poskytuje možnosti rozdělit velká data na menší, spravovatelné části, zpracovávat je paralelně v distribuovaném clusteru a nakonec zpřístupnit data pro spotřebu nebo dodatečné zpracování. Hadoop se dnes rozrostl do většího ekosystému nástrojů a technologií k řešení současných problémů s velkými daty a rychle se vyvíjí, aby zdokonalil své funkce.


  1. Jak mohu protokolovat/sledovat volání uložených procedur Oracle s hodnotami parametrů?

  2. Jak přehledněji zobrazit data tabulky v oracle sqlplus

  3. Nelze najít vstupní bod s názvem „InterlockedIncrement“ v knihovně DLL „kernel32.dll“ – [chráněno e-mailem] 64 bit

  4. Vytvoření databáze Oracle 12c – krok za krokem