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 //kill,RS接受到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时会执行HRegionServer的stop()方法,在stop()方法中重点是设置valotile变量stopped=true,在HRegionServer的run()方法的while循环中,发现stopped=true则退出循环,执行stop工作,比如:关闭RPC服务,关闭Region,关闭compact和split等线程池(最长等待60s),从zk中清除对应的节点等工作。
由于RS中很多线程,包括HRegionServer自身就是一个Runable的实现类,这些线程必须确保执行完成,hbase是通过线程的join()方法实现的,当调用join()方法后,会阻塞退出钩子的线程,直到所有线程都执行完成才会完成真正的退出,操作系统才会完成kill。
关于jvm的退出钩子在使用时需注意两点:
1、在设置stop变量后,需通过join()或者一些方式确保当前任务已经执行完
2、如果线程中有wait() 或者sleep(),则需停止等待或者休眠,避免无谓的时间消耗影响退出速度。
相关推荐
NULL 博文链接:https://bnmnba.iteye.com/blog/2322332
首先,客户端通过配置文件中的Zookeeper地址建立连接,Zookeeper在这里扮演着服务发现的角色。客户端会获取到`/meta-region-server`节点的信息,这个节点包含了HBase元数据表(HBase:meta)所在的RegionServer地址和...
配置`hbase.regionserver.heapsize`和`hbase.master.heapsize`以设定RegionServer和Master的Java堆大小,根据集群规模适当调整。 7. **Region分裂策略** `hbase.hregion.max.filesize`定义一个Region的最大大小,...
主要介绍了HBase RegionServer与Zookeeper间的交互过程,阐述RegionServer崩溃后的恢复机制,并在此基础上提出了几点优化的恢复措施。优化后的恢复措施大大缩短了RegionServer崩溃后的故障恢复时间和业务中断时间,...
删除节点时,需要停止RegionServer,然后将其从集群中删除。 六、增加磁盘 增加磁盘需要使用HBase的RegionServer来实现。增加磁盘时,需要将新的磁盘添加到RegionServer中,然后重新启动RegionServer。 七、遇到...
在 Client 端,设计了与 Master 和 RegionServer 通信的逻辑,确保 SQL 请求能够正确路由和执行。 10. **项目管理**:项目使用 Git 进行版本控制,通过 .gitignore 文件排除不必要的文件,Readme 文件提供项目简介...
Apache ZooKeeper则是一个分布式的、开放源码的协调服务,为分布式应用提供一致性服务。这两个技术在云原生环境中都有着广泛的应用。 Apache Atlas 2.2.0版本的发布,带来了对大数据环境更强大的管理和治理能力。这...
13.hbase的工作机制补充--regionserver数据管理--内存缓存热数据--持久化到hdfs的观
`hbase.regionserver.global.memstore.upperLimit` 和 `hbase.regionserver.global.memstore.lowerLimit` - **含义**:分别定义了RegionServer所有MemStore占用内存的比例上限和下限。 - **默认值**:分别为0.4和...
RegionServer Group即是一组RegionServer的集合,这些RegionServer被配置为共同工作以服务特定的租户。通过将Region分配到特定的RegionServer Group,可以对数据流进行分区,从而达到资源隔离的目的。 在文档中提到...
- **主节点与子节点**:HBase集群包括一个HMaster作为主节点,多个RegionServer作为子节点,以及用于协调服务的ZooKeeper集群。 - **数据分布**:每个RegionServer负责管理一组区域。这些区域可以在物理上均匀地分布...
当RegionServer出现故障时,Zookeeper会通知Master进行Region重新分配,确保服务的连续性。 5. **客户端负载均衡**:客户端在写入数据时,通常会根据RowKey的哈希值选择合适的RegionServer,但这可能导致热点问题。...
3. **ZooKeeper**:协调集群中的各个节点,提供分布式一致性服务,如选举 Master,管理 RegionServer 的注册信息,以及存储表和 Region 的元数据。 4. **Region**:HBase 中数据存储的逻辑分区,每个 Region 包含一...
* hbase-daemon.sh stop regionserver:停止RegionServer进程 * create:创建表 * put:插入数据 * describe:查看表结构 * alter:修改表结构 * disable:禁用表 * drop:删除表 * compact:compact表 * balancer:...
启动master和regionserver服务的命令分别为`bin/hbase-daemon.sh start master`和`bin/hbase-daemon.sh start regionserver`。需要注意的是,如果集群节点之间的时间不同步,可能会导致regionserver启动失败,此时...
Ambari+Bigtop 一站式编译和部署解决方案 https://gitee.com/tt-bigdata/ambari-env
- 如果HDFS、HBase、Hive、Hue的navigator audit功能开启,需分别停止HDFS的namenode、HBase的master和regionserver、Hiveserver2以及Hue的beeswax server,以防止在升级过程中发生数据丢失或不一致。 - 接着,...
8. **Coprocessors**:HBase引入了Coprocessors机制,允许用户在RegionServer端自定义计算逻辑,实现数据过滤、索引等功能,提高性能和数据处理灵活性。 9. **HBase Shell**:HBase自带了一个命令行工具,用户可以...
4. **Zookeeper**:HBase依赖Zookeeper进行协调和服务发现,Zookeeper维护Master和RegionServer的状态信息,确保系统的高可用性。 5. **HDFS存储**:HBase的数据默认存储在HDFS上,提供容错性和高可用性。每个...
4. RegionServer 配置问题:HBase 的 RegionServer 配置不合理,导致某些 RegionServer 的请求数量非常高,而其他的请求数量非常低。解决方法是优化 RegionServer 的配置,确保每个 RegionServer 的请求数量都是均匀...