• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > RegionServer功能职责,regionserver职责

RegionServer功能职责,regionserver职责

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含regionserver,hbase regionserver,region,region是什么意思,currentregion等服务器相关知识,网友希望可以进行参考

RegionServer功能职责,regionserver职责



Table of Contents

RegionServer功能职责
租约管理
Nonce管理
堆内存监控
健康检测

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • RegionServer功能职责,regionserver职责
  • HBase RegionServer详解(未完),hbaseregionserver

相关文章

  • HDFS概念详解—块,hdfs详解
  • kafka 效率优化,kafka优化
  • Elasticsearch之Nested Object Mapping,elasticsearch
  • HDFS 异常,HDFS
  • The server has either erred or is incapable of performing the requested operation. (HTTP 500),erredincapable
  • 基于反射实现自动化restful开发,自动化restful开发
  • Linux IRQ Affinity,linuxirqaffinity
  • 孙其功陪你学之——Spark 正则化和SparkSQL,孙其功sparksql
  • 大数据的两种处理方式,数据两种处理方式
  • Hadoop之——有趣问答(一),hadoop问答

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • [Hive]Hive调优:让任务并行执行,hive调优
    • storm与hadoop的对比,stormhadoop
    • Hadoop之——重新格式化hdfs系统的方法,hadoop格式化hdfs
    • 超级权限容器,权限容器
    • 博文点评后的一点闲扯,博文点评闲扯
    • hadoop中NameNode、DataNode和Client三者之间协作关系及通信方式介绍,hadoopnamenode
    • Power8伴随云计算横空出世,power8伴随横空出世
    • Namespace:Openstack的网络实现,namespaceopenstack
    • 在Ubuntu 14.04安装和使用Docker,14.04docker
    • CloudStack VM运行状态的监控-Management,cloudstack系统vm

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有