Возможно ли использовать Map Reduce и Hadoop для параллельного выполнения пакетных заданий? - PullRequest
1 голос
/ 24 июня 2011

Наша организация имеет сотни пакетных заданий, которые выполняются в одночасье.Многие из этих работ требуют 2, 3, 4 часа для завершения;некоторым даже требуется до 7 часов.В настоящее время эти задания выполняются в однопоточном режиме, поэтому наши попытки повысить производительность ограничены вертикальным масштабированием машины с дополнительным ЦП и памятью.

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

Теперь мы рассмотрим платформы Map Reduce, чтобы разбить эти задания на более мелкие части для параллельной обработки.В нашей организации насчитывается более 400 настольных ПК для сотрудников, и мы хотели бы использовать эти компьютеры в нерабочее время в качестве сетки параллельной обработки.

Что нам нужно, чтобы это работало?Является ли Hadoop единственным необходимым компонентом?Нужен ли нам также HBase?Мы немного смущены различными предложениями и нуждались в некоторой помощи.

Спасибо

1 Ответ

1 голос
/ 25 июня 2011

Здесь есть пара вопросов - о MapReduce и об использовании 400 ПК для работы.

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

Давайте сначала рассмотрим идею использования 400 рабочих столов. Это в принципе вполне выполнимо. У него есть свои проблемы - обратите внимание, что, например, если оставить на ночь кучу компьютеров класса настольных компьютеров, то они никогда не будут столь же энергоэффективными, как выделенные узлы кластера. И узлы рабочего стола не так надежны, как узлы кластера - некоторые могут быть отключены, у некоторых могут быть проблемы с сетью, что-то не работает на них, что замедляет работу вычислений. Но есть рамки, которые могут справиться с этим. Тот, с кем я знаком, это Condor , который получил свое название, используя именно такую ​​ситуацию. Он работает на Windows и Linux (и прекрасно работает в смешанных средах) и очень гибок; Вы можете автоматически использовать неиспользуемые машины даже в течение дня.

Вероятно, существуют другие подобные "оппортунистические вычислительные" системы, и, возможно, другие могут их предложить. Вы могли бы также использовать другие решения для кластеризации и использовать традиционную систему очередей для выполнения ваших заданий (sge, stone и т. Д.), Но большинство из них предполагают, что машины всегда принадлежат им.

Что касается MapReduce, если большая часть ваших вычислений действительно имеет форму (независимого доступа к БД) & rarr; (независимые вычисления) & rarr; (поместите независимую строку во 2-ю БД), я думаю, что MapReduce может быть даже излишним для того, что вы хотите. Вероятно, вы могли бы написать сценарий для разделения работы на отдельные задачи и запуска их по отдельности, не занимая при этом всю систему MapReduce и связанную с ней очень специфическую файловую систему. Но если вы хотите, вы можете запустить mapreduce поверх некоторой системы типов планирования / управления ресурсами, такой как condor. Hadoop на вершине кондора имеет долгую историю .

...