Hbase扩容原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase扩容原理相关的知识,希望对你有一定的参考价值。

参考技术A Hbase是Hadoop的一个存储组件可以提供低延迟的读写操作,它一般构建在HDFS之上,可以处理海量的数据。Hbase有个很好的特性是可以自动分片,也就是意味着当表的数据量变得很大的时候,系统可以自动的分配这些数据。

Hbase的基本存储单位是Region,Region是表数据的子集,多个Region的数据集合可以组成一张完成的表数据。Region本质上存储的一些排好序的,连续的行数据。最初的时候一张表只有一个Region,当Region变得非常大的时候,Region就会从中间分裂成两个基本等大的Region。

在Hbase中,slave也被称作RegionServer,每个RegionServer负责管理一些Region,同时一个Region只能属于一个RegionServer。

一个RegionServer可以服务一个或多个Region,每个Region在Region Server启动的时候被分配。Master可以决定将一些Region从一个RegionServer中移动到令一个RegionServer里面,以便更好的负载均衡。当某个RegionServer故障的时候,Master也可以将它的Region分配给其他的RegionServer。

Region与RegionServer之间的映射关系存储在Zookeeper中的META表中,通过读取META表,你就可以知道那个Region可以负责处理你的rowkey操作,其实这也代表着在HBase读写操作的时候是不用经过Master节点的,你可以之间联系RegionServer。

如图,在客户端进行scan的时候,它可以之间联系多个RegionServer处理当前的操作。

Meta表是用来跟踪Region的,它包含服务器的名称,Region的名称,表名,还有Region的startkey。通过startkey的范围,客户端就可以定位到当前的key要去哪一个Region了。

客户端在请求过META表之后,一般会将表缓存起来,防止每次操作都去获取。在Region进行分裂的时候,客户端去RegionServer操作Region的时候回返回异常,然后客户端会重新获取最新的META表信息。

Hbase的Java客户端API有两个主要的接口:

通过上面介绍,可以知道HBase虽然是Master/Slave架构的,但是并不是每次操作都经过Master的,读写数据的时候HBase只需要直接联系RegionServer即可。这也是HBase可以“无限扩容”的原因。在吞吐量不够的时候,通过增加RegionServer节点,可以增加吞吐量。

以上是关于Hbase扩容原理的主要内容,如果未能解决你的问题,请参考以下文章

HDFS与HBASE的动态节点的扩容(增删)小白级

HDFS与HBASE的动态节点的扩容(增删)小白级

hadoop/spark/hbase集群 动态缩容/扩容

HashMap原理 — 扩容机制及存取原理

多线程(十六ConcurrentHashMap原理扩容)

Java图解Hashmap扩容原理与多线程扩容成环原因