Статьи

Выполнение задания PageRank Hadoop в AWS Elastic MapReduce

AWS-ЭМИ В предыдущем посте я описал пример вычисления PageRank, который является частью курса Mining Massive Dataset с Apache Hadoop . В этом посте я взял существующее задание Hadoop на Java и несколько изменил его (добавил модульные тесты и сделал пути к файлам заданными параметром). В этом посте показано, как использовать эту работу в реальном кластере Hadoop. Кластер представляет собой кластер AWS EMR с 1 главным узлом и 5 основными узлами , каждый из которых поддерживается экземпляром m3.xlarge .

Первым шагом является подготовка входных данных для кластера. Я использую AWS S3, так как это удобный способ работы с EMR. Я создал новое ведро ’emr-pagerank-demo’ и создал следующие подпапки:

  • в: папка, содержащая входные файлы для работы
  • job: папка, содержащая мой исполняемый файл Jad Hadoop
  • log: папка, в которую EMR будет помещать свои файлы журналов

Затем в папке «in» я скопировал данные, которые я хочу оценить. Я использовал этот файл в качестве ввода. Разархивированный файл стал файлом размером 5 ГБ с содержимым XML, хотя он и не очень большой, но для демонстрации этого достаточно. Когда вы возьмете исходники предыдущего поста и запустите mvn clean install, вы получите файл jar: ‘hadoop-wiki-pageranking-0.2-SNAPSHOT.jar’. Я загрузил этот jar-файл в папку ‘job’.

Вот и все для подготовки. Теперь мы можем запустить кластер. Для этой демонстрации я использовал Консоль управления AWS :

    • Назовите кластер
    • Введите папку журнала в качестве местоположения журнала

ЭЙ-стр.1

    • Введите количество экземпляров Core

ЭЙ-стр.2

    • Добавьте шаг для нашей банки

ЭЙ-page3

    • Настройте шаг следующим образом:

ЭЙ-Page3 шаг

    • Это должно привести к следующему обзору:

ЭЙ-page3b

Если это правильно, вы можете нажать кнопку «Создать кластер» и заставить EMR выполнять свою работу. Вы можете отслеживать кластер в разделе «Мониторинг» консоли:

ЭЙ-мониторинг

И следите за состоянием шагов в части «Шаги»:

EMR-шаги

Через несколько минут работа будет завершена (в зависимости от размера входных файлов и используемого кластера, конечно). В нашей корзине S3 мы видим, что файлы журналов создаются в папке ‘log’:

ЭЙ-лог-реж

Здесь мы видим в общей сложности 7 заданий: 1 x шаг подготовки Xml, 5 x шаг rankCalculator и 1 x шаг rankOrdering.

И что более важно, мы можем видеть результаты в папке «Result»:

ЭЙ-результат-Dir

Каждый редуктор создает свой собственный файл результатов, поэтому у нас есть несколько файлов здесь. Нас интересует тот, у кого наибольшее количество, поскольку есть страницы с самыми высокими рангами. Если мы посмотрим на этот файл, то увидим следующий результат в топ-10 рейтинга:

01
02
03
04
05
06
07
08
09
10
271.6686    Spaans
274.22974   Romeinse_Rijk
276.7207    1973
285.39502   Rondwormen
291.83002   Decapoda
319.89224   Brussel_(stad)
390.02606   2012
392.08563   Springspinnen
652.5087    2007
2241.2773   Boktorren

Обратите внимание, что текущая реализация выполняет вычисления только 5 раз (жестко запрограммировано), поэтому на самом деле это не итерация мощности, как описано в теории MMDS (хорошая модификация для следующего выпуска программного обеспечения :-)).

Также обратите внимание, что кластер не завершается после завершения задания, когда используются параметры по умолчанию, поэтому затраты на кластер увеличиваются, пока кластер не будет завершен вручную.