sql >> Databáze >  >> NoSQL >> HBase

Spekulativní poprava v Hadoop MapReduce

V tomto článku MapReduce Spekulativní exekuce podrobně prozkoumáte spekulativní exekuci Hadoop. Dozvíte se, co je to spekulativní provádění, jaká je jeho potřeba, jak jej můžeme povolit a zakázat.

Článek také vysvětluje, zda je to prospěšné nebo ne a jak to funguje.

Co je to spekulativní poprava v Hadoopu?

Model MapReduce v rámci Hadoop rozděluje úlohy na nezávislé úlohy a spouští tyto úlohy paralelně, aby se zkrátila celková doba provádění úlohy.

Díky tomu je provádění úlohy u pomalu běžících úloh citlivé na čas, protože pouze jedna pomalá úloha může prodloužit celou dobu provádění úlohy, než se očekávalo. Když se jakákoliv zakázka skládá z tisíců nebo stovek úkolů, pak je možnost těch několika nestálých úkolů velmi reálná.

Úlohy mohou být pomalé z různých důvodů, jako je chybná konfigurace softwaru nebo degradace hardwaru. Ale příčinu, která zpomaluje běh úlohy, je těžké odhalit, protože úkoly jsou stále úspěšně dokončeny, i když to trvá déle, než se očekávalo.

Rámec Hadoop se nepokouší diagnostikovat nebo opravit pomalu běžící úlohy. Framework se snaží detekovat úlohu, která běží pomaleji, než je očekávaná rychlost, a spustí jinou úlohu, která je ekvivalentní úlohám jako záloha.

Úloha zálohování je známá jako spekulativní úloha a tento proces je v Hadoopu znám jako spekulativní provádění.

Jaká je potřeba spekulativního provádění v Hadoop?

V rámci Hadoop je vstupní soubor rozdělen do několika bloků a tyto bloky byly uloženy na různých uzlech v clusteru Hadoop.

Když klient odešle úlohu MapReduce, vypočítá počet InputSplit a spustí tolik mapovačů, kolik je InputSplit. Tyto mapovače (mapovací úlohy) běží paralelně na DataNodes, kde jsou umístěna rozdělená data.

Co když těch několik DataNodes v clusteru Hadoop neprovádí úkoly tak rychle jako ostatní DataNodes, ať už kvůli selhání hardwaru nebo problémům se sítí.

Takže mapové úlohy běžící na těchto DataNode budou pomalejší ve srovnání s mapovými úlohami, které běží na ostatních DataNode. Reducer může spustit svou činnost pouze tehdy, když jsou dostupné mezivýstupy všech mapovačů.

Čím méně pomalu běžících mapových úloh tedy zdrží spuštění Reduceru.

Pokud Reducer běží na pomalejším uzlu, pak to také zpozdí celkový konečný výstup úlohy.

Aby se tedy chránil před takovými pomalu běžícími úkoly, framework Hadoop spustí stejnou úlohu na druhém uzlu. Tato optimalizace pomocí frameworku Hadoop se nazývá spekulativní provedení úlohy.

Jak funguje spekulativní poprava v Hadoopu?

Spekulativní provádění nespouští dva duplicitní úkoly každého nezávislého úkolu úlohy přibližně ve stejnou dobu, takže mohou navzájem závodit. Pokud tak rámec činí, vedlo by to k plýtvání zdroji klastru.

Namísto toho plánovač sleduje průběh všech úkolů stejného typu (jako je mapa a redukce) v úloze a spouští pouze spekulativní duplikáty pro malé části, které běžely pomaleji než průměr.

Když je úloha úspěšně dokončena, všechny spuštěné duplicitní úlohy byly zrušeny, protože již nebyly vyžadovány.

Takže v případě, že původní úkol skončí před spekulativním úkolem, je spekulativní úkol zabit. Pokud spekulativní úkol skončí před původním úkolem, původní úkol je zabit.

Upozorňujeme, že spekulativní provádění je optimalizací. Není to funkce, která by zajistila spolehlivější běh úloh MapReduce.

Jak nakonfigurovat spekulativní provádění v Hadoop?

Ve výchozím nastavení je spekulativní provádění povoleno pro úlohu Map i pro úlohy snížení. Jeho vlastnosti jsou nastaveny v mapred-site.xml konfigurační soubor.

  • mapreduce.map.spekulativní :Pokud je tato vlastnost nastavena na hodnotu true, pak je povoleno spekulativní provádění úlohy mapy. Ve výchozím nastavení je to pravda.
  • mapreduce.reduce.spekulativní :Pokud je tato vlastnost nastavena na hodnotu true, pak je povoleno spekulativní provádění úlohy snížení. Ve výchozím nastavení je to pravda.

Proč byste někdy chtěli vypnout spekulativní provádění?

Hlavním cílem spekulativního provádění je zkrátit dobu provádění úlohy. Ale to bude za cenu efektivity klastru Hadoop.

Na vytíženém clusteru Hadoop to může snížit celkovou propustnost, protože se provádějí redundantní úlohy, aby se zkrátila doba provádění jedné úlohy.

Z tohoto důvodu někteří administrátoři clusteru vypínají spekulativní spouštění na clusteru Hadoop a požadují, aby jej uživatelé explicitně zapnuli pro jednotlivé úlohy.

U úloh redukce ji můžeme vypnout, protože všechny duplicitní úlohy redukce vyžadují načtení stejných výstupů mapovače jako původní úloha, což výrazně zvýší síťový provoz v clusteru.

Je spekulativní exekuce výhodná?

Spekulativní provádění v Hadoopu je v některých případech výhodné, protože v clusteru Hadoop se stovkami nebo tisíci uzlů jsou problémy, jako je přetížení sítě nebo selhání hardwaru, běžné.

Spouštění paralelních nebo duplicitních úloh tedy bude lepší. Ale v případě, že jsou dvě duplicitní úlohy každé nezávislé úlohy úlohy spuštěny přibližně ve stejnou dobu, bude to plýtvání klastrovými prostředky.

Shrnutí

Doufám, že po přečtení tohoto článku jste jasně pochopili, co je spekulativní poprava v Hadoopu a proč je potřeba. Také jste viděli, jak jej můžeme deaktivovat pro mapové úkoly a snížit úkoly jednotlivě.


  1. MongoDB v roce 2018 – rok v recenzi

  2. Vezmeme součet sloupce v MongoDB

  3. Jak implementovat Redis Cache s Django Rest Framework?

  4. Jak vyhledávat hodnotu obsahu v redis pomocí BookSleeve