Можно ли сделать OLAP в BigTable? - PullRequest
25 голосов
/ 15 сентября 2009

Раньше я создавал WebAnalytics, используя кубы OLAP, работающие на MySQL. Теперь, как я использовал куб OLAP, это просто большая таблица (хорошо, она хранилась немного умнее, чем эта), где каждая строка в основном является измерением или совокупным набором измерений. Каждое измерение имеет набор измерений (то есть, какое имя пользователя, идентификатор пользователя, IP-адрес и т. Д.) И набор значений (т. Е. Сколько просмотров страниц, сколько посетителей и т. Д.).

Запросы, которые вы запускаете для такой таблицы, обычно имеют форму (мета-SQL):

SELECT SUM(hits), SUM(bytes),
FROM MyCube
WHERE date='20090914' and pagename='Homepage' and browser!='googlebot'
GROUP BY hour

Таким образом, вы получаете итоги за каждый час выбранного дня с указанными фильтрами. Одна загвоздка заключалась в том, что эти кубы обычно означали полное сканирование таблицы (по разным причинам), и это означало практическое ограничение размера (в МиБ), который вы могли бы сделать.

В настоящее время я изучаю все тонкости Hadoop и тому подобное.

Выполнение вышеуказанного запроса в виде mapreduce на BigTable выглядит достаточно просто: Просто введите «час», отфильтруйте карту и уменьшите, суммируя значения.

Можете ли вы выполнить запрос, как я показал выше (или, по крайней мере, с тем же выводом), на системе типа BigTable в режиме реального времени (т.е. через пользовательский интерфейс и пользователь получает ответ как можно скорее) вместо пакетного режима

Если нет; Какая технология подходит для того, чтобы сделать что-то подобное в сфере BigTable / Hadoop / HBase / Hive и подобных?

Ответы [ 5 ]

9 голосов
/ 15 сентября 2009

Это даже отчасти сделано (вроде).

Механизм агрегации / суммирования LastFm: http://github.com/zohmg/zohmg

Поиск Google обнаружил проект кода Google "mroll", но в нем нет ничего, кроме контактной информации (без кода, ничего) Тем не менее, может захотеть связаться с этим парнем и посмотреть, что случилось. http://code.google.com/p/mroll/

4 голосов
/ 29 октября 2012

Нам удалось создать OLAP с малой задержкой в ​​HBase путем предварительной агрегации запроса SQL и отображения его в соответствующие квалификаторы Hbase. Для более подробной информации посетите сайт ниже.

http://soumyajitswain.blogspot.in/2012/10/hbase-low-latency-olap.html

4 голосов
/ 24 июля 2012

Мой ответ относится к HBase, но в равной степени относится и к BigTable.

Urban Airship с открытым исходным кодом datacube , который, я думаю, близок к тому, что вы хотите. Смотрите их презентацию здесь.

У Adobe также есть пара презентаций ( здесь и здесь ) о том, как они выполняют "OLAP с низкой задержкой" с HBase.

3 голосов
/ 09 августа 2012

Если вы ищете метод сканирования таблиц, рассматривали ли вы Google BigQuery? BigQuery выполняет автоматическое масштабирование с обратной стороны, что дает интерактивный ответ. Джордан Тигани (Jordan Tigani) из конференции Google I / O 2012 года рассказывает о некоторых внутренних элементах.

http://www.youtube.com/watch?v=QI8623HlYd4

Это не MapReduce, но он предназначен для высокоскоростного сканирования таблиц, как вы описали.

2 голосов
/ 20 июля 2012

Андрей Драгомир сделал интересную беседу о том, как Adobe выполняет функции OLAP с M / R и HBase.

Видео: http://www.youtube.com/watch?v=5U3EnfiKs44

Слайды: http://hstack.org/hbasecon-low-latency-olap-with-hbase/

...