`

HBase RegionServer功能职责

阅读更多

RegionServer功能职责

租约管理

HBase的租约管理功能主要应用在scan查询上,如果客户端执行scan操作以后,在60秒内没有将Scanner进行关闭,也没有显示的将租约移除,这时查询租约将会过期,RegionServer会强行关闭与之对应的Scanner,来防止无效连接数过多的情况发生。查询租约的过期时间可通过hbase.client.scanner.timeout.period参数来声明,默认为60秒。

在功能实现上租约管理逻辑主要是通过Leases类来封装的,其对内声明了如下数据结构用于存储所有的租约信息(租约信息通过Lease对象来封装)

leases : Map<String, Lease>

同时其还对外声明了createLease和cancelLease方法用于向leases集合中添加/删除租约。Leases线程启动后,其会循环遍历leases集合,一旦发现有租约已经过期,便通知其LeaseListener进行回调处理。而Lease对象主要实现了java的Delayed接口,可通过其getDelay方法来返回当前租约还有多久过期。

Nonce管理

客户端提交RPC申请之后,如果服务端的响应超时,其会将该申请重新发送,直至重试次数达到指定参数值之后,在退出申请逻辑。经过这样处理之后,服务端有可能出现如下问题:

拿append操作举例,原本客户端只想添加一条KeyValue数据到数据库中,但由于服务端的响应超时,会导致append申请重复多次发送,造成的结果是目标数据在服务端被多次添加,出现append操作冗余的情况。

为了防止该情况发生,HBase对外声明了nonce管理功能(通过ServerNonceManager类),客户端的每次申请及重复申请使用同一个nonce进行描述,发送到服务端以后,服务端会首先判断该nonce是否存在,如果不存在则可放心执行nonce所对应操作(如append或increment)。否则需要根据当前nonce的状态进行相应的回调处理:

  • 如果nonce处于WAIT状态,表明该nonce所对应的操作正在被执行,当前线程需等待其执行结束,在根据其执行结果做进一步的处理;

  • 如果nonce处于PROCEED状态,表明该nonce所对应的操作已经被执行,只不过执行结果以失败而告终,因此在这里可重新执行;

  • 如果nonce处于DONT_PROCEED状态,表明该nonce所对应的操作已经成功被执行,这里无需在做处理。

因此,当nonce进入DONT_PROCEED状态以后,所有通过它来执行的操作都将被忽略掉,从而防止了操作冗余的情况发生。需要注意的是当nonce计入DONT_PROCEED或PROCEED状态后,其可存活的时间是受参数控制的(hbase.server.hashNonce.gracePeriod),默认为30分钟。30分钟之后,ServerNonceManager会将该nonce进行删除,通过其cleanUpOldNonces方法。

堆内存监控

  1. 当用于MemStore和BlockCache的堆内存百分比达到80%时,系统将会抛出异常。

    因此在设置相关参数时,应满足如下判断条件:

    hfile.block.cache.size + hbase.regionserver.global.memstore.size <= 0.8

  2. 堆内存的使用空间达到95%时,系统将会打印警告信息

    95%的参数值是通过hbase.heap.occupancy.low_water_mark来设置的,相关警告信息如下:

    heapOccupancyPercent is above heap occupancy alarm watermark

  3. 弹性调整MemStore和BlockCache的空间比例,但总大小不能大于堆内存的80%

    当指定如下4个参数时,RegionServer会根据当前堆内存的使用情况对MemStore和BlockCache的大小做动态调整(通过HeapMemoryTuner来实现)。

    memstore弹性空间:[hbase.regionserver.global.memstore.size.min.range, hbase.regionserver.global.memstore.size.max.range]

    blockcache弹性空间:[hfile.block.cache.size.min.range,hfile.block.cache.size.max.range]

  4. 监控因GC所导致的应用暂停时间

    如果暂停时间大于1秒(jvm.pause.info-threshold.ms参数控制),打印如下输出信息:

    Detected pause in JVM or host machine (eg GC): pause of approximately...

    如果暂停时间大于10秒(jvm.pause.warn-threshold.ms参数控制),同样打印上面的输出信息,只不过信息级别为WARN。具体的监控逻辑可参考org.apache.hadoop.hbase.util.JvmPauseMonitor.Monitor类的实现(HADOOP-9618)。

健康检测

RegionServer进程启动以后,会在后台开启HealthCheckChore线程,默认情况下会每隔10秒钟对RegionServer进行一次健康检测,看其是否处于健康状态,检测周期是通过hbase.node.health.script.frequency参数来声明的。

在检测过程中主要是执行hbase.node.health.script.location参数对应的脚本(示例脚本可参考hbase-examples/src/main/sh/healthcheck/healthcheck.sh),如果脚本在执行过程中出现以下异常情况:

(1)脚本执行的返回值不为0;

(2)脚本执行超时(超时时间通过hbase.node.health.script.timeout参数设置,默认为60秒);

(3)脚本执行过程中,打印了以ERROR开头的文字信息;

则RegionServer的健康检测将以失败而告终。而如果HealthCheckChore线程在循环过程中出现了3次(hbase.node.health.failure.threshold参数控制)健康检测失败的情况,并且前后两次失败的时间间隔小于30秒,其会认为RegionServer没有处于健康状态,会强行将其关闭,并打印如下信息:

The node reported unhealthy {threshold} number of times consecutively.

30秒的时间间隔是通过如下方式计算得出的:

hbase.node.health.script.frequency * hbase.node.health.failure.threshold

 

http://blog.csdn.net/javaman_chen/article/details/47334729

分享到:
评论

相关推荐

    HBase配置

    HBase配置

    hbase性能调优

    hbase.regionserver.handler.count:该设置决定了处理RPC的线程数量,默认值是10,通常可以调大,比如:150,当请求内容很大(上MB,比如大的put、使用缓存的scans)的时候,如果该值设置过大则会占用过多的内存,...

    hbase 启动regionserver日志报错: Wrong FS: hdfs:// .regioninfo, expected: file:///

    NULL 博文链接:https://bnmnba.iteye.com/blog/2322332

    HBase集群中RegionServer崩溃后的快速恢复措施探索

    主要介绍了HBase RegionServer与Zookeeper间的交互过程,阐述RegionServer崩溃后的恢复机制,并在此基础上提出了几点优化的恢复措施。优化后的恢复措施大大缩短了RegionServer崩溃后的故障恢复时间和业务中断时间,...

    Hbase源码笔记资料.zip

    hive编译,jars,HBaseScanner构建.pptx,HBase之RegionServer命令启动流程.pptx,扩展.docx,尚硅谷大数据技术之HBase.xmind,尚硅谷大数据技术之HBase.pdf等等 很全。

    HbaseTemplate 操作hbase

    java 利用 sping-data-hadoop HbaseTemplate 操作hbase find get execute 等方法 可以直接运行

    pinpoint的hbase初始化脚本hbase-create.hbase

    搭建pinpoint需要的hbase初始化脚本hbase-create.hbase

    hbase 分页功能

    hbase 利用pagefilter支持分页功能,可以显示总条目,指定每页个数,获取总页码。

    HBase(hbase-2.4.9-bin.tar.gz)

    HBase(hbase-2.4.9-bin.tar.gz)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System...

    HBase数据库设计.doc

    1. HBase有哪些基本的特征? 1 HBase特征: 1 2. HBase相对于关系数据库能解决的问题是什么? 2 HBase与关系数据的区别? 2 HBase与RDBMS的区别? 2 3. HBase的数据模式是怎么样的?即有哪些元素?如何存储?等 3 1...

    大数据运维技术第7章 HBase组件安装与配置课件.pptx

    HBase的架构是依托于Hadoop的HDFS作为最基本存储基础单元,在HBase的集群中由一个Master主节点管理多个RegionServer,而ZooKeeper进行协调操作。 HBase的体系结构是一个主从式的结构,主节点HMaster在整个集群当中...

    Hbase中文文档

    hbase.regionserver.codecs C.3. LZO C.4. GZIP C.5. SNAPPY C.6. Changing Compression Schemes D. YCSB: The Yahoo! Cloud Serving Benchmark and HBase E. HFile format version 2 E.1. Motivation E.2. HFile ...

    hbase-cdh5:Hbase-cloudera Docker

    CDH版本:cdh5.1 java:jdk7u67(64位) HBase模式:伪分布式裸露端口动物园管理员服务器:2181 hbase-master:65000 hbase-master Web UI:65010 hbase-regionserver:65020 hbase-regionserver Web UI:65030如何...

    hbase-2.3.5单机一键部署工具

    说明:使用外部zookeeper3.4.13之hbase2.3.5一键部署工具,支持部署、启动、停止、清除、连接,支持自定义服务端口,数据存储目录等功能,已在生产环境使用。 Options: deploy.sh build single 构建并启动一个hbase...

    一款强大的HBase表管理系统.zip

    一款强大的HBase表管理系统,目前系统集成的功能有,命名空间管理,表管理,列簇管理,标签机制,快照管理,以及一些常见的统计指标展示等,另外,系统还内置了HBaseSQL的功能,欢迎大家下载。 一款强大的HBase表...

    hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架

    hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架。 针对HBase各版本API(1.x~2.x)间的差异,在其上剥离出了一层统一的抽象。并提供了以类SQL的方式来读写HBase表中的数据。对...

    实验三:熟悉常用的HBase操作

    A.3实验三:熟悉常用的HBase操作 本实验对应第5章的内容。 A.3.1 实验目的 (1)理解HBase在Hadoop体系结构中的角色。(2)熟练使用HBase操作常用的 Shell命令。(3)熟悉HBase操作常用的 Java API。 A.3.2 实验平台 (1...

Global site tag (gtag.js) - Google Analytics