Hbase需要多长时间才能恢复一个崩溃的RegionServer

时间:2016-04-12 16:36:45

标签: hbase

似乎Hbase RegionServer是单个节点,而不像Cassandra那样有复制节点。我知道当一个RegionServer关闭时,HMaster会将崩溃的RS上的区域分配给其他RS。

但是新的RegionServer准备好为崩溃的区域提供服务的时间有多长,如果花了太长时间,客户端就不能等待太长时间,客户端会抛出异常甚至丢失的数据,对吗?

2 个答案:

答案 0 :(得分:9)

您正在寻找的是 HBase平均恢复时间 有一些文章在谈论它。要根据此article回答您的问题:

Hbase从失败中恢复需要多长时间

这取决于您的设置,您的hbase版本,您的硬件......
这个过程有3个步骤:

  1. 确定区域服务器已关闭。这是由Zookeeper执行的名为heartbeat的进程完成的。如果区域服务器在超时之前未响应心跳,则主服务器将认为regionServer已死。
  2. 恢复正在进行的写入:在写入区域服务器之前,写入将保留在日志中。因为数据是复制的,所以我们说三次,如果一个节点崩溃,你仍然有两个具有正确值的日志。因此,当主人知道区域服务器已经死亡时,它将尝试恢复他读取日志的最后状态。
  3. 重新分配区域:这取决于您的HBase版本
  4. 在此期间数据是否会丢失?

    是的,客户端被阻止,直到恢复完成。这就是为什么有办法通过使用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秒的时间来重新加载丢失的数据。