3.HRegionServer:管理regions,并向HMaster报告自己状态
3.1 regionserver启动过程
(1)读取一些配置:机器名,端口,客户端重试次数,与master交互间隔,rpc超时
(2)创建Worker线程处理来自master的请求(????)
(3)创建一个HBaseServer的实例提供IPC服务以处理Client的请求
(4)创建HServerInfo实例保持regionserver信息:地址,机器名,监听端口等
(5)创建Flush缓存的线程
(6)创建Compact和Split region的线程
(7)创建归档(roll)HLog的线程
(8)定期检查regions是否需要major compaction线程
(9)regionserver与外部client交互时,会申请一些资源,当外部client失败后需释放这些资源。创建Leases线程来处理这个任务。
(10)创建ZooKeeper实例,以连接zookeeper集群,并增加/hbase/master节点的Watcher
(11)申请一部分heap空间(4个byte数组,每个5M,共20M),保留下来,在发生OOME时再释放以从异常中恢复
(12)启动regionserver并安装shut down hooks(?????????)
3.2 HRegionServer.run()
(1)向master报告自己的状态:reportForDuty()方法
从zookeeper的/hbase/master节点获取master地址,通过HBaseRPC获得HMasterRegionInterface接口实现的代理;
从MemoryMXBean获取内存使用信息,计算其负载,并保存到HServerInfo实例中;
调用HMasterRegionInterface.regionServerStartup(),告诉master该regionserver已启动,
该接口返回一个MapWritable,包含hbase.regionserver.address,fs.default.name和hbase.rootdir等master配置信息,
以更新本地配置(HBASE-1215);
(2)启动一些服务线程
在文件系统根目录下.logs建立commit log HLog的实例;
后台启动归档(roll)HLog的线程,Flush缓存的线程,Compact和Split region的线程,来自master请求的worker线程,检查regions是否需要major compaction线程
启动Leases线程;
启动Jetty Server,处理http请求
(3)当服务线程正常运行(isAlive()),则在hbase.regionserver.msginterval间隔后与master交换信息:
收集regionserver的metrics,包括:HStore,HStoreFile,索引,所有region的内存大小,block缓存的命中率等信息,regionserver负载信息;
通过PRC向master发送信息HMsg,并返回master的指令,指令类型有:stop regionserver,停止服务用户regions,重启等
分享到:
相关推荐
三、HBase源码解析 3.1 数据模型 HBase的数据模型在源码中主要体现在`org.apache.hadoop.hbase.regionserver`包下的`Region`类,它是实际存储数据的单元,包含对行、列的管理。 3.2 操作API 客户端与HBase交互的...
3. **Zookeeper协调**:Zookeeper在HBase中起到关键作用,它负责监控HMaster和HRegionServer的状态,以及在集群中进行配置信息的同步,保证系统的稳定运行。 4. **Region分裂**:随着数据量的增长,单个Region可能...
通过阅读源代码,我们可以深入理解HBase的工作原理,学习其内部的数据模型、数据分布策略、Region分裂和合并、故障恢复机制等核心概念。这对于优化HBase应用性能、解决实际问题以及贡献代码到HBase项目本身都是非常...
《深入理解HBase:源码剖析与测试实践》 HBase,全称为Hadoop Database,是一种基于Apache Hadoop的开源分布式非关系型数据库。它的设计灵感来源于Google的Bigtable,旨在处理大规模数据集,通常在PB级别以上。...
在HBase的分布式架构中,`org.apache.hadoop.hbase.client.HConnectionManager`负责管理客户端与HBase服务器之间的连接,而`org.apache.hadoop.hbase.regionserver.HRegionServer`是处理Region服务的主要组件,它...
源码中对应的实现类是`org.apache.hadoop.hbase.regionserver.HRegionServer`和`org.apache.hadoop.hbase.master.HMaster`。 4. **Region划分**:HBase将表数据划分为多个Region,每个Region包含一个或多个Column ...
《深入剖析HBase源码:理解其核心机制》 HBase,作为一款基于分布式存储的NoSQL数据库,广泛应用于大数据领域。它构建于Hadoop之上,利用HDFS提供高可靠性和高可扩展性。本文将深入探讨HBase的实现原理,特别是其...
2. 源码获取:从Apache官方网站或者通过Git克隆源码仓库,获取HBase 2.0.0.3.0.0.0-1634的源码。 3. 编译过程:进入源码目录,运行`mvn clean install -DskipTests`命令进行编译。这个过程可能需要一段时间,因为...
在研究HBase源码时,我们可以关注以下几个核心概念和组件: 1. **Region服务器**:HBase的主要工作单元,负责存储和处理表的数据。每个Region服务器管理多个Region,Region包含表的一部分行。 2. **Region**:...
2. **HBase架构**:源码中可能包括HMaster、HRegionServer、Zookeeper等核心组件的实现,帮助理解HBase如何进行区域分配、故障恢复和集群管理。 3. **表和列族**:源码可能包含创建、修改和删除表的示例,以及对列...
通过对`HMaster`类的源码阅读,我们可以了解到这些关键功能的具体实现。 其次,RegionServer是HBase的存储和计算单元,它直接与客户端交互,执行数据的读写操作。`HRegionServer`类是其核心,包含了Region的生命...
6. **启动HBase**:执行`start-hbase.sh`命令启动HBase,使用`jps`检查是否成功启动了HMaster和HRegionServer进程。 7. **测试HBase**:使用HBase shell或通过Java API进行简单的增删查改操作,验证HBase安装是否...
3. **下载 HBase**:从官方网站下载 HBase 的二进制包或源码包。 4. **配置 HBase**:配置 HBase 的核心参数,包括 HBase-site.xml、hbase-env.sh 等文件。 5. **启动 HBase**:按照文档指示启动 HBase 服务,包括...
对于深入理解HBase的工作原理,源码阅读是必不可少的。通过源码,我们可以了解到HBase如何处理客户端请求、如何在Region服务器之间分配和迁移数据、以及如何实现分布式协调等核心功能。例如,`HMaster`是HBase的主...
在压缩包“smoketest-hbase-master”中,我们可以推测这是包含HBase冒烟测试源码的主分支。"master"通常指的是开发中的主要分支,意味着这些测试是最新的,反映了当前HBase的主要功能和行为。 HBase的冒烟测试可能...
HBase的安装通常涉及下载源码或二进制包,配置环境变量,初始化HBase集群,以及启动相关服务。简单操作可能包括创建表、插入数据、查询数据、删除数据等基本操作。 【标签】"opencv"表明这个项目可能使用了OpenCV库...
4. 安装HBase集群,启动HMaster和HRegionServer。 5. 安装Solr,注意版本需为5.2.1,解压并配置。 6. 除了这些基础服务,还需要安装MySQL,因为Atlas的配置信息通常存储在MySQL数据库中。 安装完成后,配置Atlas以...
- **HBase**:在HBase中,Zookeeper用来确保集群中只有一个HMaster运行,并且能够感知HRegionServer的在线和离线状态,以及存储访问控制列表等。 #### 六、Zookeeper的特性 - **简洁性**:Zookeeper的API设计非常...