Доброго времени суток!
Не так давно я столкнулся с одним интересным кейсом в одном из банком.
У банка были данные, весьма интересного формата - набор файлов по несколько сотен мегабайт каждый без единого переноса строки, колонки разделены по фиксированному смещению. Драма ситуации в том, что формат файла постоянно меняется.
Рис 1. Формат входных файлов
Что требовалось? Распарсить файл взять из 700 колонок 50, загрузить их в СУБД, доступ к которой имел ряд аналитиков. Традиционными средствами эта задача могла бы быть решена следующим образом:
Рис 2. Решение задачи традиционными средствами.
Да, еще я совсем забыл упомянуть, что размер исходных фалов (множества) - несколько терабайт. Ну и конечно же аппетиты аналитиков постоянно росли и они хотели все новые и новые колонки в свою аналитическую тулзовину и конечно же хотели ретроспективу по новым величинам, которые находились в уже разобранных и удаленных файлах.
Коллабс... Тут на помощь пришел Hadoop.
Была придумана следующая схема:
Рис 3. Схема преобразования данных
Были взяты 2 оракловые железки Big Data Appliance (Hadoop Cluster на 18 серверов) и ExaData (high performance СУБД Oracle).
1) MapReduce програма читала исходные файлы и по конфигу преобразовывала их в полуструктурированный формат (для простоты изложения пусть это будет JSON).
2) Над полуструктурированным форматом создавалась таблица HIVE. Выполнялся агрегационный запрос, который преподготавливал некую витрину данных, которая загружалась потом в Oracle (с помощью Oracle Loader for Hadoop).
Если аналитики хотели произвольных (ad-hoc запросов, они могли напрямую обратиться к hive, где в их распоряжении были все 700 колонок)
Так банк построил свое маленькое счастье с помощью Hadoop. Будут вопросы - задавайте, с удовольствием отвечу!
"MapReduce програма читала исходные файлы и по конфигу преобразовывала их в полуструктурированный формат (для простоты изложения пусть это будет JSON)." На Java?
ReplyDeleteСколько стоит базавоая конфигурация софта+железо ?
ReplyDeleteДоброго времени суток!
ReplyDelete1) Да, программа была написана на Java
2) Ценники можно посмотреть в прайс листе Oracle:
http://www.oracle.com/us/corporate/pricing/exadata-pricelist-070598.pdf
Hadoop кластер начинается от 160 000 $ по прайсу.