Команде, в которой я работаю, достаточно повезло, что у нее есть менеджмент, который осознает необходимость совершенствования наших навыков и изучения новых технологий.В результате, когда у нас есть небольшой перерыв между крупными проектами, нам рекомендуется использовать это время, чтобы немного расширить свой кругозор и узнать что-то новое.Мы часто занимаемся большим исследовательским проектом в команде, чтобы каждый мог получить пользу от знаний.Например, мы построили совместимый со спецификацией сервер аутентификации Kerberos, чтобы ознакомиться с подробностями протокола.Мы написали наш собственный веб-сервер, чтобы узнать об эффективных стратегиях проектирования для сетевых приложений.
В последнее время мы очень заинтересовались Map-Reduce, в частности Hadoop и различными вспомогательными компонентами (HBase, HDFS, Pig, Hive,так далее.).Чтобы узнать больше об этом, мы хотели бы написать сервис веб-аналитики.Он будет использовать теги страниц Javascript для сбора метрик, а Hadoop и что-то , чтобы сделать аналитику и отчеты доступными через веб-интерфейс.
Сторона, отличная от Hadoop, проста.Сервлет Java будет анализировать параметры из тега Javascript (достаточно просто - мы магазин Java).Затем сервлет отправит JMS-сообщение для асинхронной обработки (опять же, просто).
Мой вопрос ... Что дальше?Мы немного исследовали такие вещи, как Hive, и это звучит как идеальное решение для запросов к хранилищу данных по различным метрикам, которые мы ищем.Но это высокая задержка.Нам повезло, что мы можем разместить это на веб-сайте, который получает несколько миллионов просмотров в месяц.Мы бы очень хотели получить относительно быстрые метрики, используя веб-интерфейс для нашего аналитического инструмента.Латентность не наш друг.Итак, каков наилучший способ сделать это?Будет ли запускать запросы как запланированное задание, а затем сохранять результаты где-нибудь с более низкой задержкой (PostgreSQL и т. Д.) И получать их оттуда?Если это так, где компонент, слушающий сообщения JMS, должен хранить данные?Может ли Hive напрямую получать данные из HBase?Должны ли мы хранить его где-нибудь в HDFS и читать в Hive?
Как я уже сказал, мы очень техническая команда и любим изучать новые технологии.Это, однако, сильно отличается от всего, что мы узнали раньше, поэтому мы хотели бы получить представление о том, какие «лучшие практики» будут здесь.Любые советы или мнения, которые вы можете дать, с благодарностью приветствуются!
РЕДАКТИРОВАТЬ: Я подумал, что добавлю некоторые пояснения относительно того, что я ищу.Я ищу совет по архитектуре и дизайну для такого решения, как это.Мы будем собирать 20-30 различных показателей на сайте, который получает несколько миллионов просмотров страниц в месяц.Это будет много данных, и мы хотели бы иметь возможность получать метрики как можно ближе к реальному времени.Я ищу лучшие практики и советы по архитектуре такого решения, потому что я не хочу, чтобы мы придумывали что-то собственное, что действительно плохо, что заставило бы нас думать, что мы «эксперты Hadoop» только потому, чтоэто работает.