Можно ли сделать OLAP в BigTable?
В прошлом я использовал для создания WebAnalytics использование кубов OLAP, работающих в MySQL.
Теперь куб OLAP, который я использовал, это просто большая таблица (хорошо, она была немного более умна, чем та,), где каждая строка представляет собой в основном измерительный или или совокупный набор измерений. Каждое измерение имеет кучу размеров (например, pagename, useragent, ip и т.д.) И множество значений (например, количество просмотров страниц, количество посетителей и т.д.).
Запросы, которые вы запускаете в такой таблице, обычно имеют форму (meta-SQL):
SELECT SUM(hits), SUM(bytes),
FROM MyCube
WHERE date='20090914' and pagename='Homepage' and browser!='googlebot'
GROUP BY hour
Таким образом, вы получаете итоговые значения за каждый час выбранного дня с указанными фильтрами.
Одна загвоздка заключалась в том, что эти кубы обычно означали полное сканирование таблицы (по разным причинам), и это означало практическое ограничение размера (в MiB), что вы могли бы сделать эти вещи.
В настоящее время я изучаю все возможности Hadoop и подобных.
Выполнение вышеуказанного запроса как mapreduce на BigTable выглядит достаточно просто:
Просто сделайте "час" ключом, фильтруйте на карте и уменьшайте, суммируя значения.
Вы можете запустить такой запрос, как я показал выше (или, по крайней мере, с тем же выходом), что и система BigTable в режиме реального времени (то есть через пользовательский интерфейс и пользователь получает ответ ASAP) вместо пакетного режима
Если нет; какова соответствующая технология, чтобы сделать что-то подобное в области BigTable/Hadoop/HBase/Hive и подобных?
Ответы
Ответ 1
Это даже было сделано (вроде).
Механизм агрегации/подсчета LastFm: http://github.com/zohmg/zohmg
В google search появился проект google-кода "mroll", но у него нет ничего, кроме контактной информации (без кода, ничего). Тем не менее, возможно, захочется обратиться к этому парню и посмотреть, что случилось. http://code.google.com/p/mroll/
Ответ 2
Мой ответ относится к HBase, но в равной степени относится и к BigTable.
Urban Airship open-sourced datacube, который, я думаю, близок к тому, что вы хотите. См. Их презентация здесь.
Adobe также имеет несколько презентаций (здесь и здесь) о том, как они делают "OLAP с малой задержкой" с HBase.
Ответ 3
Нам удалось создать низкоуровневую OLAP в HBase, предварительно подготовив SQL-запрос и сопоставив его с соответствующими квалификаторами Hbase. Для более подробной информации посетите сайт ниже.
http://soumyajitswain.blogspot.in/2012/10/hbase-low-latency-olap.html
Ответ 4
Если вы ищете подход к сканированию таблицы, считаете ли вы, что Google BigQuery? BigQuery делает автоматическое масштабирование на обратной стороне, что дает интерактивный ответ. Хорошая сессия Иордании Тигани из мероприятия 2012 года ввода-вывода Google объясняет некоторые из внутренних дел.
http://www.youtube.com/watch?v=QI8623HlYd4
Это не MapReduce, но оно ориентировано на высокоскоростное сканирование таблицы, как то, что вы описали.
Ответ 5
Андрей Драгомир сделал интересный разговор о том, как Adobe выполняет функции OLAP с помощью M/R и HBase.
Видео: http://www.youtube.com/watch?v=5U3EnfiKs44
Слайды: http://hstack.org/hbasecon-low-latency-olap-with-hbase/