2.HMaster:实现master的功能
A.负责分配region到regionserver,检测新增或失败的regionserver,与regionserver交互,regionserver间的负载均衡等;
B.处理shcema的变更;
C.实现ZooKeeper的Watcher接口,与zookeeper集群交互
2.1 master启动过程初始化,构造HMaster实例
--minServers=:指定最少的RegionServers数,默认为13,(RegionServer机器不够13如何??)
根据参数hbase.cluster.distributed分local和distribute模式,这里主要考虑distribute模式下:
(1)设置并检查文件系统路径。(checkRootDir方法)
a.如果文件系统处于安全模型,则一直等待直到退出安全模式
b.若root路径不存在则会创建该目录,并将当前hbase的文件格式版本号写入hbase.version中,并再下一次启动是会检查
是否与当前hbase版本支持的文件格式版本一致。
c.检查root Region是否存在,即-ROOT-目录是否存在(root region也是当做一个table来统一处理的)。
不存在,则创建root region和第1个meta region。
root region:regionId=0,tableName=-ROOT-,仅有一个info的Column Family
meta region:regionId=1,tableName=.META.,有一个info和historian两个Column Family
d.将meta做为root region的user region加入其中(有点拗口)。
(2)获取master的地址,并创建一个HBaseServer的实例提供RPC服务
(3)创建一个连接???(HMaster也作为集群的一个客户端,完成schema的变更等功能)
(4)读取classpath下配置的hbase.zookeeper.property.clientPort和hbase.zookeeper.quorum,连接zookeeper集群:创建ZooKeeper实例,并增加Watcher(HMaster)
设置/hbase,/hbase/root-region-server,/hbase/rs,/hbase/master,/hbase/master/shutdown等hbase存储在zookeeper中信息的路径
将master地址写入/hbase/master(若该Znode存在,则等待直到该节点被删除。谁来删???)
(5)建立RegionServerOperation队列
(6)启动ServerManager管理region servers的信息
(7)启动RegionManager分配region到region servers,并管理root,meta等状态
2.2 master执行过程,启动线程,执行Thread.run()
(1)将master加入集群:
从zookeeper的hbase/root-region-server读取root region所在的regionserver;
读取所有regionserver地址,若没有regionserver则可能是一个新启动的集群,调用HLog.splitLog(this.rootdir, logDir, oldLogDir, this.fs, getConfiguration())(还没看明白???);
(2)启动服务线程:
启动RegionManager的root和meta region的扫描线程
初始扫描后,应知道所有region的分配信息;而region每次分裂后也应通知master,并分配region给新的regionserver;
但master可能丢失该split信息,因此周期性的扫描root和meta region以检测丢失的split信息及regionserver的死亡信息
启动一个Jetty Server,处理http请求
启动RPC服务
分享到:
相关推荐
三、HBase源码解析 3.1 数据模型 HBase的数据模型在源码中主要体现在`org.apache.hadoop.hbase.regionserver`包下的`Region`类,它是实际存储数据的单元,包含对行、列的管理。 3.2 操作API 客户端与HBase交互的...
这个压缩包“hbase-1.1.6-bin.tar.gz”包含了HBase 1.1.6版本的源码和可执行文件,是根据《大数据技术原理与应用》第二版教材的要求提供的。在Hadoop的背景下,HBase被广泛用于处理大规模数据,特别是在需要实时读写...
### HBase源码解析与开发实战 #### 一、HBase简介 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了...
通过对HBase 1.2.0源码的阅读,可以深入了解这些机制的实现细节,比如Region分配算法、数据读写的内部流程、Bloom Filter的构建和使用、以及Compaction策略的设定等。这将有助于开发者更好地优化HBase应用,解决实际...
《深入理解HBase:源码剖析与测试实践》 HBase,全称为Hadoop Database,是一种基于Apache Hadoop的开源分布式非关系型数据库。它的设计灵感来源于Google的Bigtable,旨在处理大规模数据集,通常在PB级别以上。...
此外,HBase的Master节点是整个系统的管理者,`org.apache.hadoop.hbase.master.HMaster`类负责Region的分配、RegionServer的监控和故障恢复。通过分析`org.apache.hadoop.hbase.masterAssignment.RegionStates`和`...
源码中对应的实现类是`org.apache.hadoop.hbase.regionserver.HRegionServer`和`org.apache.hadoop.hbase.master.HMaster`。 4. **Region划分**:HBase将表数据划分为多个Region,每个Region包含一个或多个Column ...
《深入剖析HBase源码:理解其核心机制》 HBase,作为一款基于分布式存储的NoSQL数据库,广泛应用于大数据领域。它构建于Hadoop之上,利用HDFS提供高可靠性和高可扩展性。本文将深入探讨HBase的实现原理,特别是其...
通过阅读《HBase实战源码》,读者可以了解到上述组件的实现细节,包括数据存储格式、数据分布策略、并发控制以及各种操作的内部流程。这对于优化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**:...
《深入剖析HBase源码:探索NoSQL数据库的内在魅力》 HBase,作为Apache软件基金会的一款开源分布式列式存储系统,是构建于Hadoop文件系统之上的NoSQL数据库。它设计的目标是处理大规模的数据集,提供高吞吐量的读写...
2. **HBase架构**:源码中可能包括HMaster、HRegionServer、Zookeeper等核心组件的实现,帮助理解HBase如何进行区域分配、故障恢复和集群管理。 3. **表和列族**:源码可能包含创建、修改和删除表的示例,以及对列...
### HBase源码分析 #### 一、HBase性能测试要点与分析 ##### 1.1 测试环境 - **硬件配置**: - 客户端:1台 - RegionServer:5台 - Master:1台 - ZooKeeper:3台 - **软件配置**: - CPU:每台服务器配备8...
要将其与Hadoop和Hbase集成,首先需要从GitHub获取最新版本的Nutch-2.x源码,并根据项目文档编译Nutch。 在`conf/nutch-site.xml`中,配置Nutch的基本参数,如抓取间隔、抓取策略等。还需在`conf/hadoop-site.xml`...
1. 下载HBase的源码或二进制包。 2. 解压到指定目录,例如`/usr/local/hbase`。 3. 配置HBase的环境变量,如`HBASE_HOME`,并将HBase的bin目录添加到`PATH`环境变量中。 4. 修改`conf/hbase-site.xml`配置文件,设置...
通过对`HMaster`类的源码阅读,我们可以了解到这些关键功能的具体实现。 其次,RegionServer是HBase的存储和计算单元,它直接与客户端交互,执行数据的读写操作。`HRegionServer`类是其核心,包含了Region的生命...
- **下载源码包或二进制包**:可以从官方网站下载最新的HBase发行版。 - **配置HBase**:编辑`hbase-site.xml`等配置文件,设置如HDFS地址、Zookeeper服务地址等关键参数。 - **启动HBase**:使用命令行工具启动...