Я прочитал некоторую документацию о hadoop и видел впечатляющие результаты. Я получаю большее изображение, но трудно, соответствовало ли оно нашей установке. Вопрос не программирует связанный, но я стремлюсь получить мнение людей, которые в настоящее время работают с hadoop и как это соответствовало бы нашей установке:
Мы ищем способ сократить те 5 часов к более короткому времени.
Где hadoop вписался бы в это изображение? Мы можем все еще продолжить использовать Oracle даже после hadoop?
Есть шанс, что вы сможете значительно сократить время выполнения этого пакетного процесса с помощью некоторых простых настроек. Я предлагаю этот анализ на основе простого прошлого опыта. Пакетные процессы, как правило, написаны очень плохо, именно потому, что они автономны, и поэтому у них нет раздраженных пользователей, требующих лучшего времени отклика.
Конечно, я не думаю, что имеет смысл тратить много времени и энергии на переделку нашего приложения в новую технологию - какой бы свежей и крутой она ни была - пока мы не исчерпали возможности нашей текущей архитектуры.
Если вам нужен конкретный совет по настройке пакетного запроса, то это уже другой вопрос.
Hadoop предназначен для распараллеливания задания на нескольких машинах. Чтобы определить, будет ли он подходящим кандидатом для вашей установки, задайте себе следующие вопросы:
Есть ли у меня много машин, на которых я могу запускать Hadoop, или я готов потратить деньги на что-то вроде EC2?
Мой работа распараллеливается? (Если ваш 5-часовой пакетный процесс состоит из 30 10-минутных задач, которые должны выполняться последовательно, Hadoop вам не поможет).
Требуется ли произвольный доступ к моим данным? (На самом деле это очень важно - Hadoop хорош при последовательном доступе и ужасен при произвольном. В последнем случае вы не увидите достаточного ускорения, чтобы оправдать дополнительную работу / стоимость).
Насколько он «подходит» - вы передаете Hadoop кучу данных, а он возвращает вам результат. Можно думать об этом как о гигантском процессе Unix: данные входят, данные выходят. То, что вы с ним делаете, - ваше дело. (Это, конечно, слишком упрощенное представление, но вы уловили идею.) Так что да, вы все равно сможете записывать данные в свою базу данных Oracle.
Распределенная файловая система Hadoop поддерживает высокопараллельную пакетную обработку данных с помощью MapReduce.
Итак, ваш текущий процесс занимает 5 часов для обобщения данных. Из всего этого следует, что задачи общего обобщения являются одним из "типов" заданий, с которыми MapReduce справляется лучше всего. Однако вам необходимо понять, насколько ваши требования к обработке данных будут соответствовать заданию MapReduce. Под этим я подразумеваю, сможете ли вы получить нужные вам сводки, используя пары ключ/значение, которыми ограничивается MapReduce?
Для работы Hadoop требуется кластер машин. Есть ли у вас оборудование для поддержки кластера? Обычно это зависит от того, сколько данных вы храните в HDFS, а также от того, как быстро вы хотите обрабатывать данные. Обычно при выполнении MapReduce на Hadoop чем больше у вас машин, тем больше данных вы можете хранить или тем быстрее вы выполняете задание. Здесь очень поможет представление о том, какой объем данных вы обрабатываете каждую ночь?
Вы все еще можете использовать Oracle. Вы можете использовать Hadoop/MapReduce для обработки данных, а затем использовать пользовательский код для вставки итоговых данных в БД Oracle.