Это правда, с помощью Hadoop и некоторых трюков вы можете делать то же самое, что и DWH.
Однако не имеет смысла заново изобретать колесо, чтобы Hadoop выполнял те же самые функции хранилища данных неэффективным способом. Многие могут сказать, что Hadoop дешевле, чем хранилище данных, с точки зрения аппаратного и программного обеспечения: это правда, есть большая разница, но мы должны учитывать время, затрачиваемое на внедрение такой системы, ноу-хау и необходимые навыки, обслуживание кластера, модернизация сервисов и риск использования незрелых инструментов или инструментов, от которых в будущем можно было бы отказаться.
Реальный аспект выбора между Hadoop и хранилищем данных:
- Тип рабочих нагрузок (чтение против записи, тактика против отчета и т. Д.)
- Тип данных (структурированные или неструктурированные)
- Интеграция данных (схема при чтении или схема при записи)
- Запрос SLA (время выполнения, параллелизм и т. Д.)
- Требуемые навыки (количество ресурсов и ноу-хау, необходимых для реализации)
- Соответствие SQL (интеграция с инструментами)
- Оптимизация (управление рабочей нагрузкой, индексы, хэш-карты и т. Д.)
- Зрелость (безопасность, ошибка и т. Д.)
- Тип анализа (анализ SQL или не SQL)
Гибридная архитектура, созданная в обоих случаях, подходит для многих случаев использования. Я могу сэкономить ресурсы (ЦП, хранилище) из хранилища данных, выгружая исторические данные и обработку ETL в Hadoop, я могу выполнять анализ неструктурированных данных, и в то же время я могу иметь более высокую производительность, интеграцию данных и высокую степень параллелизма, запрашивая «горячие» данные. "данные, хранящиеся в хранилище данных.
Ответ на комментарий:
В зависимости от того, что вы хотите сделать с Hadoop, вы можете заполнить хранилище данных напрямую, поместив необработанные данные в hadoop и выполнить ETL для него, чтобы взимать с хранилища.
Существует много вариантов использования, связанных с интеграцией Hadoop с хранилищем данных, например:
- Озеро данных: все необработанные данные, хранящиеся в Hadoop. Это может дать вам место, где вы можете собирать, уточнять и исследовать исходные необработанные данные и метаданные и, возможно, выполнять агрегирование или ETL для заполнения модели данных в хранилище данных.
- Историзация: вы можете разработать сценарии для разгрузки холодных данных в Hadoop (например, прошлогодние транзакции на DWH и старые транзакции на Hadoop). Вы можете получить доступ к обоим данным через федератор запросов (например, Presto), который может дать вам возможность объединить данные, которые находятся на разных платформах (т.е. сделать UNION ALL между исторической частью таблицы в Hadoop и недавней частью в данных склад)
Если вы хотите использовать Hadoop в качестве озера данных, поток данных будет следующим: источник -> HDFS (очистка) -> хранилище данных
Если вы используете Hadoop только для историзации: источник -> хранилище данных -> HDFS
Федераторы запросов, такие как Presto, открывают множество вариантов использования и дают возможность использовать данные из разных систем в одном запросе. Это открывает возможность иметь холодные данные в Hadoop и горячие данные в хранилище данных ИЛИ возможность иметь «базовые» данные в хранилище данных, а остальные - в Hadoop.