Перенести данные из Oracle в HDFS, обработать и переместить в Teradata из HDFS

Мое требование -

  1. Перенести данные из Oracle в HDFS
  2. Обработка данных на HDFS
  3. Перенести обработанные данные в Teradata.

Также необходимо проделывать всю эту обработку каждые 15 минут. Объем исходных данных может быть близок к 50 ГБ, и обработанные данные также могут быть такими же.

После долгих поисков в Интернете я обнаружил, что

  1. ORAOOP для перемещения данных из Oracle в HDFS (имейте код вместе со сценарием оболочки и запланируйте его запуск с требуемым интервалом).
  2. Выполняйте крупномасштабную обработку с помощью Custom MapReduce, Hive или PIG.
  3. SQOOP - Коннектор Teradata для перемещения данных из HDFS в Teradata (опять же, есть сценарий оболочки с кодом, а затем запланировать его).

Правильно ли это в первую очередь и возможно ли это в течение требуемого периода времени (обратите внимание, что это не ежедневная партия или около того)?

Другие варианты, которые я нашел, следующие

  1. ШТОРМ (для обработки данных в реальном времени). Но я не могу найти из коробки болт Oracle Spout или Teradata.
  2. Любые инструменты ETL с открытым исходным кодом, такие как Talend или Pentaho.

Пожалуйста, поделитесь своими мыслями об этих вариантах и ​​любых других возможностях.


person Manikandan Kannan    schedule 03.06.2013    source источник
comment
Извините, это была опечатка. Фактически это 50 ГБ.   -  person Manikandan Kannan    schedule 03.06.2013
comment
Storm может сработать для этого, но, как вы уже поняли, готовых изливов и болтов для того, что вам нужно, нет, поэтому вам придется создать их самостоятельно. Тем не менее, если вы обнаружите, что не можете заставить свое решение двигаться достаточно быстро, вы можете подумать об использовании Storm для обработки данных, поскольку он имеет меньшие накладные расходы после запуска и работы, чем при использовании hadoop.   -  person G Gordon Worley III    schedule 04.06.2013


Ответы (2)


Похоже, у вас есть несколько вопросов, поэтому давайте попробуем разобраться в них.

Импорт в HDFS

Похоже, вы ищете Sqoop. Sqoop - это инструмент, который позволяет легко переносить данные в / из HDFS и может напрямую подключаться к различным базам данных, включая Oracle. Sqoop совместим с тонким драйвером Oracle JDBC. Вот как бы вы перешли из Oracle в HDFS:

sqoop import --connect jdbc:oracle:thin@myhost:1521/db --username xxx --password yyy --table tbl --target-dir /path/to/dir

Для получения дополнительной информации: здесь и здесь. Обратите внимание, что вы также можете импортировать прямо в таблицу Hive с помощью Sqoop, что может быть удобно для анализа.

Обработка

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

Поскольку вы можете импортировать данные в Hive напрямую с помощью Sqoop, ваши данные должны быть готовы к обработке сразу после импорта.

В Hive вы можете запустить свой запрос и указать ему записывать результаты в HDFS:

hive -e "insert overwrite directory '/path/to/output' select * from mytable ..."

Экспорт в TeraData

В прошлом году Cloudera выпустила коннектор для Teradata для Sqoop, как описано здесь, так что вы должны убедиться, что это именно то, что вам нужно. Вот как бы вы это сделали:

sqoop export --connect jdbc:teradata://localhost/DATABASE=MY_BASE --username sqooptest --password xxxxx --table MY_DATA --export-dir /path/to/hive/output

Все это определенно выполнимо в любой период времени, который вы хотите, в конце концов, будет иметь значение размер вашего кластера, если вы хотите, чтобы это было быстро, масштабируйте свой кластер по мере необходимости. Хорошая вещь с Hive и Sqoop заключается в том, что обработка будет распределена в вашем кластере, поэтому вы полностью контролируете расписание.

person Charles Menguy    schedule 03.06.2013
comment
Спасибо, Чарльз. Еще один вопрос по обработке, что делать, если обработка имеет сложные преобразования и поток? Имеет ли смысл помещать сюда Таленд или Пентахо? - person Manikandan Kannan; 03.06.2013

Если вас беспокоят накладные расходы или задержка при перемещении данных из Oracle в HDFS, возможным коммерческим решением может быть SharePlex от Dell Software. Недавно они выпустили коннектор для Hadoop, который позволит реплицировать табличные данные из Oracle в Hadoop. Дополнительная информация здесь.

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

Напоминаю, что я работаю в Dell Software.

person user2711581    schedule 23.08.2013