Przesyłanie strumieniowe Hadoop: pisanie programu Hadoop MapReduce w języku Python



Ten wpis na blogu dotyczący przesyłania strumieniowego Hadoop jest przewodnikiem krok po kroku, jak nauczyć się pisać program Hadoop MapReduce w języku Python do przetwarzania ogromnych ilości danych Big Data.

Ilość danych cyfrowych generowanych każdego dnia rośnie wykładniczo wraz z pojawieniem się mediów cyfrowych, między innymi Internetu przedmiotów. Ten scenariusz zrodził wyzwania w tworzeniu narzędzi i technologii nowej generacji do przechowywania i manipulowania tymi danymi. W tym miejscu pojawia się strumieniowanie Hadoop! Poniżej znajduje się wykres, który przedstawia wzrost ilości danych generowanych corocznie na świecie od 2013 roku. IDC szacuje, że ilość tworzonych rocznie danych osiągnie 180 Zettabajtów w 2025 roku!

przekonwertować double na integer w java

data-by-2025-hadoop-streaming





Źródło: IDC

IBM twierdzi, że każdego dnia tworzonych jest prawie 2,5 tryliona bajtów danych, z czego 90 procent światowych danych powstaje w ciągu ostatnich dwóch lat! Przechowywanie tak dużej ilości danych jest trudnym zadaniem. Hadoop może wydajniej obsługiwać duże ilości ustrukturyzowanych i nieustrukturyzowanych danych niż tradycyjna hurtownia danych przedsiębiorstwa. Przechowuje te ogromne zbiory danych w rozproszonych klastrach komputerów. Przesyłanie strumieniowe Hadoop korzysta z platformy MapReduce, której można używać do pisania aplikacji do przetwarzania ogromnych ilości danych.



Ponieważ framework MapReduce jest oparty na Javie, możesz się zastanawiać, jak programista może nad nim pracować, jeśli nie ma doświadczenia w Javie. Cóż, programiści mogą pisać aplikacje mapper / Reducer w preferowanym języku i bez dużej znajomości języka Java, używając Przesyłanie strumieniowe Hadoop zamiast przechodzić na nowe narzędzia lub technologie, takie jak Pig i Hive.

Co to jest przesyłanie strumieniowe Hadoop?

Hadoop Streaming to narzędzie dostarczane z dystrybucją Hadoop. Może być używany do wykonywania programów do analizy dużych zbiorów danych. Przesyłanie strumieniowe Hadoop można wykonywać przy użyciu języków takich jak Python, Java, PHP, Scala, Perl, UNIX i wielu innych. Narzędzie to pozwala nam tworzyć i uruchamiać zadania Map / Reduce z dowolnym plikiem wykonywalnym lub skryptem jako maperem i / lub reduktorem. Na przykład:

$ HADOOP_HOME / bin / hadoop jar $ HADOOP_HOME / hadoop-streaming.jar



-input myInputDirs

-output myOutputDir

-folder / bin / cat

-reducer / bin / wc

Opis parametrów:

Kod MapReduce w Pythonie:

mapper.py #! / usr / bin / python import sys #Word Count Przykład # wejście pochodzi ze standardowego wejścia STDIN dla linii w sys.stdin: line = line.strip () # usuń początkowe i końcowe białe spacje wyrazy = line.split ( ) # podziel linię na słowa i wróć jako listę słów w słowach: # wypisz wyniki na standardowe wyjście STDOUT print '% s% s'% (słowo, 1) #Wprowadź słowo

reduktor.py

#! / usr / bin / python import sys from operator import itemgetter # używanie słownika do mapowania słów do ich liczby current_word = None current_count = 0 word = None # dane wejściowe pochodzą z STDIN dla linii w sys.stdin: line = line.strip () word, count = line.split ('', 1) try: count = int (count) oprócz ValueError: kontynuuj if current_word == word: current_count + = count else: if current_word: print '% s% s'% (current_word, current_count) current_count = count current_word = word if current_word == word: print '% s% s'% (current_word, current_count)

Biegać:

  1. Utwórz plik z następującą zawartością i nazwij go word.txt.

Kot mysz lew jeleń Tygrys lew Słoń lew jeleń

  1. Skopiuj skrypty mapper.py i reductioner.py do tego samego folderu, w którym istnieje powyższy plik.

  1. Otwórz terminal i znajdź katalog z plikiem Polecenie: ls: aby wyświetlić listę wszystkich plików w directycd: aby zmienić katalog / folder

  1. Zobacz zawartość pliku.
    Polecenie: cat Nazwa pliku

> zawartość mapper.py

polecenie: cat mapper.py

> Zawartość reduktora.py

polecenie: cat reduktor.py

Możemy uruchomić mapper i reduktor na plikach lokalnych (np. Word.txt). Aby uruchomić Mapę i zmniejszyć w rozproszonym systemie plików Hadoop (HDFS), potrzebujemy Jar do przesyłania strumieniowego Hadoop. Dlatego zanim uruchomimy skrypty na HDFS, uruchommy je lokalnie, aby upewnić się, że działają dobrze.

> Uruchom program mapujący

Komenda: cat word.txt | python mapper.py

> Uruchom reduktor.py

Komenda: cat word.txt | python mapper.py | sort -k1,1 | python reductioner.py

Widzimy, że program mapujący i reduktor działają zgodnie z oczekiwaniami, więc nie będziemy mieć żadnych dalszych problemów.

Uruchamianie Kod Pythona na platformie Hadoop

Zanim uruchomimy zadanie MapReduce na Hadoop, skopiuj dane lokalne (word.txt) do HDFS

różnica między C # i C ++

> przykład: hdfs dfs -put katalog_źródłowy hadoop_destination_directory

Komenda: hdfs dfs -put /home/edureka/MapReduce/word.txt / user / edureka

Skopiuj ścieżkę do pliku jar

Ścieżka słoika Hadoop Streaming opartego na wersji jar to:

/usr/lib/hadoop-2.2.X/share/hadoop/tools/lib/hadoop-streaming-2.2.X.jar

Więc znajdź jar Hadoop Streaming na swoim terminalu i skopiuj ścieżkę.

Komenda:

ls /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar

Uruchom zadanie MapReduce

Komenda:

hadoop jar /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar -file /home/edureka/mapper.py -mapper mapper.py -file / home / edureka / reduktor.py -reducer reduktor.py -input / user / edureka / word -output / user / edureka / Wordcount

Hadoop zapewnia podstawowy interfejs sieciowy do statystyk i informacji. Gdy klaster Hadoop jest uruchomiony, otwórz w przeglądarce adres http: // localhost: 50070. Oto zrzut ekranu interfejsu internetowego Hadoop.

Teraz przejrzyj system plików i znajdź wygenerowany plik wordcount, aby zobaczyć wynik. Poniżej zrzut ekranu.

Samouczek projektowania interfejsu użytkownika w Android Studio

Możemy zobaczyć dane wyjściowe na terminalu za pomocą tego polecenia

Komenda: hadoop fs -cat / user / edureka / Wordcount / part-00000

Dowiedziałeś się teraz, jak wykonać program MapReduce napisany w Pythonie przy użyciu przesyłania strumieniowego Hadoop!

Edureka prowadzi kurs na żywo i prowadzony przez instruktora na temat Big Data i Hadoop, współtworzony przez praktyków z branży.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy, a my skontaktujemy się z Tobą.