перенос вычисления в облако - PullRequest
1 голос
/ 26 октября 2011

Существует ли какой-либо автоматический инструмент для преобразования устаревших однопроцессорных программ в облако, что означает, что целевая программа готова к выполнению в облаке (например, программы, написанные для Hadoop)? Если нет, каковы лучшие практики при выполнении таких преобразований (возможно, полное переписывание) вручную? Кроме того, как я могу узнать / оценить, подходит ли устаревшая программа (или задача программирования) для вычислений?

Пример: предположим, что у меня есть программа WordCount, написанная исключительно со стандартной библиотекой Java (например, HashMap), как я могу преобразовать ее в программу, написанную с помощью Hadoop, аналогичную той, которая представлена ​​в примере кода распределения Hadoop?

Ответы [ 3 ]

1 голос
/ 26 октября 2011

Существует ли какой-либо автоматический инструмент для преобразования устаревших однопроцессорных программ в облако?

Я не думаю, что существует автоматический инструмент, который может преобразовать устаревшую однопроцессорную программу в облако.

Если унаследованная программа написана с использованием парадигмы MapReduce, то ее будет несколько легко запустить в облаке с использованием Hadoop с некоторыми изменениями. Если нет, то проблема должна быть продумана с помощью MapReduce и переписана для Hadoop с использованием Java или другого языка, который поддерживает чтение / запись в STDIN / STDOUT.

Кроме того, если язык, на котором была написана старая программа, может читать / записывать в STDIN / STDOUT, тогда вы можете использовать Потоковая передача Hadoop .

Кроме того, как я могу узнать / оценить, подходит ли устаревшая программа (или задача программирования) для вычислений?

Если обработка может происходить параллельно независимо и данные также могут быть распределены по нескольким машинам, тогда это может быть подходящим кандидатом для Hadoop.

HDFS (распределенная файловая система Hadoop) разработана с высокой задержкой и высокой пропускной способностью. Если требование для низкой задержки, то вы можете рассмотреть HBase.

Кроме того, HDFS предназначена для больших файлов (ГБ, ТБ и ПБ). Если в устаревшем приложении слишком много маленьких файлов, то следует рассмотреть альтернативный подход .

Еще несколько вещей, которые нужно учитывать.

Hadoop запускается прямо из коробки с некоторыми минимальными изменениями конфигурации, но для его эффективной работы необходимо настроить множество параметров, а иногда требуется получить прямой доступ к коду.

Также попробуйте POC и начните с чего-нибудь небольшого, чтобы решить проблемную область и оценить плюсы и минусы.

Предлагаем купить 'Hadoop: Полное руководство' книга.

0 голосов
/ 26 октября 2011

Многие люди ищут магические инструменты для преобразования программ, реализованных с использованием методов последовательных вычислений, в высокопараллельные.

В основном это не работает, так как параллелизм нелегко найти в коде: а) потому что его нет или б) потому что анализ, необходимый для его просмотра, выходит за рамки нынешней технологииинструменты.

Если параллелизм может быть найден инструментом или просто помечен как присутствующий программистом (например, «аннотации», «директивы», см. OpenMP), существуют инструменты, которые могут автоматически вставлять директивы параллелизма.

Эти инструменты в основном находятся в пространстве Фортрана (для поддержки задач суперкомпьютера).Есть несколько инструментов исследования для Java;Многие университеты делают «Java» + «Параллелизм», потому что это горячая тема в «крутом» [имеется в виду «доступный»] язык.Я сомневаюсь, что вы найдете инструмент, который действительно работает для университета для этого;они только делают демонстрации.

Я полагаю, вы застряли, и вам придется сделать это самостоятельно.

0 голосов
/ 26 октября 2011

Как и любое параллельное приложение, оно должно иметь возможность выполнять несколько независимых действий одновременно.Если вы хотите, чтобы это было быстрее, вы экономите время больше, чем затраты на распространение приложения.

В примере с подсчетом слов ваше узкое место похоже на то, как быстро он может прочитать файл с диска.Для эффективного распределения количества слов у вас должны быть копии файла (или части файла) на каждом компьютере.Конечно, это может занять гораздо больше времени, чем экономит.

Однако, допустим, что доступ к файлам не является вашим узким местом, вы можете разбить файл (ы) на части, чтобы каждый поток или узел мог считать слова в этой части изатем суммируйте результаты, чтобы получить итог.

...