参考:http://iwinit.iteye.com/blog/1811265
HBase的table是该region切分的,client操作一个row的时候,如何知道这个row对应的region是在哪台Region server上呢?这里有个region location过程。主要涉及到2张系统表,-ROOT-,.META.。其结构见图
在zookeeper的/hbase/root-region-server节点中存着-ROOT-表所在的Region Server地址。
-ROOT-表的一个row代表着META的一个region信息,其key的结构是META表名,META表Region的startkey,RegionId。其value的主要保存regioninfo和server信息。ROOT表不能split
.META.表的一个row代表着用户表的一个region信息,其key的结构是其实就是用户表的regionName,用户表名,startKey,RegionId。其value同样保存着regioninfo和server信息。META表可以split,但是一个region默认有128M,可以存上亿个用户表的region信息,所以一般不会split。
其查找过程如下:
1.通过zk getData拿-ROOT-表的location
2.RPC -ROOT-表的rs,getClosestRowBefore,拿row对应的meta表的region location
3.RPC .META.表的某一个region,拿该row在真实table所在的region location
4.RPC对应region
region location需要3次网络IO,为了提升性能,client会cache数据。
LocationCache是一个2级Map,第一级的key是tableName的hash值,第二级的key是starRow,用SoftValueSortedMap包装了TreeMap实现,用软引用实现cache,内存不够时才会回收。Cache里存在META表和用户表的region location信息。
其代码实现如下,0.94版本:
HConnectionManager locateRegion入口
相关推荐
表以定位具体的Region位置。 #### 五、HBase上的MapReduce应用 在HBase上执行批处理作业时,通常采用MapReduce模型。HBase提供了专门的TableInputFormat和TableOutputFormat,使得开发者能够将HBase表作为...
Region Server接收到请求后,会根据RowKey定位到具体的数据Region,并将数据持久化到HDFS上。这里涉及到HBase的Region分裂和合并机制,以确保数据分布的均匀性和高效访问。Region分裂是自动进行的,当一个Region的...
2. **Master Server**:HBase Master主要负责全局的表和Region管理,包括Region的分配、Region Server的监控、表的增删改查以及Region的分裂与合并。它并不直接参与数据的存储和读写操作。 3. **ZooKeeper**:...
8. **故障恢复和高可用性**:HBase利用Zookeeper实现故障检测和恢复,当Region Server失效时,Master Server能够快速重新分配其管理的Region。 9. **监控和调优**:HBase提供丰富的监控指标,如JMX接口和Web UI,...
7. **Region Server**:Region Server是HBase的主要工作节点,负责Region的存储和管理,包括读写操作。 8. **Zookeeper**:Zookeeper是HBase的重要组件,用于协调集群中的节点,如Region Server的位置信息。 ### ...
6. **读写流程**:读操作通常通过行键定位到特定的Region Server,然后在该服务器上查找数据。写操作先写入内存中的MemStore,达到一定阈值后落盘为HFile,最后通过Compaction合并成新的HFile。 7. **故障恢复**:...
运维包括Region调整、负载均衡、性能调优等,HBase提供了丰富的监控指标,如Region Server状态、Region分布、请求延迟等,便于问题排查和性能优化。 通过《Apache HBase Primer》这本书,读者将深入学习HBase的...
- **Region Server**: HBase的数据存储在Region Server上,每个Region Server负责一部分Region,Region是HBase的存储单元。 - **Region**: Region是表逻辑上的分区,随着数据增长,Region会自动分裂。 - **Column...
- `hbase-region-server.jar`:HRegionServer的具体实现。 - `hbase-rest.jar`:提供RESTful API,使得非Java应用也能访问HBase。 - `lib`目录下的各种依赖库,如 ZooKeeper、protobuf 等,这些是HBase运行的基础。 ...
HBase提供了强一致性的读写操作,通过Master节点协调Region Server的分配和Region的分裂。Master节点还负责监控Region Server的状态,以实现故障转移和负载均衡。Region Server则负责实际的数据存储、读写操作以及与...
- **Master Server**:管理Region Server,负责Region的分配、Region Server的监控和故障恢复。 - **Zookeeper**:协调集群状态,确保高可用性。 - **Region**:表被分割成多个Region,每个Region包含一个或多个...
列举了HBase的重要配置参数,如`hbase.rootdir`(HBase元数据的存储位置)、`hbase.cluster.distributed`(是否运行在分布式模式下)、`hbase.regionserver.handler.count`(Region Server处理请求数的线程池大小)...
- **Zookeeper**:协调HBase集群,确保Master的选举和Region的定位。 2. **HBase的数据模型** - **行键(Row Key)**:唯一标识一行数据,决定了数据的物理存储位置和访问效率。 - **列族(Column Family)**:...
2. Zookeeper:Hbase依赖Zookeeper进行协调和管理,包括Master选举、Region Server状态监控和Region定位等关键任务。 3. Master:Hbase Master负责Region的分配和负载均衡,元数据的管理,以及Region Server的监控...
2. **分布式架构**:HBase通过Region Server将数据分布在整个集群上,实现了水平扩展。每个Region Server负责一部分数据,当数据量增长时,可以通过分裂Region来分配负载。 3. **强一致性**:HBase使用ZooKeeper...
HBase的架构包括Region Server、Master Server、ZooKeeper等组件。 1. **Region Server**: 存储和处理表的分区,称为Region,负责数据的读写操作。 2. **Master Server**: 负责管理Region Server,表和Region的分配...
- 包括Client、Zookeeper集群、HBase Master、Region Server集群以及HDFS。 以上就是关于HBase的基础知识,包括其特点、核心概念、安装部署过程、基本使用方法和架构解析。掌握这些内容,可以为进一步深入学习和...
1. **Region服务器(Region Server)**: HBase的数据存储在Region Server上,每个Region Server负责一部分表的存储。 2. **Region划分**: 表会被动态地分割成多个Region,每个Region包含一部分行键范围。 3. **...
1. **HBase架构**:HBase是构建在Hadoop文件系统(HDFS)之上的,其核心架构包括Master节点、Region Server节点以及Zookeeper集群。Master节点负责全局元数据管理,Region Server存储实际的数据,并执行用户请求。...
2. Region服务器:Region服务器负责存储和处理Region,是HBase的主要工作节点。 3. Master服务器:Master负责管理Region服务器,监控其状态,处理Region服务器故障,以及表和Region的元数据操作。 4. ZK协调:HBase...