Hadoop начинающих вопрос - PullRequest
6 голосов
/ 20 марта 2010

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

  • Мы используем Oracle для бэкэнда
  • Java (Struts2 / Servlets / iBatis) для внешнего интерфейса
  • Ночью мы получаем данные, которые необходимо суммировать. это выполняется как пакетный процесс (занимает 5 часов)

Мы ищем способ сократить эти 5 часов до более короткого времени.

Где hadoop вписался бы в эту картину? Можем ли мы продолжать использовать Oracle даже после hadoop?

Ответы [ 3 ]

4 голосов
/ 22 марта 2010

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

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

Если вам нужен какой-то конкретный совет о том, как настроить пакетный запрос, это будет новый вопрос.

2 голосов
/ 20 марта 2010

Hadoop предназначен для распараллеливания работы на нескольких машинах. Чтобы определить, будет ли это хорошим кандидатом для вашей установки, задайте себе следующие вопросы:

  • У меня есть много машин, на которых я могу запустить Hadoop, или я готов потратить деньги на что-то вроде EC2?

  • Может ли моя работа распараллеливаться? (Если ваш 5-часовой пакетный процесс состоит из 30 10-минутных задач, которые должны выполняться последовательно, Hadoop вам не поможет).

  • Требуется ли для моих данных произвольный доступ? (Это на самом деле довольно важно - Hadoop хорош в последовательном доступе и ужасен в произвольном доступе. В последнем случае вы не увидите достаточного ускорения, чтобы оправдать дополнительную работу / затраты).

Что касается того, где он "вписывается" - вы даете Hadoop кучу данных, и она возвращает вам результат. Один из способов думать об этом, как гигантский процесс Unix - данные поступают, данные выходят. То, что вы делаете с этим, это ваше дело. (Это, конечно, слишком упрощенное представление, но вы поняли идею.) Так что да, вы все равно сможете записывать данные в базу данных Oracle.

0 голосов
/ 20 марта 2010

Распределенная файловая система Hadoop поддерживает высокопараллельную пакетную обработку данных с использованием MapReduce.

Итак, ваш текущий процесс занимает 5 часов для обобщения данных. Общие задачи суммирования являются одним из «типов» заданий, в которых MapReduce превосходит другие. Однако вам необходимо понимать, будут ли ваши требования к обработке преобразовываться в задание MapReduce. Под этим я подразумеваю, можете ли вы получить необходимые сводки, используя пары ключ / значение, которые MapReduce ограничивает в использовании?

Для работы Hadoop требуется кластер машин. У вас есть оборудование для поддержки кластера? Обычно это зависит от того, сколько данных вы храните в HDFS, а также от скорости обработки данных. Обычно при запуске MapReduce на Hadoop, чем больше у вас компьютеров, тем больше данных вы можете сохранить или тем быстрее вы выполняете задание. Представление о количестве данных, которые вы обрабатываете каждую ночь, очень помогло бы здесь?

Вы все еще можете использовать Oracle. Вы можете использовать Hadoop / MapReduce для обработки данных, а затем использовать собственный код для вставки сводных данных в базу данных оракула. ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...