„MapReduce” jest jednym z trzecich elementów Hadoop. Ramy te są wydajne do przetwarzania dużych danych równolegle z innymi zadaniami. Podstawowym celem „MapReduce” jest mapowanie każdego zadania zbiorowo w grupach, a następnie zmniejszy to do równych zadań w celu zmniejszenia tworzenia klastrów procesów. Zadanie „MapReduce” jest podzielone na dwie fazy.
Mapa zmniejsz koncepcję i architekturę
Dane wejściowe są dystrybuowane na małe fragmenty w celu przetwarzania danych przez różnych pracowników. Każda mała część jest odwzorowana na sytuację pośredniego/stan. Że dane pośrednie są następnie gromadzone razem, a następnie następuje proces podziału, który jest oparty na wartości kluczowej, aby zachować ze sobą wszystkie powiązane materiały. Następnie ten partycjonowanie danych prowadzi do uzyskanego zmniejszonego zestawu. Rozważmy poniższy schemat.
Części architektury
Części pracy uzyskane z pracy są następnie przenoszone na mapę i zmniejszają zadania. Te dwa zadania mają programy i algorytmy, które zależą od wymagań użytkownika. Dane wejściowe są używane i wprowadzane do zadania mapy. Zadanie mapy wygeneruje następnie parę wartości pośredniej, która będzie działać jako dane wejściowe dla fazy zmniejszenia. W fazie redukcji, po przeprowadzeniu procesu redukcji, przechowuj ostateczne wyniki w HDFS. Teraz przechodząc w kierunku przykładu Reduce Map, kod w przykładzie jest wyjaśniany zarówno fazami osobno, jak i ich wyjściami.
Kod Pythona MapReduce
Hadoop Streaming API służy do przekazywania danych między mapą i zmniejszenia kodu przez stdin i mocno. Aby odczytać dane wejściowe i wydrukować wyjście: „Sys.Stdin ”jest używany. Inne procedury są obsługiwane przez samop strumieniowe Hadoop.
Faza mapy
Głównym zastosowaniem fazy mapy jest mapowanie danych wejściowych w postaci par klawiszów. Wartość kluczowa, której używaliśmy, może działać jako identyfikator, jest pewien adres, a wartość zawiera rzeczywistą wartość, która jest utrzymywana. Ta faza mapy wygeneruje wartość pośrednią z kluczem jako wyjście. Aby zmniejszyć funkcję, wyjście mapy jest używane jako wejście. Rozważmy kod funkcji mapy. Ta funkcja jest również znana jako maper.py.
Powinieneś utworzyć plik i zapisać kod w tym pliku. I.E/HOME/AQSA/MAPPER.py. Skrypt mapy nie jest w stanie obliczyć wartości pośredniej wszystkich słów, która występuje kilka razy. Zamiast tego da części danych, nawet słowa powtarzają wielokrotności czasów w danych wejściowych. Pozwolimy, aby funkcja zmniejszyła liczbę słów, obliczając sumę ich wystąpienia. Jedna rzecz, o której należy pamiętać, plik ma uprawnienia do wykonania (CHMOD+X/HOME/AQSA/MAPPER.py). Przechodząc do kodu, pierwszym krokiem będzie import modułu SYS. Wejście zostanie pobrane za pomocą pętli For przez stdin.
Dla linii w sys.stdin:
Ta funkcja następnie odczytuje wiersz według linii, rozebrał wszystkie wiersze i usunie białe linie między nimi przez funkcję paska. Podobnie każda linia jest podzielona na słowa za pomocą funkcji podzielonej. Obie funkcje są zadeklarowane wewnątrz ciała dla pętli.
# linia = linia.rozebrać się()Po wykonaniu wszystkich funkcji każde słowo zostanie wydrukowane jeden po drugim.
Wartości pośrednich ulegają dwóch procesach przed wejściem w fazę redukcji. Te dwa etapy to tasowanie i faza sortowania.
Faza tasowania:
Celem tej funkcji jest powiązanie wszystkich wartości podobnego klucza. Na przykład rozważ słowo (tak, 1), które miało miejsce 4 razy w pliku wyjściowym. Więc po tej fazie wyjście zostanie pokazane jako (tak, [1,1,1,1]).
Faza sortowania:
Po zakończeniu procesu przetasowania wartości wyjściowe są wysyłane do fazy sortowania. W tej fazie wszystkie klucze i wartości są sortowane automatycznie. W Hadoop proces sortowania nie wymaga żadnego algorytmu sortowania, ponieważ jest to proces automatyczny. To z powodu wbudowanego interfejsu o nazwie „WriTableComparableInteface”.
Zmniejszyć fazę
Wartości pośrednie są następnie przenoszone do funkcji zmniejszania po ich sortowaniu. Zmniejsz grupę funkcji Dane w zależności od pary wartości kluczowej zgodnie z algorytmem reduktora używanego przez programistę.
Kod, który zaimplementujemy, jest zapisywany w pliku ścieżki „/home/aqsa/reducer.py ”. Ten plik odczytuje wyniki z „maper.plik py ”ze stdin. W tym celu format „maper.plik py ”i dane wejściowe pochodzące z mapera.PY powinien być taki sam. Następnie ta funkcja przyjmuje sumę wystąpienia każdego słowa, a ostateczne wyjście jest wyświetlane przez stdout.
#!/usr/bin/env pythonModuł SYS jest importowany najpierw. Wówczas zmienna dla procesu zliczania jest deklarowana 0 jako wartość początkowa. Wzięliśmy wartości wejściowe za pomocą pętli, a linie są oddzielone, podobnie jak funkcja mapy. Aby podzielić słowa, używamy zarówno słów, jak i zliczamy zmienne.
# Count, Word = linia.split („\ t”, 1)W ciele Try, zmienną liczby przypisuje się wartość. Stalowanie IF służy do sprawdzenia, czy nadchodzące słowo jest takie samo jak przechowywane; Zmienna liczby jest zwiększana.
# Current_count += liczbaWynikowa wartość
Aby sprawdzić wyniki, przejdź do terminala Linuksa. Tutaj użyjemy ciągu, który łączy pojedyncze i powtarzalne słowa, aby uzyskać wszechstronne wyniki.
$ echo „mapa i redukuj to skuteczna i wydajna funkcja, tworz mapę Zmniejsz framework” | /home/aqsa/maper.Py | sort -k1,1 | /home/aqsa/reduktor.py
Wniosek
„MapReduce Python Przykład” składa się z podstawowej funkcjonalności i architektury Map-Reduce zbiorowo i osobno. Formacja wartości pośredniej odgrywa ważną rolę w tym celu. Aby uzyskać ograniczoną wartość, ilekroć chcesz zarządzać dużymi zbiorami danych, musisz użyć funkcji „MapReduce” w programie. Czytanie tego artykułu będzie źródłem pełnych informacji dotyczących funkcji „MapReduce”.