【问题标题】:Can OLAP be done in BigTable?OLAP 可以在 BigTable 中做吗?
【发布时间】:2010-11-28 06:58:01
【问题描述】:

过去我曾经使用在 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 等领域中做这种事情的合适技术是什么?

【问题讨论】:

    标签: hadoop olap mapreduce hbase hive


    【解决方案1】:

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

    Urban Airship 开源了datacube,我觉得很接近你想要的。在此处查看他们的presentation

    Adobe 还提供了几个演示文稿(herehere),介绍他们如何使用 HBase 进行“低延迟 OLAP”。

    【讨论】:

      【解决方案2】:

      我们通过预先聚合 SQL 查询并将其映射到适当的 Hbase 限定符,成功地在 HBase 中创建了低延迟 OLAP。欲了解更多详情,请访问以下网站。

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

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

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

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

          【讨论】:

          • 感谢 zohmg 的建议。根据他们的网站:“核心思想是预先计算聚合并以读取效率的方式存储它们”。我的想法是从一组数据开始,然后根据用户当时的需求进行汇总。
          • 您希望进行预聚合,以便对于每个唯一的维度组合,您最多只有一行;然后,运行时聚合是一个将立方体的适当横截面卷起的问题。 Zohmg 可以为您指明如何做到这一点。我知道至少有一个广告网络使用 HyperTable 或 HBase 为他们的客户进行实时仪表板,所以这是可行的。
          • 来自自述文件:“代码现在与当前的 Hadoop 和 HBase 实现完全过时了,留在这里慢慢地消亡。”
          猜你喜欢
          • 1970-01-01
          • 2017-08-19
          • 1970-01-01
          • 1970-01-01
          • 2019-01-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多