首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

hbase中对deadserver处置的困扰

2012-09-08 
hbase中对deadserver处理的困扰hbase在一个regionServer死掉后,即使重启了这个server,deadlist中也不会去

hbase中对deadserver处理的困扰
hbase在一个regionServer死掉后,即使重启了这个server,deadlist中也不会去掉原先死去的deadserver。
例如:

hbase shell>status5 servers, 0 dead, 6.2000 average load

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

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

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

此时回到shell中
hbase shell>status5 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了

热点排行