2013-09-05 29 views
3

我必须每月在HBase表中存储有关实体的信息。我想处理迄今为止使用mapreduce逻辑的实体的所有月份详细信息。我很困惑是否选择HBase桌子的高窄或宽扁设计。HBase表格设计 - 高窄窄平坦的方法

使用扁平宽方法,实体Id将保留为行键和月份id作为列限定符,并且详细信息为限定符值。在HBase-mapreduce中,我可以获取地图和过程中实体的所有详细信息。

高窄方法将存储行键作为实体ID和月份的组合。此外,细节将存储在一个单独的列中。在HBase-mapreduce中,我必须获取详细信息,以便在缩减器中查找map和aggregate中的所有月份。

哪种方法更好,性能更好?提前致谢。

+0

所以你必须在一个月内存储一次信息??另外,锄头多? – Tariq

+0

信息粒度是每月。可能发生的情况是,一个实体的特定月度信息可以更新频率更高。要存储的信息包含500个键值。可能有数百万个这样的实体。我没有确切的数字数据。 – InfamousCoconut

回答

3

一些假设:

  • 你有很多的实体,您每月一次要保存其状态
  • 您从MapReduce工作想要的结果汇总了这些实体,并保存信息基础上,一个月。例如这些数字的一月2013
  • 每单位每月

你是不是存储庞大的信息量分别为(所有实体)我觉得Flat-Wide表方法会产生更好的效果。如果我正确地记得HBase以每列家族为基础存储数据,这就是为什么如果我正确地记得HBase存储数据,在压实发生的水平..更多信息在Suggestions on performance optimization section)。既然它们在一起,你应该能够快速获取任何实体信息,因为你有rowkey-column族列量词信息。同样假设实体标识符是散列的(或者你用一个散列值加前缀),你应该也可以防止monotonically increasing键值。

关于运行MapReduce作业。由于此时您的数据均匀分布在所有区域服务器上,因此您的计算也将分布。意味着所有机器都可能做同样数量的工作。但是,您也可以使用Tall-Narrow模型(假设您正确设计模式)。