`

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-0.98.6.1-src.zip

    - **RegionServer**:执行HBase的实际存储和计算任务,管理表的多个region。 - **Master Server**:负责region的分配、监控RegionServer的状态以及表和namespace的管理。 - **ZooKeeper**:协调HBase集群,存储元...

    Hbase 官方中文文档

    - 提供了HBase架构的概述,包括各个组件的职责和交互方式。 - 介绍了目录表、Master、RegionServer、HDFS和ZooKeeper等关键组件。 10. 外部APIs部分: - 讨论了HBase的外部APIs,包括支持非Java语言的交互方式,...

    Learning HBase(中文版)

    2. **HBase架构**:详述HBase的分布式架构,包括RegionServer、Master节点、Zookeeper的角色和职责,以及数据分布和负载均衡策略。 3. **数据模型**:解析HBase的列式存储模型,对比传统关系型数据库,阐述其在大...

    HBase Administration Cookbook

    在深入HBase的架构方面,你会学习到Master节点和RegionServer的角色与职责。Master节点负责表的元数据管理、Region分配和集群监控,而RegionServer则是数据存储和处理的主体。理解这些组件的工作原理对于优化HBase...

    HBase 官方文档

    - **RegionServer**:描述 RegionServer 的功能以及它们如何协作以提供服务。 - **分区 (Regions)**:介绍 Region 的概念及其如何被划分。 - **批量加载**:讨论 HBase 支持的批量数据加载方法。 - **HDFS**:说明 ...

    【No0057】HBase源码解析与开发实战.txt

    HBase 是一个适合于非结构化数据存储的数据库,它的目标是提供一个易于构建在 Hadoop 之上的数据表,具有实时读写、随机访问大数据的功能。 #### 二、HBase的核心概念 1. **Region** - Region 是 HBase 中最小的...

    HBase中文API

    - **概述**: 包括Master、RegionServer、Region、ZooKeeper等组件的职责和交互。 10. **外部APIs** - **非Java语言和JVM交互**: 提供REST、Thrift等接口,方便多种语言的开发。 - **REST**: 提供HTTP协议的API,...

    HBase权威指南中文版

    10. **扩展与未来趋势**:HBase社区持续发展,新版本会引入更多功能和改进。了解HBase的最新动态和未来发展方向有助于保持技术领先。 通过阅读《HBase权威指南中文版》,你将能够掌握HBase的基础知识和高级技巧,...

    zookeeper-3.3.6.tar.gz

    在HBase的配置中,Zookeeper的主要职责有以下几点: 1. **元数据存储**:Zookeeper存储了HBase的元数据,如表和列族的信息,RegionServer的位置等,使得客户端能够找到正确的RegionServer进行数据访问。 2. **集群...

    《大数据平台搭建与配置管理》期中试卷及答案.docx

    - **知识点**: HBase中的RegionServer。 - **解析**: RegionServer负责存储和维护分配给它的Region。 39. **Storm实时处理** - **知识点**: Storm的应用领域。 - **解析**: Storm可用于实时处理新数据和流数据...

    2-4+百亿数据处理实践.pdf

    它的结构设计保证了高可用性和可靠性,通过Zookeeper进行集群管理,NameNode负责元数据管理,HMaster处理RegionServer的分配与负载均衡,而DataNode和RegionServer则承担数据存储职责。HBase的强一致性模型确保了...

    大数据技术高频面试题

    3. **HBase的架构与查询优化**:RegionServer的职责,Zookeeper的作用,以及如何设计合理的RowKey以优化查询性能。 4. **Hive的查询优化**:如何通过分区、桶表、物化视图等手段提高查询效率,以及Hive与Hadoop的...

    zookeeper-3.4.5-cdh5.4.2.tar.gz

    在大数据领域,Zookeeper扮演着至关重要的角色,它提供了命名服务、配置管理、集群同步、分布式锁等功能,广泛应用于Hadoop、HBase、Kafka等分布式系统中。 一、Zookeeper的核心概念 1. **节点(Znode)**:...

    大数据 76 道面试题及答案.docx

    HBase的持久化数据是存放在HDFS上的,一个表是划分为很多region的,这些region分布式地存放在很多regionserver上。Region内部还可以划分为store,store内部有memstore和storefile。版本管理:HBase中的数据更新本质...

    《大数据平台搭建与配置管理》期中试题试卷及答案.docx

    ZooKeeper为HBase提供了分布式协调服务,使得HBase能够实现一致性选举、故障恢复等功能。 12. **LSM数据结构** - **知识点**:Log-Structured Merge Tree (LSM Tree)的工作原理。 - **详细解析**:LSM是一种数据...

    大数据课程体系.docx

    - **HBase系统架构**:剖析HBase的架构设计,包括RegionServer、HMaster、ZooKeeper等组件的作用。 - **HBase上的MapReduce**:介绍如何在HBase上运行MapReduce任务,实现大规模数据处理。 - **HBase核心术语介绍**...

    动物园zookeeper

    3. **HBase**:HBase依赖Zookeeper进行RegionServer的监控和Master的选举。 4. **Storm**:Storm集群中的任务分配和故障恢复借助Zookeeper完成。 5. **Distributed Locks**:在分布式系统中,Zookeeper可以作为...

    数据工程师培训题库(四).doc.docx

    10. HMaster在HBase中负责RegionServer的管理,包括Region的分配和迁移,监控节点状态,以及处理元数据更改。B选项错误,因为HMaster并不存储数据元信息,这一职责通常由HBase的MetaRegionServer承担。 这些题目的...

Global site tag (gtag.js) - Google Analytics