26

过去,我曾经使用在 MySQL 上运行的 OLAP 多维数据集构建 WebAnalytics。现在,我使用的 OLAP 多维数据集只是一个大表(好吧,它的存储比那更智能),其中每一行基本上是一个测量值或一组测量值的聚合。每个度量都有一堆维度(即哪个页面名称、用户代理、ip 等)和一堆值(即有多少浏览量、多少访问者等)。

您在这样的表上运行的查询通常采用以下形式(元 SQL):

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

因此,您可以使用提到的过滤器获得所选日期的每个小时的总数。一个障碍是这些立方体通常意味着全表扫描(各种原因),这意味着您可以制作这些东西的大小(以 MiB 为单位)的实际限制。

我目前正在学习 Hadoop 等的来龙去脉。

在 BigTable 上将上述查询作为 mapreduce 运行看起来很简单:只需将“小时”作为键,在映射中过滤并通过对值求和来减少。

您能否在 BigTable 类型的系统上“实时”(即通过用户界面并且用户尽快得到他们的答案)而不是批处理模式运行我上面显示的查询(或至少具有相同的输出)?

如果不; 在 BigTable/Hadoop/HBase/Hive 等领域做这样的事情的合适技术是什么?

4

5 回答 5

9

它甚至已经完成了(有点)。

LastFm 的聚合/汇总引擎:http: //github.com/zohmg/zohmg

谷歌搜索出现了一个谷歌代码项目“mroll”,但它除了联系信息之外什么都没有(没有代码,什么都没有)。不过,可能想联系那个人,看看发生了什么。 http://code.google.com/p/mroll/

于 2009-09-15T16:53:51.877 回答
4

我的回答与 HBase 有关,但同样适用于 BigTable。

Urban Airship 开源的datacube,我认为它接近你想要的。在此处查看他们的演示文稿

Adobe 也有一些关于他们如何使用 HBase 进行“低延迟 OLAP”的演示(此处此处)。

于 2012-07-24T17:47:47.380 回答
4

通过预先聚合 SQL 查询并将其映射到适当的 Hbase 限定符,我们设法在 HBase 中创建低延迟 OLAP。有关更多详细信息,请访问以下网站。

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

于 2012-10-29T09:35:09.910 回答
3

如果您正在寻找一种表扫描方法,您是否考虑过 Google BigQuery?BigQuery 在提供交互式响应的后端进行自动横向扩展。在 2012 年 Google I/O 活动中,Jordan Tigani 做了一个很好的会议,解释了一些内部机制。

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

它不是 MapReduce,但它适用于您所描述的高速表扫描。

于 2012-08-09T17:17:05.083 回答
3

Andrei Dragomir 就 Adob​​e 如何使用 M/R 和 HBase 执行 OLAP 功能进行了有趣的讨论。

视频:http ://www.youtube.com/watch?v=5U3EnfiKs44

幻灯片:http ://hstack.org/hbasecon-low-latency-olap-with-hbase/

于 2012-07-20T07:33:11.487 回答