`
无尘道长
  • 浏览: 157799 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

停止RegionServer服务的大致逻辑

阅读更多

hbase-daemon.sh中停止RS的脚本如下:

if [ -f $pid ]; then

      # kill -0 == see if the PID exists

      if kill -0 `cat $pid` > /dev/null 2>&1; then //判断进程是否存在

        echo -n stopping $command

        echo "`date` Terminating $command" >> $loglog

        kill `cat $pid` > /dev/null 2>&1  //killRS接受到stop信号,开始处理stop工作

        while kill -0 `cat $pid` > /dev/null 2>&1; do //等待RS进程退出,退出前每隔1秒打印一个”.”

          echo -n "."

          sleep 1;

        done

        rm $pid

        echo

      else

        retval=$?

        echo no $command to stop because kill -0 of pid `cat $pid` failed with status $retval

      fi

    else

      echo no $command to stop because no pid file $pid

    fi

    ;;

 

在启动RS时会使用HRegionServer对象通过Runable.addShutdownHook()方法注册一个jvm退出钩子,当RS进程被非强制kill时会执行HRegionServerstop()方法,在stop()方法中重点是设置valotile变量stopped=true,在HRegionServerrun()方法的while循环中,发现stopped=true则退出循环,执行stop工作,比如:关闭RPC服务,关闭Region,关闭compactsplit等线程池(最长等待60s),从zk中清除对应的节点等工作。

由于RS中很多线程,包括HRegionServer自身就是一个Runable的实现类,这些线程必须确保执行完成,hbase是通过线程的join()方法实现的,当调用join()方法后,会阻塞退出钩子的线程,直到所有线程都执行完成才会完成真正的退出,操作系统才会完成kill

关于jvm的退出钩子在使用时需注意两点:

    1、在设置stop变量后,需通过join()或者一些方式确保当前任务已经执行完

    2、如果线程中有wait() 或者sleep(),则需停止等待或者休眠,避免无谓的时间消耗影响退出速度。

分享到:
评论

相关推荐

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

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

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

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

    13.hbase的工作机制补充--regionserver数据管理--内存缓存热数据--持久化到hdfs的观察.mp4

    13.hbase的工作机制补充--regionserver数据管理--内存缓存热数据--持久化到hdfs的观

    hbase性能调优

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

    HBase配置

    HBase配置

    深入理解HBase的系统架构

    其中Regionserver负责数据的读写服务。用户通过沟通Regionserver来实现对数据的访问。HBaseHMaster负责Region的分配及数据库的创建和删除等操作。ZooKeeper作为HDFS的一部分,负责维护集群的状态(某台服务器是否...

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

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

    apache-atlas-2.2.0-server.tar.gz

    apache-atlas-2.2.0-server.tar.gz

    深入了解HBase架构

    从物理结构上讲,HBase由三种类型的服务器构成主从式架构。RegionServers为数据的读取和写入提供...RegionServer和HDfsDataNode并置在一起,这使得RegionServers所服务的数据具有数据局部性(使数据接近需要的位置)。

    CDH5维护日志,集群查看1

    从regionserverweb页面可以看到block cache的情况:1.1.3.3 读写请求数通过读写请求数可以大概看出每台regionServer的压力

    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如何...

    zwc233#LargeScaleSystem#region_server通信格式1

    创建表​ Master 发送命令给 RegionServer​ @后面的ip为127.0.0.1 则表示暂时不创建副本create table [tableNa

    hadoop-管理

    ./hbase-deamon.sh start zookeeper//只针对有zookeeper的regionserver而且是机子需要重启的情况 5.处理hbase的master宕机的办法 ./hbase-daemon.sh start master ./hbase-daemon.sh start zookeeper//可选 6.完全...

    hbase-hbck2-1.0.0.jar

    Q:如果一个region即不在META表中,又不在hdfs上面,但是在regionserver的online region集合中 A:加上选项 -fixAssignments 解决 Q:如果一个region在META表中,并且在regionserver的online region集合中,但是...

    HBase核心模块介绍及基本概念介绍(HBase模式设计)

    Client是整个HBase系统的入口客户端使用RPC协议与HMaster和RegionServer进行通信对于管理类(表的增删)操作,Client与HMaster进行RPC通信对于数据读写类操作Client与RegionServer进行RPC交互客户端可以是多个,也...

Global site tag (gtag.js) - Google Analytics