2014-11-21 23 views
1

我需要计算HBase表上的聚合。Hbase扫描与Mapreduce进行实时计算

说我有这个HBase的表: '元数据' 列家族:M列:N

这里的元数据对象有串

类的元数据 { 列表标签的列表;

}

我需要计算的,对此我在考虑使用或者使用的MapReduce标签计数或HBase的直接扫描结束。

结果必须返回即时。那么我可以在这种情况下使用哪一种?扫描hbase并计算聚集或映射精简?

Mapreduce最终将扫描hbase并计算计数。

使用其中任何一个的优缺点是什么?

+0

定义'即时'。 – nelsonda 2014-11-25 20:06:41

+0

当调用API而不是计划作业时计算。 – divyaravi 2014-12-03 18:30:40

回答

0

我怀疑你不知道HBase的优缺点,它不适合计算大数据集的实时聚合。

让我们首先说MapReduce本身就是一个计划作业,您将无法在运行中返回响应,期望Task Tracker初始化作业的时间不少于15秒。最后,MapReduce作业将完成同样的事情:一个HBase扫描,执行扫描的权利和MapReduce之间的差异,它只是平行化和数据局部性,当你拥有数百万/十亿的行。如果您的查询只需要读取连续数千行来聚合它们,那么您可以只进行一次扫描,并且可能会有可接受的响应时间,但对于较大的数据集,在查询时不可能做到这一点。

HBase最适合处理大量的原子读写操作,这样,无论您需要多少预集合计数器或您需要多少个请求,您都可以实时维护这些聚合。接收:通过适当的行键设计和分割策略,您可以扩展以满足需求。

把它看作是一个字数,你可以将所有单词存储在一个列表中,并在请求时将它们计入查询时间,或者可以在插入时处理该列表并存储每个单词的使用次数在文档中,作为全球计数器,以及每日,每月,每年,每个国家,每个作者的表格(甚至家庭)。