我想在许多机器中表示和存储大量的序列作为前缀树,如下所示:+一个主机器将表示序列的前缀。+n个从机将表示n个子前缀树,每个树包含其余的序列。
我想知道我能不能用Hbase来解决我的问题?你能和我分享一下这方面的经验吗?
发布于 2014-01-24 09:17:17
也许你的“大师”的概念和HMaster不完全一样。HMaster用于管理目的,例如识别给定表的一组行的哪个RegionServer包含该区域。
行中的所有数据--表中的任何--都将位于RegionServer中。向RegionServers /从RegionServers中读取/写入数据是在不与HMaster进行任何交互的情况下完成的,除非确定行位于哪个服务器上。
回到“主”和“从”机器拓扑:您可能决定将序列前缀存储为单独的表。然后,前缀的RegionServers可以与子前缀树分开管理。在任何情况下,都没有存储数据的“单一主计算机”,而是在一个或多个RegionServers上存储一个或多个区域。
发布于 2014-01-25 08:57:28
HBase表按行键进行字典排序。因此,在您的场景中,在HBase中存储密钥的自然方式是,子树将立即跟随每个前缀,也就是说,子树很可能位于父树所在的同一区域(因为它们共享相同的前缀)。
如果对您来说非常重要的是,您将有一个节点来保存主节点和其他保存其余部分的节点,那么您将需要在分区键、平衡区域等方面努力工作。正如Javadba所说,在HBase中,可能的解决方案是将概念分离到单独的表中,如果您想确保它们不共享机器,则仍然需要进行平衡工作。
如果确切的物理架构对您来说不太重要,而您真正想要的是存储效率--您可能需要查看图形数据库,例如泰坦,它建立在HBase (或Cassandra)、Neo4J等基础上。
https://stackoverflow.com/questions/21300264
复制相似问题