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

Ladění výkonu v MapReduce pro zlepšení výkonu

Ladění výkonu v Hadoop pomáhá při optimalizaci výkonu clusteru Hadoop. V tomto článku MapReduce Performance Tuning nejprve prozkoumáte různé způsoby, jak zlepšit výkon clusteru Hadoop a dosáhnout nejlepších výsledků z programování MapReduce v Hadoop.

Pak se článek bude zabývat sedmi důležitými způsoby nebo koncepty pro Hadoop MapReduce Performance Tuning. Těmito způsoby jsou ladění paměti v Hadoopu, Zlepšení výkonu IO, přelévání mapového disku v Hadoopu, ladění úloh mapovače a reduktoru, zapisování slučovače, používání zkosených spojení a spekulativní provádění.

Tyto techniky lze použít k nastavení clusterů Hadoop ve výrobě s komoditním hardwarem pro zvýšení výkonu s minimálními provozními náklady.

Úvod do ladění výkonu Hadoop MapReduce

Instalace clusteru Hadoop ve výrobě je jen polovina vyhrané bitvy. Pro administrátora Hadoop je nesmírně důležité vyladit nastavení clusteru Hadoop, aby získal maximální výkon.

Ladění výkonu Hadoop pomáhá optimalizovat výkon clusteru Hadoop a dosáhnout nejlepších výsledků při spouštění úloh MapReduce ve společnostech s velkým objemem dat.

Během instalace Hadoop je cluster Hadoop nakonfigurován s výchozím nastavením konfigurace.

Pro administrátory Hadoopu je velmi důležité znát několik hardwarových specifikací, jako je kapacita RAM, počet disků připojených na DataNodes, počet jader CPU, počet fyzických nebo virtuálních jader, NIC karty atd.

Jako taková neexistuje jediná technika ladění výkonu, která by vyhovovala všem úlohám Hadoop, protože je velmi obtížné dosáhnout rovnováhy mezi všemi zdroji při řešení problému velkých dat.

Tipy a triky pro ladění výkonu můžeme zvolit na základě množství dat, která mají být přesunuta, a typu úlohy Hadoop, která má být spuštěna ve výrobě. Nejlepší a nejúčinnější ladění výkonu pomáhá dosáhnout maximálního výkonu.

Abychom provedli totéž, musíme opakovat níže uvedený proces, dokud nebude dosaženo požadovaného výstupu optimálním způsobem.
Spustit úlohu –> Identifikovat úzké místo –> Adresa úzké místo.

V zásadě tedy pro ladění výkonu musíme nejprve spustit úlohu Hadoop MapReduce, identifikovat úzké místo a poté problém vyřešit pomocí níže uvedených metod. Výše uvedený krok musíme opakovat, dokud nedosáhneme požadované úrovně výkonu.

Tipy a triky pro ladění výkonu MapReduce

Způsoby používané pro ladění výkonu Hadoop MapReduce lze rozdělit do dvou kategorií. Tyto dvě kategorie jsou:

1. Ladění výkonu založené na parametrech běhu Hadoop

2. Ladění výkonu specifické pro aplikaci Hadoop

Pojďme nyní diskutovat o tom, jak můžeme zlepšit výkon clusteru Hadoop na základě těchto dvou kategorií.

1. Hadoop Run-Time Parameters Based Performance Tuning

Tato kategorie se zabývá laděním běhových parametrů Hadoop, jako je ladění využití CPU, využití paměti, využití disku a využití sítě pro ladění výkonu. Techniky zahrnuté v této kategorii jsou:

a. Ladění paměti

Nejdůležitějším krokem pro zajištění maximálního výkonu úlohy Hadoop je vyladění konfiguračních parametrů paměti sledováním využití paměti na serveru.

Každá úloha MapReduce v Hadoopu shromažďuje informace o různých přečtených vstupních záznamech, počtu záznamů redukce, počtu záznamů zřetězených pro další provedení, odkládací paměti, nastavené velikosti haldy atd.

Úlohy Hadoop obecně nejsou vázány na CPU. Prvořadým zájmem je tedy optimalizace využití paměti a přelévání disku.

Nejlepším pravidlem pro vyladění paměti pro maximalizaci výkonu je zajistit, aby úlohy MapReduce nespouštěly swapování. To znamená, že použijte tolik paměti, kolik můžete, aniž byste spustili swapování.

Ke sledování využití odkládací paměti lze použít software jako Cloudera Manager, Nagios nebo Ganglia.

Kdykoli dochází k velkému využití swapovací paměti, pak by mělo být využití paměti optimalizováno pomocí konfigurace mapred.child.java.opts vlastnost snížením množství paměti RAM přidělené každému úkolu v mapred.child.java.opts .

Paměť pro úkol můžeme upravit nastavením mapred.child.java.opts na -Xmx2048M v souboru mapred-site.xml.

b. Minimalizujte přelévání mapového disku

Disk IO je překážkou výkonu v Apache Hadoop. Bylo mnoho parametrů, které můžeme vyladit pro minimalizaci rozlití. Můžeme vyladit parametry jako:

  • Komprese výstupu mapovače
  • Ujistěte se, že mapovač využívá 70 % paměti haldy pro vyrovnávací paměť.

Myslíte si ale, že časté rozlévání je opravdu dobrý nápad?

Důrazně se doporučuje, abyste nevylévali více než jednou, protože pokud se rozlijeme jednou, musíme znovu přečíst a přepsat všechna data:3x IO.

c. Vyladění úloh mapovače

Můžeme implicitně nastavit počet mapových úkolů. Nejběžnějším a nejefektivnějším způsobem ladění výkonu Hadoop pro mapovače je řídit počet mapovačů a velikost každé úlohy.

Při práci s velkými soubory framework rozděluje soubor na menší části, aby jej mohl mapovač spouštět paralelně. Inicializace nové úlohy mapovače však obvykle trvá několik sekund, což je také režie a je třeba ji minimalizovat. Takže návrhy na to samé jsou:

  • Opětovné použití úlohy jvm
  • Zaměřte se na úkoly s mapou, z nichž každá trvá 1 až 3 minuty. Pokud je tedy průměrná doba běhu mapovače kratší než jedna minuta, zvyšte mapred.min.split.size, abyste přidělili méně mapovačů ve slotu a snížili tak režii inicializace mapovače.
  • Použijte vstupní formát Kombinovat soubor pro spoustu menších souborů.

2. Ladění výkonu specifické pro aplikaci Hadoop

Techniky zahrnuté v této kategorii jsou:

a. Minimalizace výstupu mapovače

Minimalizací výstupu mapovače můžeme zlepšit výkon, protože výstup mapovače je velmi citlivý na IO disku, síť IO a citlivost paměti ve fázi náhodného přehrávání. Můžeme toho dosáhnout:

  • Filtrování záznamů na straně mapovače místo na straně redukce.
  • Použití minimálních dat pro vytvoření našeho výstupního klíče a hodnoty mapovače v MapReduce.
  • Komprese výstupu mapovače
b. Načítání vyrovnávacího reduktoru

Nevyvážené snížení úkolů vytváří problémy s výkonem. Některé z reduktorů odebírají většinu výstupu z mapovače a běží extrémně dlouho ve srovnání s ostatními reduktory. Zatížení reduktoru můžeme vyvážit:

  • Implementace lepší hashovací funkce ve třídě Partitioner.
  • Psaní úlohy předběžného zpracování pro oddělení klíčů pomocí více výstupů. Potom použijte jinou úlohu map-reduce pro zpracování speciálních klíčů, které mohou způsobit problém.
c. Snižte počet mezilehlých dat pomocí Combineru v Hadoop

Dále můžeme vyladit výkon clusteru Hadoop napsáním slučovače. Combiner snižuje množství dat, která mají být přenesena z mapovače do reduktoru. To se ukazuje jako výhodné, protože to snižuje přetížení sítě.

d. Spekulativní exekuce

Výkon úloh MapReduce je vážně ovlivněn, když dokončení úloh trvá déle. Spekulativní provádění v Hadoopu je běžný přístup k řešení tohoto problému zálohováním pomalých úloh na alternativních počítačích.

Spekulativní provádění můžeme povolit nastavením konfiguračních parametrů ‘mapreduce.map.tasks.speculative.execution‘ a ‘mapreduce.reduce.tasks.speculative.execution’ pravda. Tím se zkrátí doba provádění úlohy.

Shrnutí

Konečně jsme viděli, že ladění výkonu v Hadoop pomáhá při optimalizaci výkonu clusteru Hadoop. Článek vysvětluje různé tipy a triky pro ladění výkonu clusteru Hadoop.

Článek zdůraznil některé z nejlepších a nejúčinnějších triků pro maximalizaci výkonu.

Pokud však máte k tomuto tématu nějaké dotazy, neváhejte je s námi sdílet v sekci komentářů.


  1. Seřazené sady Redis a nejlepší způsob ukládání uid

  2. Jak vytvořím pracovníka resque automaticky při spuštění?

  3. Redis on Azure Performance Benchmark – ScaleGrid for Redis™ vs. Azure Cache

  4. Odeslat do fronty Laravel zvenčí Laravel (NodeJS)