Friday, 16 August 2013

Пост 14. Hadoop на службе банка.

Доброго времени суток!
Не так давно я столкнулся с одним интересным кейсом в одном из банком.
У банка были данные, весьма интересного формата - набор файлов по несколько сотен мегабайт каждый без единого переноса строки, колонки разделены по фиксированному смещению. Драма ситуации в том, что формат файла постоянно меняется.


Рис 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. Будут вопросы - задавайте, с удовольствием отвечу!

3 comments:

  1. "MapReduce програма читала исходные файлы и по конфигу преобразовывала их в полуструктурированный формат (для простоты изложения пусть это будет JSON)." На Java?

    ReplyDelete
  2. Сколько стоит базавоая конфигурация софта+железо ?

    ReplyDelete
  3. Доброго времени суток!
    1) Да, программа была написана на Java
    2) Ценники можно посмотреть в прайс листе Oracle:
    http://www.oracle.com/us/corporate/pricing/exadata-pricelist-070598.pdf
    Hadoop кластер начинается от 160 000 $ по прайсу.

    ReplyDelete