集群突然nagios报出一台regionserver挂了。顿时忙碌起来。
上去一看,从log中看到这样一条信息
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:+UseCMSInitiatingOccupancyOnly -XX:+UseParNewGC -Xmn256m"
相关推荐
2. Region Server意外退出:这可能与Zookeeper通信有关,需要检查网络连接和Zookeeper配置。 3. 写入速度慢:可以通过调整RegionServer的缓冲区大小,批量写入以及优化GC来提升写入性能。 HBase的优化策略包括: ...
总结来说,"remote-region eureka-server.rar"是一个关于在SpringCloud中配置和使用远程Eureka Server的实例,其目的是实现跨地区的服务发现,提高系统的可扩展性和可用性。通过配置Eureka Server和服务提供者的属性...
根据给定文件内容,我们可以提取关于“Region按大小分割”的知识点。首先,“Region按大小分割”这一概念通常出现在分布式数据库系统中,例如HBase、BigTable等,这些系统使用Region来管理数据的分布和存储。下面...
《深入解析ip2region:高效IP地址库的原理与应用》 在当今互联网技术日新月异的时代,处理和分析IP地址数据变得至关重要。ip2region是一个高效且准确的IP地址库,它专为快速查询IP地理位置信息而设计。本文将深入...
《IP2Region数据库详解及其应用》 在互联网技术飞速发展的今天,对于网络数据的处理和分析变得至关重要,其中IP地址的归属地查询是常见的一种需求。IP2Region数据库,作为一个高效、轻量级的解决方案,被广泛应用于...
《使用C#调用ip2region组件进行IP定位详解》 在互联网技术中,快速准确地定位用户IP地址的地理位置和运营商信息是一项重要的任务。在众多解决方案中,ip2region是一个高效且轻量级的库,它能帮助我们快速查询到IP...
Spring Boot作为Java领域最流行的微服务框架之一,结合ip2region这个高效、轻量级的IP地址库,可以轻松实现这一功能。本篇文章将深入探讨如何在Spring Boot项目中集成ip2region,以实现快速、准确的IP地址定位。 ...
ip2region - 是一个离线IP地址定位库和IP定位数据管理框架 ip2region.xdb最新版
paint_region修改对应Region颜色
在本篇内容中,我们将详细讨论如何在 Visual Studio 2010 和 2013 中实现 JS 代码折叠,以及如何通过 `#region` 指令来进一步定制代码折叠。 首先,我们有两个扩展插件可以实现这个功能: 1. **JSEnhancements.vsix...
CSharp_Region类的方法使用图解 本实例使用两个矩形A和B来演示System.Drawing.Region类的各方法的功能。 详情请参考:http://blog.csdn.net/testcs_dn/article/details/41730589 下载需要积分,评论后会全部返还。
在标题“Region-growing-algorithm.zip_image region_region growing_segment”中,我们可以理解为这个压缩包包含的是关于区域生长算法在图像分割中的应用。"region growing"是区域生长算法的核心概念,而...
在.NET Framework中,`Region`类是用于定义图形区域的重要工具,主要应用于Windows Forms和WPF等GUI应用程序中。这个类允许开发者创建复杂的形状,并且可以用来进行剪裁、绘制和填充等操作。本篇文章将深入探讨`...
SQL Server Selling Plan and 20-60 Program in North Region.pptx
《基于IP2Region技术获取用户地理位置详解》 在互联网服务中,实时获取用户的位置信息是一项重要的功能,这对于个性化推荐、广告定向、网络安全等场景都至关重要。IP2Region就是这样一种技术,它能根据用户的IP地址...
本资料"安卓Android源码——(Region碰撞检测).zip"提供了一个关于如何在Android平台上实现Region碰撞检测的详细案例。 首先,我们要理解什么是Region。在Android中,Region是一个表示矩形区域的对象,它可以由一个...
ip2region是一个准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java,php,c,python,nodejs,golang,c#等查询绑定和Binary,B树,内存三种查询算法。
Ip2region (2.0 - xdb) 是一个强大的离线IP数据管理工具,专为高效、快速地处理大规模IP地址段而设计。这个框架的核心是它的xdb数据库格式,能够提供亿级别IP数据的存储和检索能力,同时保证了极低的查询延迟,通常...
该压缩包内含五个文件,分别是:CHINA_市_region.dbf、CHINA_市_region.prj、CHINA_市_region.sbn、CHINA_市_region.sbx以及CHINA_市_region.shp。这些文件是GIS领域中常见的数据格式,它们共同构成了一个完整的地理...