Hbase和分布式前缀树

时间:2014-01-23 05:40:40

标签: tree hbase prefix subtree

我想在许多机器中表示并存储大量序列作为前缀树,如下所示: +主机将代表序列的前缀。 + n个从属机器将代表n个子前缀树,每个子树包含剩余的序列。

我想知道我是否可以使用Hbase来解决我的问题? 你能和我分享一下这方面的经验吗?

2 个答案:

答案 0 :(得分:2)

HBase表按行按字典顺序排序。因此,在您的场景中,密钥将自然存储在HBase中的方法是,子树将紧跟每个前缀,即子树最有可能位于父树所在的同一区域(因为它们共享相同的前缀)。

如果对你来说非常重要的是你拥有一个拥有主人的节点而其他拥有其余部分的节点你需要在分区键,平衡区域等方面努力工作。正如Javadba所说的那样可能的解决方案对于你来说,HBase是将概念分成单独的表,如果你想确保它们不共享机器,你仍然需要进行平衡

如果确切的物理架构对您来说不那么重要,而您真正想要的是故事效率 - 您可能需要查看图形数据库,例如基于HBase(或Cassandra),Titan等建立的Neo4J

答案 1 :(得分:1)

也许你的“大师”概念与HMaster并不完全相同。 HMaster用于管理目的,例如识别哪个RegionServer包含给定表的给定行集的Region。

表格的 任何 行中的所有数据都将位于RegionServer的内部。向RegionServers读取数据或从RegionServers写入数据是在没有与HMaster进行任何交互的情况下完成的,除了确定行所在的服务器之外。

回到“master”vs“slaves”机器拓扑:您可能决定将序列前缀存储为单独的表。然后,可以与子前缀树分开管理用于前缀的RegionServers。在任何情况下,都没有“单一主机”来存储数据,而是存储一个或多个RegionServers上的一个或多个区域。