Выгрузка неструктурированных данных, сохраненных в СУБД, в Hadoop - PullRequest
0 голосов
/ 23 января 2019

Моя организация думает о переносе неструктурированных данных, таких как текст, изображения и т. Д., Сохраненных как часть таблиц в базе данных Oracle, в Hadoop.Размер БД составляет около 10 ТБ и продолжает расти.Размер столбцов CLOB / BLOB составляет около 3 ТБ. Теперь эти столбцы запрашиваются для отчетов определенного типа через веб-приложение.Они также записываются, но не очень часто.

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

1 Ответ

0 голосов
/ 27 января 2019

Вы можете получить часть ответа в блоге оракула ( ссылка ).

Если данные должны извлекаться в среде HDFS через sqoop, сначала необходимо прочитать следующее из документации sqoop.

Sqoop обрабатывает большие объекты (столбцы BLOB и CLOB) особым образом. Если эти данные действительно большие, то эти столбцы не должны быть полностью материализованы в памяти для манипуляций, как большинство столбцов. Вместо этого их данные обрабатываются потоковым способом. Большие объекты могут храниться в потоке с остальными данными, и в этом случае они полностью материализуются в памяти при каждом доступе, или они могут храниться во вторичном файле хранения, связанном с основным хранилищем данных. По умолчанию крупные объекты размером менее 16 МБ хранятся в строке вместе с остальными данными. В большем размере они хранятся в файлах в подкаталоге _lobs целевого каталога импорта. Эти файлы хранятся в отдельном формате, оптимизированном для большого хранилища записей, которое может вместить записи размером до 2 ^ 63 байт каждый. Размер, при котором объекты разливаются в отдельные файлы, контролируется аргументом --inline-lob-limit, который принимает параметр, задающий наибольший размер объекта для сохранения в строке, в байтах. Если для встроенного лимита большого объекта установлено значение 0, все крупные объекты будут помещены во внешнее хранилище.

Чтение через веб-приложение возможно, если вы используете механизм запросов MPP, такой как Impala, и он работает довольно хорошо и является технологией, готовой к работе. Мы интенсивно используем сложные запросы Impala для рендеринга контента для приложения SpringBoot. Так как Impala запускает все в памяти, существует вероятность замедления или сбоя, если это мультитенантный кластер Cloudera. Для небольших групп пользователей (1000-2000 пользователей) это работает отлично.

Дайте мне знать, если вам нужно больше информации.

Рекомендация будет

  1. Использовать дистрибутив Cloudera ( читать здесь )
  2. Дайте достаточно памяти для Импалы Деймонс
  3. Убедитесь, что YARN настроен правильно для загрузки ETL по расписанию (справедливая доля или приоритетная доля) против нагрузки веб-приложения
  4. При необходимости держите Демонов Импалы подальше от ЯРНЫ
  5. Определение квоты памяти для Impala Memory, чтобы разрешать одновременные запросы
  6. Сгладьте ваши запросы, чтобы Impala работала быстрее без объединений и перемешиваний.
  7. Если вы читаете всего несколько столбцов, сохраняйте их в Паркет, это работает очень быстро.
...