`
杨俊华
  • 浏览: 97234 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Region Server意外退出之后...

阅读更多

早晨上班好好的,突然nagios报出一台regionserver挂了。顿时忙碌起来。

上去一看,从log中看到这样一条信息

2011-04-08 04:02:22,083 ERROR org.apache.hadoop.hbase.regionserver.HRegionServer: ZooKeeper session expired

之后, regionserver就理直气壮地退出了。

于是查了下代码,看到了在org.apache.hadoop.hbase.regionserver.HRegionSever.java下这样一段代码。

/**
* We register ourselves as a watcher on the master address ZNode. This is
* called by ZooKeeper when we get an event on that ZNode. When this method
* is called it means either our master has died, or a new one has come up.
* Either way we need to update our knowledge of the master.
* @param event WatchedEvent from ZooKeeper.
*/
public void process(WatchedEvent event) {
EventType type = event.getType();
KeeperState state = event.getState();
LOG.info("Got ZooKeeper event, state: " + state + ", type: " +
type + ", path: " + event.getPath());
// Ignore events if we're shutting down.
if (stopRequested.get()) {
LOG.debug("Ignoring ZooKeeper event while shutting down");
return;
}
if (state == KeeperState.Expired) {
LOG.error("ZooKeeper session expired");
boolean restart =
this.conf.getBoolean("hbase.regionserver.restart.on.zk.expire", false);
if (restart) {
restart();
} else {
abort();
}
} else if (type == EventType.NodeDeleted) {
watchMasterAddress();
} else if (type == EventType.NodeCreated) {
getMaster();
// ZooKeeper watches are one time only, so we need to re-register our watch.
watchMasterAddress();
}
}
这段注释写的很清楚了。对于一个reigonserver, 他需要将自己注册到Zookeeper上master的Znode上。这样的目的,是当master 宕机或者新的master启动的时候,能及时收到通知。对于regionserver来说,维持和Zookeeper的联系是非常重要的。因为regionserver需要定期的将心跳包发给master server。如果regionserver不能及时的知道master的改变,就会导致regionserver和master失去联系,而成为一个僵死的进程。
于是,在默认情况下,regionserver遇到这种情况,就选择退出。
为什么regionserver 和Zookeeper的session expired? 可能的原因有
1. 网络不好。
2. Java full GC, 这会block所有的线程。如果时间比较长,也会导致session expired.
怎么办?
1. 将Zookeeper的timeout时间加长。
2. 配置“hbase.regionserver.restart.on.zk.expire” 为true。 这样子,遇到ZooKeeper session expired , regionserver将选择 restart 而不是 abort
具体的配置是,在hbase-site.xml中加入

 

<property>
<name>zookeeper.session.timeout</name>
<value>90000</value>
<description>ZooKeeper session timeout.
HBase passes this to the zk quorum as suggested maximum time for a
session.  See http://hadoop.apache.org/zookeeper/docs/current/zookeeperProgrammers.html#ch_zkSessions
"The client sends a requested timeout, the server responds with the
timeout that it can give the client. The current implementation
requires that the timeout be a minimum of 2 times the tickTime
(as set in the server configuration) and a maximum of 20 times
the tickTime." Set the zk ticktime with hbase.zookeeper.property.tickTime.
In milliseconds.
</description>
</property>
<property>
<name>hbase.regionserver.restart.on.zk.expire</name>
<value>true</value>
<description>
Zookeeper session expired will force regionserver exit.
Enable this will make the regionserver restart.
</description>
</property>
为了避免java full GC suspend thread 对Zookeeper heartbeat的影响,我们还需要对hbase-env.sh进行配置。

 

export HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError \
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"

修改成

export HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError \
-XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled \
-XX:+CMSInitiatingOccupancyFraction=70 \
-XX:+UseCMSInitiatingOccupancyOnly -XX:+UseParNewGC -Xmn256m"
更多关于Hbase performance tuning 的信息,可以参考
http://wiki.apache.org/hadoop/PerformanceTuning
分享到:
评论

相关推荐

    region_invade_detect.rar

    标题中的"region_invade_detect.rar"表明这是一个关于区域侵入检测的项目,而"region_invade_detect"可能是这个项目的主程序或核心模块的名称。描述中提到的是“基于放射线的凸凹多边形相交判断算法实现源码”,这...

    PyPI 官网下载 | china_region-0.0.10.tar.gz

    《PyPI官网下载的"china_region-0.0.10.tar.gz"——探索Python库在分布式环境中的应用》 PyPI(Python Package Index)是Python开发者常用的资源库,其中包含了大量的开源Python库,便于开发者下载和安装。本文将...

    PyPI 官网下载 | china_region-0.0.2.tar.gz

    标题中的"PyPI 官网下载 | china_region-0.0.2.tar.gz"表明这是一个在Python Package Index(PyPI)官方平台上发布的软件包。PyPI是Python开发者发布自己编写的开源软件包的地方,便于其他用户通过pip安装和使用。...

    Python库 | region_estimators-0.1.41.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:region_estimators-0.1.41.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    ip2region-1.3-release.zip

    《ip2region 1.3版本:离线IP地址定位库的详解与应用》 ip2region是一款高效、准确率高达99.9%的离线IP地址定位库,特别适用于那些对网络服务速度有较高要求,同时又无法或者不希望连接到在线IP数据库的应用场景。...

    region_grow_class.cpp

    region_grow_class.cpp

    Python库 | region_estimators-0.1.42.tar.gz

    标题中的"region_estimators-0.1.42.tar.gz"是一个Python库的压缩包文件,它主要用于估计图像或数据中的区域。这个版本是0.1.42,通常表示它是该库的一个较早版本,可能包含基本功能和早期开发的特性。 在Python...

    Python库 | rescape-region-0.2.27.tar.gz

    标题中的"rescape-region-0.2.27.tar.gz"是一个Python库的压缩包,表明它是用Python编程语言开发的。"rescape-region"可能是这个库的名称,而"0.2.27"是它的版本号,这在软件开发中是很常见的,用于追踪不同阶段的...

    Python库 | rescape-region-0.0.24.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:rescape-region-0.0.24.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Python库 | rescape-region-0.1.47.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:rescape-region-0.1.47.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Region-growing-algorithm.zip_image region_region growing_segment

    在标题“Region-growing-algorithm.zip_image region_region growing_segment”中,我们可以理解为这个压缩包包含的是关于区域生长算法在图像分割中的应用。"region growing"是区域生长算法的核心概念,而...

    PyPI 官网下载 | rescape-region-0.1.19.tar.gz

    《PyPI官网下载 | rescape-region-0.1.19.tar.gz——探索Python云原生分布式库》 在IT领域,尤其是云计算和分布式系统中,Python库扮演着至关重要的角色。今天我们要关注的是一个名为"rescape-region"的Python库,...

    华为云Stack 8.0.3 网络配置最佳实践(Region Type I)02.zip

    华为云Stack 8.0.3 网络配置最佳实践(Region Type I)02.zip

    Python库 | rescape-region-0.0.35.tar.gz

    `rescape-region-0.0.35.tar.gz` 是一个针对 Python 开发者的库,主要功能集中在地理空间处理和区域分析。这个压缩包包含了 `rescape-region` 库的版本 0.0.35。在 Python 中,库是预编写的功能模块,允许开发者通过...

    2021_YE_Region_Mobility_Report.csv

    2021_YE_Region_Mobility_Report.csv

    region.json

    region.json

    安卓Android源码——(Region碰撞检测).zip

    本资料"安卓Android源码——(Region碰撞检测).zip"提供了一个关于如何在Android平台上实现Region碰撞检测的详细案例。 首先,我们要理解什么是Region。在Android中,Region是一个表示矩形区域的对象,它可以由一个...

    Python库 | aws-cdk.region-info-1.77.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:aws-cdk.region-info-1.77.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Python库 | aws-cdk.region-info-1.43.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:aws-cdk.region-info-1.43.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Tutorial #2 Georeferencing, tiling and region-of-interest.mp4

    Tutorial #2 Georeferencing, tiling and region-of-interest.mp4

Global site tag (gtag.js) - Google Analytics