RegionServer异常超时检测

现象

将主机网线拔掉后,RegionServer过一段时间会shutdown掉,RegionServer的异常超时检测机制是由哪个参数控制的呢?

Regionsever异常shutdown日志:

2017-08-03 21:17:42,762 WARN [main-SendThread(OCSCloud07:9501)]zookeeper.ClientCnxn: Session 0x25ce22897746d12 for serverOCSCloud07/134.32.62.7:9501, unexpected error, closing socket connection and attempting reconnect

java.io.IOException: No route to host

at sun.nio.ch.FileDispatcherImpl.read0(Native Method)

at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)

at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)

at sun.nio.ch.IOUtil.read(IOUtil.java:192)

at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:384)

atorg.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:68)

at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:355)

at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)

2017-08-03 21:17:43,122 INFO [LeaseRenewer:e3base@drmcluster]retry.RetryInvocationHandler: Exception while invoking renewLease of classClientNamenodeProtocolTr anslatorPBover OCSCloud04/134.32.62.4:8020. Trying to fail over immediately.

java.net.NoRouteToHostException: No Route toHost from OCSCloud11/134.32.62.11 toOCSCloud04:8020 failed on socket timeout exception: java.net.NoRouteToHostExcep tion: No route to host; For more detailssee:http://wiki.apache.org/hadoop/NoRouteToHost

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

问题解决

在hbase中设置超时时间是没用的,必须修改zookeeper自身的maxSessionTimeout为1200000,才能真正起到加长zookeeper的session超时时间的作用

在RegionServer启动时,会在Zookeeper集群中创建自己的ZNode临时节点并获得该节点的独占锁,这个节点位于Zookeeper集群中的/hbase/rs目录下。

  RegionServer会通过Socket连接向Zookeeper集群发起Session会话,会话建立后在Zookeeper集群中创建属于自己的临时节点ZNode。这个节点的状态是由Zookeeper集群依据Session的状态来维护的。

  RegionServer作为客户端,向Zookeeper集群的Server端发起Session会话请求。Session建立后,会以唯一的SessionID作为标示。Client会定期向Server端发送Ping消息来表达该Session的存活状态;而Server端收到Ping消息时会更新当前Session的超时时间。如此,对于Client而言,只要Ping信息可达则表明该Session激活;对于Server而言,只要Session未超时则表明该Session激活。

  在Server端,Zookeeper会启动专门的SessionTrackerImpl线程来处理Session的相关状态迁移问题,该线程每隔tickTime(Zookeeper配置文件中指定,默认为2 s)时间遍历一次Session列表,如果超时则立即关闭此Session,同时删除与该Session关联的临时节点,并将该事件通知给注册了该节点事件的组件。在HBase集群中,这就意味着如果RegionServer崩溃,则Zookeeper需要在Session超时后才能通知Master,后者才能启动故障恢复。

  而Session的超时时间是这样确定的:HBase默认的Timeout为180 s,在创建Session时会将该参数传递给Server端。最终协商确定的Session的超时时间由Zookeeper的配置参数决定,处于Zookeeper集群minSessionTimeout和maxSessionTimeout之间。默认的minSessionTimeout=2×tickTime(默认2 s)=4 s,maxSessionTimeout=20×tickTime=40 s。不管Client传递的Timeout多大,最终协商确定的Session的Timeout时间都在4~40 s之间,实现代码如下。如果一切按照默认配置,则Session的Timeout为40 s。

  int sessionTimeout=connReq.getTimeOut();

  int minSessionTimeout=getMinSessionTimeout();

  if(sessionTimeout

  sessionTimeout=minSessionTimeout;

  }

  int maxSessionTimeout=getMaxSessionTimeout();

  if(sessionTimeout>maxSessionTimeout){

  sessionTimeout=maxSessionTimeout;

  }

  cnxn.setSessionTimeout(sessionTimeout);

  经以上分析,可以得出以下结论:Session存活意味着RegionServer存活;Session超时意味着RegionServer启动时创建的ZNode节点被删除,也就表明该RegionServer异常

时间: 2024-12-31 08:23:13

RegionServer异常超时检测的相关文章

PHP制作登录异常ip检测功能的实例代码_php实例

使用函数查询数据库遍历实现 /** * 不在常用ip地址登录返回描红信息 * @param string $ip ip地址 * @param string $name 用户名 * @return string */ function errorIp($ip,$name){ $nowip = get_client_ip(); //判断ip和当前ip是否相同,不同则查询数据库对比 if($ip == $nowip ){ //相同直接返回字符串 $str = '<font color="blue

PHP制作登录异常ip检测功能的实例代码

使用函数查询数据库遍历实现 /** * 不在常用ip地址登录返回描红信息 * @param string $ip ip地址 * @param string $name 用户名 * @return string */ function errorIp($ip,$name){ $nowip = get_client_ip(); //判断ip和当前ip是否相同,不同则查询数据库对比 if($ip == $nowip ){ //相同直接返回字符串 $str = '<font color="blue

socket选项自带的TCP异常断开检测

TCP异常断开是指在突然断电,直接拔网线等等情况下,如果通信双方没有进行数据发送通信等处理的时候,无法获知连接已经断开的情况.   在通常的情况下,为了使得socket通信不受操作系统的限制,需要自己在应用层实现心跳包机制,来检查异常断开的情况,一般的方式就是服务器在一段时间没有收到客户端数据包时,定时发包,然后客户端回应,如果已经出现异常断开则服务器接收会返回错误,而客户端在指定时间内没有收到数据包,则主动向服务器发包,得到错误就说明断开.诸如此类的方式就是自己实现的心跳包机制.   但操作系

如何使用1999DARPA数据集来进行网络异常检测算法的研究?

问题描述 各位大家好,最近遇上一棘手的问题,时间也不是很充足.问题关于网络异常入侵检测,使用的是小波技术,听说1999DARPA数据集很好,但不知如何使用?知道的牛人指教一下,麻烦说的详细一点,最好是做过类似的,全部过程,仿真,统计,怎样得出异常,等等,越细越好,小弟实在不懂,在此不甚感激,将献上最多的分 解决方案 解决方案二:帮顶.

网络流量模型的异常检测方法

传统入侵检测的不足传统的入侵检测方法分为两种:基于误用检测(misused-based)方法和基于异常检测(anomaly-based)方法.前者需要攻击样本,通过描述每一种攻击的特殊模式来检测.该方法的查准率很高,并且可提供详细的攻击类型和说明,是目前入侵检测商业产品中使用的主要方法.然而 经过长时间的研究和应用,该方法也暴露出一定的弱点,由于基于特征的入侵检测系统是依靠人为的预先设定报警规则来实现, 所以在面对不断变化的网络攻击时有其本身固 有的缺陷,比如,利用这种方法时需要维护一个昂贵的攻

HBase集群中RegionServer崩溃快速恢复探索

摘 要:本文 主要介绍了HBaseRegionServer与Zookeeper间的交互过程,阐述RegionServer崩溃后的恢复机制,并在此基础上提出了几点优化的恢复措施.优化后的恢复措施大大缩短了RegionServer崩溃后的故障恢复时间和业务中断时间,从而提高了HBase集群的稳定性和可靠性. 0 引言 随着互联网和通信行业的迅猛发展,积聚的各种数据呈急剧增长态势.这些海量数据既蕴含着丰富的信息和资源,又面临着信息有效管理和提取的难题.云计算是分布式处理.并行处理和网格计算的发展,可以

linux网络编程之socket(十一)套接字I/O超时设置方法和用select实现超时

一.使用alarm 函数设置超时 void handler(int sig) { } signal(SIGALRM, handler); alarm(5); int ret = read(fd, buf, sizeof(buf)); if (ret == -1 && errno == EINTR) errno = ETIMEOUT; else if (ret >= 0) alarm(0); ................. 程序大概框架如上所示,如果read在5s内被SIGALRM

Radiflow发布ICS/SCADA新型入侵检测系统

本文讲的是Radiflow发布ICS/SCADA新型入侵检测系统,专注于工业控制系统(ICS)安全解决方案的厂商Radiflow,推出了一款新型入侵检测系统,该系统专门为 Operational Technology (OT) 网络打造. Radiflow表示,这款新型产品可以加强OT网络的可视程度和控制能力,并使网络安全工作大大简化,无需再去雇佣网络安全专家. 尽管工控网络做到了与互联网隔离,但是近年来仍有许多因关键基础设施公司(例如:电力.水利.石油和天然气管道)操作流程的变化而检测出漏洞.

大道至简:智能语义检测的武林

在宗派林立的检测技术武林中,语义化检测引擎近两年已成热门绝学.它的力量在于,让攻击检测更精确.更聪明.更人性化.目前,硬件WAF中,国内已经有数家厂商部署了该技术:云WAF中,阿里云云盾也在上周发布了语义智能检测引擎的选项.   "智能语义检测"这门武艺的江湖故事,要从它的前辈"基于规则的检测引擎"开始说起.   10几年里,基于规则的引擎一统江湖.直到现在,江湖上大多数的WAF是基于规则的WAF.其原理是每一个会话都要经过一系列的安全检测,每一项检测都由一个或多个