Сервис рекомендаций на виртуальном Hadoop кластере
Вначале был SQL сервис еженедельного построения рекомендаций. Сервис выполнял все действия за 5 часов, в 30% случаев вызывал переполнение tempdb и падение сервиса, давал большую нагрузку на хранилище, не позволяя обновлять OLAP кубы и отчеты.
Для разрешения этой ситуации было решено вынести расчет рекомендаций в отдельный сервис на базе виртуального hadoop кластера.
Что было сделано:
- был реализован намного более сложный алгоритм, основанный на перемножении больших матриц;
- 338Мб данных веб-статистики на входе, 55Гб промежуточных данных, 32Мб данных на выходе, 1 час время выполнения.
Что использовалось:
- управление количеством map и reduce задач на каждой ноде;
- кодеки Snappy и LZO почти на всех этапах MapReduce;
- предварительная фильтрация данных перед обработкой;
- Sqoop для двустороннего обмена данными с SQL сервером (вкл. удаленную очистку таблиц и запуск хранимых процедур);
- backup namenode на nfs диск.
Итого:
Есть кластер, хорошо зарекомендовавший себя по надежности, на котором идет ежедневный расчет 4 сервисов рекомендаций за 2 часа с более сложной реализацией, чем на SQL сервер. 2 сервиса реализованы на языке PIG, 2 других — на Hive. Технической поддержки за 1 год эксплуатации потребовал только один раз, когда было сделано аварийное отключение namenode.