Hbase架构设计 - 建议需要
问题描述:
我最近开始试验Hbase和hadoop堆栈。我正试图从头构建一个应用程序。我正在为我的应用程序设计我的模式,它将使用谷歌正常语法数据集。Hbase架构设计 - 建议需要
我意识到可以将数据集制作成具有ngram作为行键和具有许多限定符(年份,页数,match_count)的一个列族的模型,或者该模型可以具有n-gram作为行键以及Year,page_count,match_count有多个列族。
我意识到模型取决于我想使用这些数据的方式,但我想了解这两种方法的优缺点。
干杯, Dwarak
答
考虑阅读从HBase的书本章内容:6.2. On the number of column families
“HBase的目前不与上述两个或三个列族事情做好,以便保持柱家庭的数量你Schema low。目前,冲洗和压缩是在每个Region的基础上完成的,所以如果一个Column家族承载大量数据带来冲刷,那么相邻的家族也会被刷新,尽管他们携带的数据量很小。列家族的冲刷和压实交互可以造成一堆不必要的I/O加载(由chang来解决冲洗和压实以每列家庭为基础)“。
“如果可以在您的模式中尝试使用一个列族,只在数据访问通常是列作用域的情况下引入第二和第三列族;即,您查询一个列族或另一列族不是同一时间“
现在请记住,在物理上,所有列家族成员都一起存储在文件系统中。由于调音和存储规范是在列族级完成的,因此建议所有列族成员具有相同的一般访问模式和大小特征。如果您的所有数据都将同时处理,那么您可能需要考虑只有一个列族的表。除非几乎所有时间都单独使用,否则最好不要使用多个家庭。