Я считаю, вы можете сделать это с помощью hadoop streaming
.
Согласно tom white
, автор hadoop definitive guide, 3rd edition
. Страница # 622
, Приложение C.
Он использовал hadoop
для выполнения сценария bash shell
как mapper
.
В вашем случае вам необходимо использовать perl script
вместо этого bash shell script
.
Использование: Он имеет lot of small files
(один большой вход деготь файл), его сценарий оболочки, преобразует их в few big files
(один большой выходной файл гудрон).
Он использовал hadoop для обработки их параллельно, указав bash shell script
в качестве картографа. Поэтому этот картограф работает с входными файлами параллельно и дает результаты.
пример команды Hadoop: (копия вставили)
hadoop jar $HADOOP_INSTALL/contrib/streaming/hadoop-*-streaming.jar \
-D mapred.reduce.tasks=0 \
-D mapred.map.tasks.speculative.execution=false \
-D mapred.task.timeout=12000000 \
-input ncdc_files.txt \
-inputformat org.apache.hadoop.mapred.lib.NLineInputFormat \
-output output \
-mapper load_ncdc_map.sh \
-file load_ncdc_map.sh
Заменить load_ncdc_map.sh
с xyz.perl
в обоих местах (последние 2 строки в команде).
Заменить ncdc_files.txt
с другой текстовый файл, который содержит список входных файлов, подлежащих обработке (5-й линии от дна)
Предположения Выпущено:. У вас есть полностью функциональный ход Hadoop кластера и ваш Perl скрипт ошибка бесплатная.
Пожалуйста, попробуйте и дайте мне знать.
Так что я не хочу писать карту java-программы для сокращения? Дело в том, что это непрерывный процесс. Нам нужно выполнить 4 или 5 скриптов. Для каждого скрипта вход будет результатом предыдущего скрипта. Это все последовательная и пакетная обработка. – learner
@learner, Да - вам не нужно писать новую программу MR. Вы можете повторно использовать описанный выше запрос hadoop с вашими изменениями. Я предлагаю написать нового родителя.perl, которая не содержит ничего, кроме ваших 4-5 child-sequential.perl программ. Поэтому вы можете предоставить программе parent.perl как mapper для hadoop, hasoop будет запускать эту программу perl на данных узлах как отдельную программу в этой системе. Пожалуйста, попробуйте и дайте мне знать. –
Спасибо :) sure :) – learner