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方法来返回当前租约还有多久过期。
客户端提交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方法。
-
当用于MemStore和BlockCache的堆内存百分比达到80%时,系统将会抛出异常。
因此在设置相关参数时,应满足如下判断条件:
hfile.block.cache.size + hbase.regionserver.global.memstore.size <= 0.8
-
堆内存的使用空间达到95%时,系统将会打印警告信息
95%的参数值是通过hbase.heap.occupancy.low_water_mark来设置的,相关警告信息如下:
heapOccupancyPercent is above heap occupancy alarm watermark
-
弹性调整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]
-
监控因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
相关推荐
- **RegionServer**:执行HBase的实际存储和计算任务,管理表的多个region。 - **Master Server**:负责region的分配、监控RegionServer的状态以及表和namespace的管理。 - **ZooKeeper**:协调HBase集群,存储元...
- 提供了HBase架构的概述,包括各个组件的职责和交互方式。 - 介绍了目录表、Master、RegionServer、HDFS和ZooKeeper等关键组件。 10. 外部APIs部分: - 讨论了HBase的外部APIs,包括支持非Java语言的交互方式,...
2. **HBase架构**:详述HBase的分布式架构,包括RegionServer、Master节点、Zookeeper的角色和职责,以及数据分布和负载均衡策略。 3. **数据模型**:解析HBase的列式存储模型,对比传统关系型数据库,阐述其在大...
在深入HBase的架构方面,你会学习到Master节点和RegionServer的角色与职责。Master节点负责表的元数据管理、Region分配和集群监控,而RegionServer则是数据存储和处理的主体。理解这些组件的工作原理对于优化HBase...
- **RegionServer**:描述 RegionServer 的功能以及它们如何协作以提供服务。 - **分区 (Regions)**:介绍 Region 的概念及其如何被划分。 - **批量加载**:讨论 HBase 支持的批量数据加载方法。 - **HDFS**:说明 ...
HBase 是一个适合于非结构化数据存储的数据库,它的目标是提供一个易于构建在 Hadoop 之上的数据表,具有实时读写、随机访问大数据的功能。 #### 二、HBase的核心概念 1. **Region** - Region 是 HBase 中最小的...
- **Master服务**:探讨Master服务的功能与职责。 - **RegionServer服务**:解释RegionServer的服务机制。 - **Region**:介绍Region的概念及其在HBase中的作用。 - **批量加载(Bulk Loading)**:说明如何批量导入...
- **概述**: 包括Master、RegionServer、Region、ZooKeeper等组件的职责和交互。 10. **外部APIs** - **非Java语言和JVM交互**: 提供REST、Thrift等接口,方便多种语言的开发。 - **REST**: 提供HTTP协议的API,...
10. **扩展与未来趋势**:HBase社区持续发展,新版本会引入更多功能和改进。了解HBase的最新动态和未来发展方向有助于保持技术领先。 通过阅读《HBase权威指南中文版》,你将能够掌握HBase的基础知识和高级技巧,...
在HBase的配置中,Zookeeper的主要职责有以下几点: 1. **元数据存储**:Zookeeper存储了HBase的元数据,如表和列族的信息,RegionServer的位置等,使得客户端能够找到正确的RegionServer进行数据访问。 2. **集群...
- **知识点**: HBase中的RegionServer。 - **解析**: RegionServer负责存储和维护分配给它的Region。 39. **Storm实时处理** - **知识点**: Storm的应用领域。 - **解析**: Storm可用于实时处理新数据和流数据...
在安装HBase时,需要修改hbase-env.sh、RegionServer和hbase-site.xml配置文件。之后,分发配置到集群节点,启动HBase服务。 8. Hive安装: - Hive提供了一种用于管理大规模数据的SQL查询语言(HiveQL)。安装Hive...
它的结构设计保证了高可用性和可靠性,通过Zookeeper进行集群管理,NameNode负责元数据管理,HMaster处理RegionServer的分配与负载均衡,而DataNode和RegionServer则承担数据存储职责。HBase的强一致性模型确保了...
3. **HBase的架构与查询优化**:RegionServer的职责,Zookeeper的作用,以及如何设计合理的RowKey以优化查询性能。 4. **Hive的查询优化**:如何通过分区、桶表、物化视图等手段提高查询效率,以及Hive与Hadoop的...
在大数据领域,Zookeeper扮演着至关重要的角色,它提供了命名服务、配置管理、集群同步、分布式锁等功能,广泛应用于Hadoop、HBase、Kafka等分布式系统中。 一、Zookeeper的核心概念 1. **节点(Znode)**:...
HBase的持久化数据是存放在HDFS上的,一个表是划分为很多region的,这些region分布式地存放在很多regionserver上。Region内部还可以划分为store,store内部有memstore和storefile。版本管理:HBase中的数据更新本质...
ZooKeeper为HBase提供了分布式协调服务,使得HBase能够实现一致性选举、故障恢复等功能。 12. **LSM数据结构** - **知识点**:Log-Structured Merge Tree (LSM Tree)的工作原理。 - **详细解析**:LSM是一种数据...
- **HBase系统架构**:剖析HBase的架构设计,包括RegionServer、HMaster、ZooKeeper等组件的作用。 - **HBase上的MapReduce**:介绍如何在HBase上运行MapReduce任务,实现大规模数据处理。 - **HBase核心术语介绍**...
3. **HBase**:HBase依赖Zookeeper进行RegionServer的监控和Master的选举。 4. **Storm**:Storm集群中的任务分配和故障恢复借助Zookeeper完成。 5. **Distributed Locks**:在分布式系统中,Zookeeper可以作为...
10. HMaster在HBase中负责RegionServer的管理,包括Region的分配和迁移,监控节点状态,以及处理元数据更改。B选项错误,因为HMaster并不存储数据元信息,这一职责通常由HBase的MetaRegionServer承担。 这些题目的...