Hadoop Streaming: Писане на програма Hadoop MapReduce в Python



Тази публикация в блога на Hadoop Streaming е ръководство стъпка по стъпка, за да се научите да пишете програма Hadoop MapReduce в Python за обработка на огромни количества големи данни.

Количеството цифрови данни, генерирани всеки ден, нараства експоненциално с появата на Digital Media, Internet of Things, наред с други разработки. Този сценарий породи предизвикателства при създаването на инструменти и технологии от следващо поколение за съхраняване и манипулиране на тези данни. Тук идва Hadoop Streaming! По-долу е дадена графика, която изобразява растежа на данните, генерирани ежегодно в света от 2013 г. IDC изчислява, че количеството данни, създавани годишно, ще достигне 180 Zettabytes през 2025 г.

data-by-2025-hadoop-streaming





Източник: IDC

IBM заявява, че всеки ден се създават почти 2,5 квинтилиона байта данни, като 90 процента от световните данни са създадени през последните две години! Предизвикателна задача е да съхранявате толкова голямо количество данни. Hadoop може да обработва големи обеми от структурирани и неструктурирани данни по-ефективно от традиционната корпоративна база данни. Той съхранява тези огромни набори от данни в разпределени клъстери от компютри. Hadoop Streaming използва рамката MapReduce, която може да се използва за писане на приложения за обработка на огромни количества данни.



Тъй като рамката MapReduce се основава на Java, може да се чудите как разработчик може да работи върху нея, ако няма опит в Java. Е, разработчиците могат да напишат приложението mapper / Reducer, използвайки предпочитания от тях език и без да познават много Java, използвайки Hadoop Streaming вместо да преминете към нови инструменти или технологии като Pig и Hive.

ключова дума рамка в селен

Какво представлява Hadoop Streaming?

Hadoop Streaming е помощна програма, която идва с разпространението на Hadoop. Може да се използва за изпълнение на програми за анализ на големи данни. Стриймингът на Hadoop може да се извършва с помощта на езици като Python, Java, PHP, Scala, Perl, UNIX и много други. Помощната програма ни позволява да създаваме и изпълняваме Map / Reduce задачи с всеки изпълним файл или скрипт като mapper и / или редуктора. Например:

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



-input myInputDirs

-output myOutputDir

-папка / кош / котка

-редуктор / кош / wc

Параметри Описание:

Код на Python MapReduce:

mapper.py #! / usr / bin / python import sys #Word Count Пример # входът идва от стандартен вход STDIN за ред в sys.stdin: line = line.strip () #remove водещи и последващи бели пространства words = line.split ( ) # разделя реда на думи и се връща като списък за дума в думи: # напишете резултатите на стандартен изход STDOUT print '% s% s'% (word, 1) # Изпуснете думата

редуктор.py

#! / usr / bin / python импортиране на sys от оператор импортиране itemgetter # с помощта на речник за съпоставяне на думи с броя им current_word = Няма current_count = 0 дума = Няма # входът идва от STDIN за ред в sys.stdin: line = line.strip () дума, брой = линия.split ('', 1) опитайте: count = int (count) с изключение на ValueError: продължете, ако current_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)

Изпълнение:

  1. Създайте файл със следното съдържание и го кръстете word.txt.

Котка мишка лъв елен Тигър лъв Слон лъв елен

  1. Копирайте скриптовете mapper.py и reducer.py в същата папка, където съществува горният файл.

  1. Отворете терминала и намерете директорията на файла. Команда: ls: за изброяване на всички файлове в директорията cd: за промяна на директория / папка

  1. Вижте съдържанието на файла.
    Команда: котка име на файл

> съдържание на mapper.py

какво е разработчик на блокчейн

команда: cat mapper.py

> Съдържание на reducer.py

команда: котка редуктор.py

Можем да стартираме mapper и reducer на локални файлове (напр. Word.txt). За да стартираме Map и да намалим в Hadoop Distributed File System (HDFS), ние се нуждаем от Hadoop Streaming буркан. Така че, преди да стартираме скриптовете на HDFS, нека ги стартираме локално, за да сме сигурни, че работят добре.

> Стартирайте картографа

команда: котка word.txt | python mapper.py

> Стартирайте reducer.py

команда: котка word.txt | python mapper.py | сортиране -k1,1 | python редуктор.py

Виждаме, че картографът и редукторът работят както се очаква, така че няма да се сблъскваме с допълнителни проблеми.

Стартиране на Код на Python на Hadoop

Преди да стартираме задачата MapReduce на Hadoop, копирайте локални данни (word.txt) в HDFS

> пример: hdfs dfs -put източник_директория hadoop_destination_directory

команда: hdfs dfs -put /home/edureka/MapReduce/word.txt / потребител / edureka

Копирайте пътя на файла на jar

Пътят на Hadoop Streaming jar, базиран на версията на jar, е:

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

Така че намерете бурканчето Hadoop Streaming на вашия терминал и копирайте пътя.

команда:

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

Изпълнете заданието MapReduce

команда:

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 / reducer.py -reducer reducer.py -input / user / edureka / word -output / user / edureka / Wordcount

Hadoop предоставя основен уеб интерфейс за статистика и информация. Когато клъстерът Hadoop работи, отворете http: // localhost: 50070 в браузъра. Ето екранната снимка на уеб интерфейса на Hadoop.

Сега прегледайте файловата система и намерете генерирания wordcount файл, за да видите изхода. По-долу е екранната снимка.

Можем да видим изхода на терминала с помощта на тази команда

команда: hadoop fs -cat / user / edureka / Wordcount / part-00000

Вече научихте как да изпълнявате програма MapReduce, написана на Python, използвайки Hadoop Streaming!

какво прави форматът в python

Edureka има курс на живо и ръководен от инструктори по Big Data & Hadoop, създаден съвместно от специалисти в бранша.

Имате въпрос към нас? Моля, споменете го в раздела за коментари и ние ще се свържем с вас.