似乎Hbase RegionServer是单个节点,而不像Cassandra那样有复制节点。我知道当一个RegionServer关闭时,HMaster会将崩溃的RS上的区域分配给其他RS。
但是新的RegionServer准备好为崩溃的区域提供服务的时间有多长,如果花了太长时间,客户端就不能等待太长时间,客户端会抛出异常甚至丢失的数据,对吗?
答案 0 :(得分:9)
您正在寻找的是 HBase平均恢复时间 有一些文章在谈论它。要根据此article回答您的问题:
Hbase从失败中恢复需要多长时间
这取决于您的设置,您的hbase版本,您的硬件......
这个过程有3个步骤:
在此期间数据是否会丢失?
是的,客户端被阻止,直到恢复完成。这就是为什么有办法通过使用hbase和zookeeper的设置来最小化停机时间。请参阅this blog post进行操作。
修改强>
正如冯王所说,我可能暗示HBase需要很长时间才能从失败中恢复过来。与Cassandra相比,它需要更多的资源来恢复节点。这可以通过 CAP定理来解释:Hbase及其master / regionServer架构一致且分区容错但不可用。但是,Cassandra与对等体系结构相比,可用和分区容忍但不一致。
这只是一般性,因为事实上,您可以使用正确的配置和方案(如FengWang)调整HBase,但是你会松开其他东西。拥有100个节点,您可以拥有10个具有更大存储容量的节点,这是一个巨大的价格差异。此外,不得不查询更多节点进行扫描是不划算的,但通过精细调整,您可以克服这个问题(使用良好的数据方案可以避免跨越太多节点进行扫描)。在Cassandra案例中,您可以在查询上设置一致性级别。级别越高,查询越慢。
在分布式系统中,您只能将一件事换成另一件事。没有针对问题的通用解决方案。
答案 1 :(得分:0)
我在100个节点的Hbase集群上做了一些测试。当一个RegionServer关闭Hbase通常需要3-5秒来重新加载错过的区域和HDlog的Hlog。即客户端仅被阻止不到5秒。不像上面的帖子说它需要1分钟。如果真的需要1分钟,我打赌没有人想要使用Hbase。
对于Cassandra,如果一个节点关闭,通常需要不到1秒的时间来重新加载丢失的数据。