Как использовать клиент Ruby CLI для запуска JobFlow на основе описания JSON JobFlow в Amazon Elastic MapReduce - PullRequest
0 голосов
/ 31 октября 2010

Я написал приложение mapreduce для hadoop и протестировал его в командной строке на одном компьютере. Мое приложение использует два шага Map1 -> Reduce1 -> Map2 -> Reduce2 Чтобы запустить это задание на aws mapreduce, я перехожу по этой ссылке http://aws.amazon.com/articles/2294. Но мне не ясно, как использовать клиент Ruby CLI, предоставляемый amazon, для выполнения всей описанной работы. Пожалуйста, руководство.

Спасибо.

1 Ответ

0 голосов
/ 26 февраля 2011

Вы начинаете с создания потокового задания по умолчанию (которое запускает пример wordcount). На этом этапе вы используете идентификатор потока работ для добавления других ваших шагов. В моем примере первое задание mapreduce сохраняет результаты в S3-контейнере. Этот результат затем становится входом для второй работы. Если вы войдете в консоль AWS, вы увидите их на вкладке Шаги .

Вы можете продолжать цепочку заданий таким образом, поскольку флаг - в реальном времени гарантирует, что кластер не отключится, пока вы не завершите его вручную. Просто не забудьте сделать это, когда последний шаг будет завершен (рабочий процесс вернется в состояние ОЖИДАНИЯ), в противном случае вы будете платить за простой.

$ elastic-mapreduce --create --alive --stream --num-instances=1 --master-instance-type=m1.small

Created job flow j-NXXXJARJARSXXX
$ elastic-mapreduce -j j-NXXXJARJARSXXX --stream \
 --input   s3n://mybucket.data/2011/01/01/* \
 --output  s3n://mybucket.joblog/step1done-2011-01-01 \
 --mapper  s3n://mybucket.code/map.rb \
 --reducer s3n://mybucket.code/reduce.rb

Added jobflow steps
$ elastic-mapreduce -j j-NXXXJAJARSXXX --stream \
 --input   s3n://mybucket.joblog/step1done-2011-01-01/part-*  \
 --output  s3n://mybucket.joblog/job-results \
 --mapper  s3n://mybucket.code/map.rb \
 --reducer s3n://mybucket.code/reduce.rb

Added jobflow steps
...