当前位置:  开发笔记 > 大数据 > 正文

每月200亿行 - Hbase/Hive/Greenplum /什么?

如何解决《每月200亿行-Hbase/Hive/Greenplum/什么?》经验,为你挑选了2个好方法。

我想用你的智慧为数据仓库系统找到合适的解决方案.以下是一些可以更好地理解问题的细节:

数据以星型模式结构组织,具有一个BIG事实和~15个维度.
每月20B个事实行
10个维度有100行(有些层次结构)
5个维度有数千行
2个维度有~200K行
2个大尺寸有50M-100M行

针对此DB运行两个典型查询

dimq的热门成员:

select    top X dimq, count(id) 
from      fact 
where     dim1 = x and dim2 = y and dim3 = z 
group by  dimq 
order by  count(id) desc

针对元组的措施:

select    count(distinct dis1), count (distinct dis2), count(dim1), count(dim2),...
from      fact 
where     dim1 = x and dim2 = y and dim3 = z 

问题:

    执行此类查询的最佳平台是什么

    需要什么样的硬件

    哪里可以托管(EC2?)


    (请忽略此刻的导入和加载问题)

Tnx,
Haggai.



1> ConcernedOfT..:

我不能强调这一点:通过现成的报告工具获得很好的效果.

每月20亿行将您置于VLDB区域,因此您需要进行分区.低基数维度也表明位图索引将是性能获胜.

忘记云系统(Hive, Hbase),直到他们拥有成熟的SQL支持.对于数据仓库应用程序,您需要一些适用于传统报告工具的东西.否则,你会发现自己永远陷入了编写和维护临时报告程序的困境.

使用更传统的DBMS(如Oracle)可以管理数据量 - 我知道一个主要的欧洲电信公司每天向Oracle数据库加载600GB .在所有其他条件相同的情况下,这比您的数据量大两个数量级,因此共享磁盘架构仍然可以为您提供空间.一个 无共享的建筑风格 Netezza公司或Teradata数据可能会更快,但仍然这些卷是不是在这超出了传统的共享磁盘系统的水平.但请记住,这些系统都非常昂贵.

还要记住,MapReduce 不是一种有效的查询选择算法.它基本上是一种分配蛮力计算的机制.Greenplum确实有一个MapReduce后端,但是专门构建的无共享引擎将更高效,并且可以为更少的硬件完成更多的工作.

我对此的看法是,Teradata或Netezza可能是这项工作的理想工具,但绝对是最昂贵的工具. Oracle,Sybase IQ甚至SQL Server也会处理所涉及的数据量但速度较慢 - 它们是共享磁盘架构,但仍可以管理这种数据量.有关Oracle和SQL Server中与VLDB相关的功能的详细信息,请参阅此帖子,请记住Oracle也刚刚引入了Exadata存储平台.

我的fag-packet数据包容量计划建议每月大约3-5 TB左右,包括Oracle或SQL Server的索引.虽然索引叶子在oracle上有一个16字节的ROWID而在SQL Server上有一个6字节的页面引用,但在位图索引上的Oracle可能更少.

Sybase IQ广泛使用位图索引,并针对数据仓库查询进行了优化.虽然是共享磁盘架构,但对于这种类型的查询(IIRC,它是原始的面向列的架构)非常有效.这可能比Oracle或SQL Server更好,因为它专门用于此类工作.

Greenplum可能是一个更便宜的选择,但我从来没有真正使用它,所以我无法评论它在实践中的运作情况.

如果您有10个维度,只有几百行,请考虑将它们合并到一个垃圾维度中,这将通过将十个密钥合并为一个来减少事实表.您仍然可以在垃圾维度上实现层次结构,这将使事实表的大小减少1/2或更多,并消除索引的大量磁盘使用量.

我强烈建议您使用合理的报告工具横截面来实现. 这意味着SQL前端. 像Crystal Reports这样的商业系统允许人们使用更容易获得的SQL技能来完成报告和分析.开源世界也产生了BIRT,Jasper Reports和Pentaho..Hive或HBase让你开始构建一个自定义前端的业务,除非你很乐意在接下来的5年里用Python编写自定义报告格式化器,否则你真的不需要它.

最后,托管它可以轻松地从生产系统获取快速数据.这可能意味着您自己的数据中心拥有自己的硬件.该系统将受I/O限制; 它正在对大量数据进行简单处理.这意味着您将需要具有快速磁盘子系统的计算机.云提供商倾向于不支持这种类型的硬件,因为它比这些服装传统上使用的一次性1U盒子的价格高出一个数量级.快速磁盘I/O不是云架构的优势.


是的,人们当然会使用多TB的SQL Server数据仓库系统 - 我说它应该能够应对每月200亿行.
我所知道的最大的SQL Server仓库系统在英国建筑协会大约60TB.它对于VLDB的工作并不像甲骨文那么好,当然与Teradata在同一个联盟中也没有,但你可以做到.
不要忽视调查Oracle的新Exadata平台.

2> no_one..:

我在vertica上取得了巨大的成功.我目前每天装载的行数在2亿到10亿之间 - 平均每月约9亿行 - 尽管我一个月内已经高达170亿.我有近21个维度,查询运行速度非常快.当我们根本没有时间窗口去做dataload时,我们从旧系统开始.

我们对不同的解决方案进行了非常详尽的试验和研究 - 并且实际上研究了市场上的一切.虽然Teradata和Netezza都适合我们,但它们对我们来说太贵了.Vertica在价格/性能比上击败了他们.它是一个柱状数据库.

我们现在有大约80个用户 - 当我们开始全面推出时,预计到明年年底将增长到大约900个.

我们广泛使用ASP.NET/dundas/reporting服务进行报告.它也适用于第三方报告解决方案 - 尽管我们还没有尝试过.

顺便问一下,你将如何使用dataload?我们正在使用informatica并对此非常满意.SSIS把我们推上了墙.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有