Database
 sql >> Baza danych >  >> RDS >> Database

Jak działa MapReduce w Hadoop

MapReduce był modelem wprowadzonym przez Google jako metoda rozwiązywania klasy problemów Big Data z dużymi klastrami niedrogich maszyn. Hadoop wchłania ten model w rdzeń swojego procesu pracy. Ten artykuł przedstawia wstępne pojęcie o modelu MapReduce używanym przez Hadoop w rozwiązywaniu problemu Big Data.

Przegląd

Typowa aplikacja Big Data zajmuje się dużym zestawem skalowalnych danych. Używanie pojedynczej bazy danych do przechowywania i pobierania może być głównym wąskim gardłem przetwarzania. Jest to szczególnie prawdziwe, jeśli używamy monolitycznej bazy danych do przechowywania ogromnej ilości danych, jak widać w przypadku relacyjnych baz danych i jak są one używane jako pojedyncze repozytorium. To nie zadziała, zwłaszcza że mamy do czynienia z dużymi zestawami danych w środowisku rozproszonym.

Google wykorzystał algorytm MapReduce do rozwiązania sytuacji i wymyślił rozwiązanie. Pomysł polega na podzieleniu większego zadania na mniejsze, łatwe w zarządzaniu części i rozesłaniu ich na komputery w sieci w celu przetworzenia. Uzyskany w ten sposób wynik jest integrowany w celu utworzenia końcowego zestawu danych. Ten pomysł stał się podstawą projektu Hadoop firmy Doug Cutting. Hadoop używa tego algorytmu do przetwarzania danych równolegle z innymi w celu dostarczenia kompletnej analizy statystycznej na dużych zbiorach danych. Dlatego Hadoop można ogólnie podzielić na dwie części:

  • Przetwarzanie: Wykorzystywane przez algorytm MapReduce
  • Pamięć: Wykorzystywane przez HDFS

Hadoop MapReduce jest zatem implementacją algorytmu opracowanego i utrzymywanego przez projekt Apache Hadoop. Działa jak maszyna sama w sobie, w której dostarczamy dane wejściowe, a silnik reaguje, szybko i skutecznie przekształcając dane wejściowe w dane wyjściowe, przetwarzając je na wielu etapach. Ten nazbyt uproszczony pomysł wymaga nieco dopracowania, gdy idzie dalej.

MapReduce

MapReduce to równoległy model programowania używany do szybkiego przetwarzania danych w rozproszonym środowisku aplikacji. Działa na zestawach danych (wiele terabajtów danych) rozproszonych w klastrach (tysiące węzłów) w sieci sprzętowej. Programy MapReduce działają na platformie Hadoop i mogą być napisane w wielu językach — Java, C++, Python i Ruby. Główną cechą charakterystyczną programu MapReduce jest to, że z natury wchłonął on w programy ducha paralelizmu. To sprawia, że ​​jest idealny do analizy danych na dużą skalę, która może wykorzystać model równoległości w swojej praktyce, aby wydajniej i szybciej wycisnąć wyniki z istniejącej infrastruktury.

Jak to działa

Hadoop MapReduce dzieli zadania na wiele etapów, z których każdy zawiera znaczący zestaw funkcji do wyodrębnienia pożądanego wyniku z Big Data. Działa na węzłach w klastrze hostowanym na zbiorze serwerów towarowych. Proces rozpoczyna się od żądania użytkownika, które uruchamia silnik MapReduce, a kończy zapisaniem wyniku z powrotem w HDFS.

Możemy zainicjować uruchomienie zadania MapReduce, wywołując JobClient.runJob(conf) metoda. Jest to wygodna metoda tworzenia nowego JobClient instancja. To z kolei wywołuje submitJob() i co sekundę odpytuje postęp zadania i zgłasza się do konsoli, jeśli nastąpiła jakakolwiek zmiana od ostatniego wygenerowania raportu. Ma to efekt domina i uruchamia zestaw operacji za kulisami. Pierwszym krokiem jest znalezienie i odczytanie pliku wejściowego zawierającego surowe dane. Format pliku jest dowolny i należy go przekonwertować na format odpowiedni do przetwarzania. To jest zadanie dla InputFormat i RecordReader(RR) . Format wejściowy używa funkcji o nazwie InputSplit podzielić plik na mniejsze części. RecorReader(RR) następnie przekształca surowe dane i udostępnia je do przetwarzania przez mapę .

Mapowanie

Gdy dane zostaną zaakceptowane do mapowania, tworzy odrębne wystąpienie dla każdej pary wejściowej (klucz i wartość) i rozpoczyna przetwarzanie. Gdy tylko funkcja mapowania zacznie generować dane wyjściowe, nie są one bezpośrednio zapisywane na dysku; zamiast tego jest przechowywany w buforze pamięci w celu wykonania wstępnego sortowania. Każda mapa utrzymuje bufor kołowy, do którego przekierowuje dane wyjściowe. Po przekroczeniu rozmiaru progowego rozlana zawartość jest zapisywana z powrotem na dysk. Następnie dzieli dane na partycje akceptowane przez reduktor, do którego dane są następnie przekierowywane. Wszystkie te prace odbywają się jednak jednocześnie na wielu węzłach klastra Hadoop. Po zakończeniu zadań na mapie wyniki pośrednie są gromadzone w partycji, a następnie odbywa się tasowanie i sortowanie w celu optymalizacji wyników w celu zmniejszenia przejęcia jako danych wejściowych.

Zmniejsz i połącz

Redukcja jest również kluczem, parą wartości i działa w podobny sposób jak mapa. Zbiera dane wyjściowe mapy z kilku zadań mapy w klastrze i rozpoczyna przetwarzanie dopiero po zakończeniu mapowania. Ma zestaw wątków kopiujących, które łączą i rozlewają na dysk dane wyjściowe dostarczone przez mapę. Gdy kopie gromadzą się na dysku, wątek w tle łączy je w większe, posortowane pliki. Dostarcza również dane wyjściowe w postaci pary klucz-wartość i może wymagać przeformatowania przez OutputFormat przed złożeniem wniosku być w stanie zaakceptować format. Format wyjściowy w końcu pobiera klucz, parę wartości i zapisuje przetworzone dane z powrotem do HDFS. Tutaj, Recordwriter odgrywa główną rolę, podobnie jak RecordReader , poza tym, że na początku bierze udział w odczycie z HDFS.

Wniosek

To tylko wierzchołek góry lodowej. Istnieje wiele zawiłych szczegółów i znacznie więcej dzieje się za kulisami. Krótko mówiąc, Hadoop MapReduce zapewnia możliwości dzielenia Big Data na mniejsze, łatwe w zarządzaniu części, przetwarzania ich równolegle w rozproszonym klastrze i wreszcie udostępniania danych do wykorzystania lub dodatkowego przetwarzania. Hadoop stał się dziś większym ekosystemem narzędzi i technologii służących do rozwiązywania najtrudniejszych problemów związanych z Big Data i szybko ewoluuje, aby udoskonalić swoje funkcje.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. AWS Summits 2018:Chicago Recap

  2. Poznaj rolę architektów danych w zarządzaniu danymi

  3. Naprawianie utraty danych za pomocą przesyłania dzienników z opóźnionym odzyskiwaniem

  4. Błąd podczas korzystania z połączenia OLAP:dostawca MSOLAP nie jest zarejestrowany na komputerze lokalnym...

  5. Jak utworzyć przewijalny, aktualizowalny obiekt ResultSet w JDBC?