HBase
 sql >> Baza danych >  >> NoSQL >> HBase

Dostrajanie wydajności w MapReduce w celu poprawy wydajności

Dostrajanie wydajności w Hadoop pomaga zoptymalizować wydajność klastra Hadoop. W tym artykule dotyczącym dostrajania wydajności MapReduce najpierw poznasz różne sposoby poprawy wydajności klastra Hadoop i osiągnięcia najlepszych wyników z programowania MapReduce w Hadoop.

Następnie w artykule omówiono siedem ważnych sposobów lub koncepcji dostrajania wydajności MapReduce Hadoop. Te sposoby to dostrajanie pamięci w Hadoop, poprawa wydajności we/wy, rozlewanie mapowania dysku w usłudze Hadoop, dostrajanie zadań mapowania i reduktora, pisanie łączenia, używanie sprzężeń skośnych i wykonywanie spekulatywne.

Techniki te można wykorzystać do tworzenia klastrów Hadoop w produkcji z powszechnie dostępnym sprzętem w celu zwiększenia wydajności przy minimalnych kosztach operacyjnych.

Wprowadzenie do Hadoop MapReduce dostrajanie wydajności

Zainstalowanie klastra Hadoop w produkcji to tylko połowa wygranej bitwy. Dla administratora Hadoop niezwykle ważne jest dostrojenie konfiguracji klastra Hadoop w celu uzyskania maksymalnej wydajności.

Dostrajanie wydajności Hadoop pomaga zoptymalizować wydajność klastra Hadoop i osiągnąć najlepsze wyniki podczas wykonywania zadań MapReduce w firmach Big Data.

Podczas instalacji Hadoop klaster Hadoop jest konfigurowany z domyślnymi ustawieniami konfiguracji.

Bardzo ważne jest, aby administratorzy Hadoop znali kilka specyfikacji sprzętowych, takich jak pojemność pamięci RAM, liczba dysków zamontowanych w DataNodes, liczba rdzeni procesora, liczba rdzeni fizycznych lub wirtualnych, karty sieciowe itp.

W związku z tym nie ma jednej techniki dostrajania wydajności, która pasowałaby do wszystkich zadań Hadoop, ponieważ bardzo trudno jest uzyskać równowagę między wszystkimi zasobami podczas rozwiązywania problemu dużych zbiorów danych.

Możemy wybrać porady i wskazówki dotyczące dostrajania wydajności na podstawie ilości danych do przeniesienia oraz typu zadania Hadoop, które ma zostać uruchomione w środowisku produkcyjnym. Najlepsze i najskuteczniejsze dostrajanie wydajności pomaga w osiągnięciu maksymalnej wydajności.

Aby wykonać to samo, musimy powtarzać opisany poniżej proces, aż pożądany wynik zostanie osiągnięty w optymalny sposób.
Uruchom zadanie –> Zidentyfikuj wąskie gardło –> Zaadresuj wąskie gardło.

Zasadniczo, w celu dostrojenia wydajności, musimy najpierw uruchomić zadanie Hadoop MapReduce, zidentyfikować wąskie gardło, a następnie rozwiązać problem za pomocą poniższych metod. Musimy powtórzyć powyższy krok, aż osiągniemy pożądany poziom wydajności.

Wskazówki i wskazówki dotyczące dostrajania wydajności MapReduce

Sposoby używane do dostrajania wydajności Hadoop MapReduce można podzielić na dwie kategorie. Te dwie kategorie to:

1. Dostrajanie wydajności w oparciu o parametry wykonawcze Hadoop

2. Dostosowywanie wydajności aplikacji Hadoop do konkretnych aplikacji

Omówmy teraz, jak możemy poprawić wydajność klastra Hadoop w oparciu o te dwie kategorie.

1. Dostrajanie wydajności w oparciu o parametry wykonawcze Hadoop

Ta kategoria dotyczy dostrajania parametrów wykonawczych usługi Hadoop, takich jak dostrajanie użycia procesora, użycie pamięci, użycie dysku i użycie sieci w celu dostrajania wydajności. Techniki zawarte w tej kategorii to:

a. Dostrajanie pamięci

Najważniejszym krokiem zapewniającym maksymalną wydajność zadania Hadoop jest dostrojenie parametrów konfiguracyjnych pamięci poprzez monitorowanie wykorzystania pamięci na serwerze.

Każde zadanie MapReduce w Hadoop zbiera informacje o różnych odczytanych rekordach wejściowych, liczbie rekordów reduktora, liczbie rekordów przesyłanych potokiem do dalszego wykonania, pamięci wymiany, ustawionym rozmiarze sterty itp.

Zadania Hadoop na ogół nie są związane z procesorem. Dlatego głównym problemem jest optymalizacja wykorzystania pamięci i rozlewania się dysków.

Najlepszą zasadą kciuka dostrajania pamięci w celu zmaksymalizowania wydajności jest upewnienie się, że zadania MapReduce nie wyzwalają wymiany. Oznacza to, że użyj jak największej ilości pamięci bez wyzwalania wymiany.

Oprogramowanie takie jak Cloudera Manager, Nagios lub Ganglia może być używane do monitorowania wykorzystania pamięci wymiany.

Ilekroć występuje duże wykorzystanie pamięci wymiany, użycie pamięci należy zoptymalizować, konfigurując mapred.child.java.opts właściwość, zmniejszając ilość pamięci RAM przydzielonej do każdego zadania w mapred.child.java.opts .

Możemy dostosować pamięć do zadania, ustawiając mapred.child.java.opts do -Xmx2048M w mapred-site.xml.

b. Zminimalizuj wyciek z dysku mapy

Disk IO to wąskie gardło wydajności w Apache Hadoop. Było wiele parametrów, które możemy dostroić, aby zminimalizować rozlewanie. Możemy dostroić parametry takie jak:

  • Kompresja danych wyjściowych mapowania
  • Upewnij się, że program odwzorowujący używa 70% pamięci sterty na bufor rozlewania.

Ale czy uważasz, że częste rozlewanie to naprawdę dobry pomysł?

Zdecydowanie zaleca się, aby nie rozlewać więcej niż raz, ponieważ jeśli rozlejemy raz, musimy ponownie odczytać i przepisać wszystkie dane:3x więcej we/wy.

c. Dostrajanie zadań mapowania

Możemy domyślnie ustawić liczbę zadań mapy. Najczęstszym i najskuteczniejszym sposobem dostrajania wydajności Hadoop dla maperów jest kontrolowanie liczby maperów i rozmiaru każdego zadania.

Podczas pracy z dużymi plikami platforma dzieli plik na mniejsze porcje, aby program odwzorowujący mógł go uruchamiać równolegle. Jednak inicjalizacja nowego zadania mapowania zwykle zajmuje kilka sekund, co również jest narzutem i należy go zminimalizować. Sugestie dotyczące tego samego to:

  • Ponowne użycie zadania JVM
  • Wyceluj w zadania mapy trwające od 1 do 3 minut każde. Więc jeśli średni czas działania programu mapującego jest krótszy niż jedna minuta, zwiększ plik mapred.min.split.size, aby przydzielić mniej maperów w gnieździe, a tym samym zmniejszyć obciążenie inicjowania maperów.
  • Użyj formatu wejściowego Połącz plik dla kilku mniejszych plików.

2. Dostosowywanie wydajności aplikacji Hadoop do konkretnych aplikacji

Techniki zawarte w tej kategorii to:

a. Minimalizowanie danych wyjściowych mapera

Minimalizując dane wyjściowe mapowania, możemy poprawić wydajność, ponieważ dane wyjściowe mapowania są bardzo wrażliwe na dyskowe IO, sieciowe IO i czułość pamięci w fazie odtwarzania losowego. Możemy to osiągnąć poprzez:

  • Filtrowanie rekordów po stronie mapowania zamiast po stronie reduktora.
  • Użycie minimalnej ilości danych do utworzenia naszego klucza wyjściowego mapowania i wartości w MapReduce.
  • Kompresowanie danych wyjściowych mapowania
b. Równoważenie reduktora ładowania

Niezrównoważone zadania redukujące powodują problemy z wydajnością. Niektóre reduktory pobierają większość danych wyjściowych z mapera i działają wyjątkowo długo w porównaniu z innymi reduktorami. Możemy zrównoważyć obciążenie reduktora poprzez:

  • Implementacja lepszej funkcji skrótu w klasie Partitioner.
  • Pisanie zadania wstępnego przetwarzania do oddzielania kluczy przy użyciu wielu wyjść. Następnie użyj innego zadania redukującego mapę do przetwarzania kluczy specjalnych, które mogą powodować problem.
c. Zmniejsz dane pośrednie za pomocą narzędzia Combiner w Hadoop

Ponadto możemy dostroić wydajność klastra Hadoop, pisząc sumator. Combiner zmniejsza ilość danych przesyłanych z mapera do reduktora. Okazuje się to korzystne, ponieważ zmniejsza przeciążenie sieci.

d. Egzekucja spekulacyjna

Wydajność zadań MapReduce jest poważnie ograniczona, gdy zadania trwają dłużej, aby zakończyć ich wykonanie. Spekulacyjne wykonywanie w Hadoop jest powszechnym podejściem do rozwiązania tego problemu poprzez tworzenie kopii zapasowych powolnych zadań na alternatywnych komputerach.

Możemy włączyć wykonanie spekulacyjne, ustawiając parametry konfiguracyjne 'mapreduce.map.tasks.speculative.execution' i „mapreduce.reduce.tasks.speculative.execution” do prawdy. Skróci to czas wykonania zadania.

Podsumowanie

Wreszcie zauważyliśmy, że dostrajanie wydajności w Hadoop pomaga w optymalizacji wydajności klastra Hadoop. W artykule wyjaśniono różne porady i wskazówki dotyczące dostrajania wydajności klastra Hadoop.

W artykule podkreślono niektóre z najlepszych i najskuteczniejszych sztuczek maksymalizacji wydajności.

Jeśli jednak masz jakiekolwiek pytania dotyczące tego tematu, podziel się nimi z nami w sekcji komentarzy.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Replikacja Apache HBase:przegląd operacyjny

  2. Instrukcje:indeksowanie zeskanowanych plików PDF na dużą skalę przy użyciu mniej niż 50 wierszy kodu

  3. Tuning Java Garbage Collection dla HBase

  4. Hadoop — samouczki Apache Hadoop dla początkujących

  5. Wewnątrz architektury Santander do przetwarzania danych w czasie zbliżonym do rzeczywistego