0

我最近开始试验 Hbase 和 hadoop 堆栈。我正在尝试从头开始构建应用程序。我正在为将使用 google n-gram 数据集的应用程序设计架构。

我意识到可以将数据集制作成一个模型,其中 ngram 作为行键,一个列族具有许多限定符(年、页数、match_count),或者模型可以将 n-gram 作为行键和多个列族年,page_count,match_count。

我意识到模型取决于我想使用这些数据的方式,但我想了解这两种方法的优缺点。

干杯,德瓦拉克

4

1 回答 1

0

考虑从 Hbase 书阅读本章:6.2。关于列族的数量

“HBase 目前不能很好地处理两个或三个列族以上的任何内容,因此请保持架构中的列族数量较少。目前,刷新和压缩是在每个区域的基础上完成的,所以如果一个列族承载大部分数据带来flush时,相邻的family也会被flush,尽管它们携带的数据量很小。当column family多的时候flush和compaction的交互会导致一堆不必要的i/o加载(通过更改flush和压缩以在每个列族的基础上工作)。”

“如果可以在架构中尝试使用一个列族。仅在数据访问通常是列范围的情况下引入第二个和第三个列族;即您查询一个列族或另一个列族,但通常不会同时在一度”

现在,请记住,在物理上,所有列族成员都存储在文件系统上。因为调整和存储规范是在列族级别完成的,所以建议所有列族成员都具有相同的一般访问模式和大小特征。如果您的所有数据将同时处理,那么您可能需要考虑使用一个只有一个列族的表。您最好不要使用多个系列,除非它们几乎一直单独使用。

于 2012-08-11T16:01:15.597 回答