`
lc_koven
  • 浏览: 350733 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hbase中对deadserver处理的困扰

阅读更多
hbase在一个regionServer死掉后,即使重启了这个server,deadlist中也不会去掉原先死去的deadserver。
例如:
hbase shell
>status
5 servers, 0 dead, 6.2000 average load

停掉其中一个节点
hbase-daemon.sh stop regionserver

然后
hbase shell
>status
4 servers, 1 dead, 6.2000 average load

再立即重启该节点:
hbase-daemon.sh start regionserver

此时回到shell中
hbase shell
>status
5 servers, 1 dead, 6.2000 average load


根本原因是在ServerManager中处理时只有add而没有remove,当然deadlist值有一个上限由hbase.master.maxdeadservers决定,默认为100:
  public synchronized boolean add(String e) {
    this.numProcessing++;
    // Check to see if we are at capacity for dead servers
    if (deadServerList.size() == this.maxDeadServers) {
      deadServers.remove(deadServerList.remove(0));
    }
    deadServerList.add(e);
    return deadServers.add(e);
  }



这一点会对用户造成很大的困扰,因此前几天诞生了这个patch,预期在0.90.2中加上
https://issues.apache.org/jira/browse/HBASE-3580
注:这个patch没赶上0.90.2,己延期到0.90.3了
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics