多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
Region 可以被拆分,也可以被合并。<mark>不过 Region 的合并(merge)并不是为了性能考虑的,而更多地是出于维护的目的被创造出来的</mark>。 <br/> 什么时候才会用到合并呢? <br/> 比如你删了大量的数据,每个 Region 都变小了,这个时候分成这么多个Region 就有点浪费了,可以把 Region 合并起来,然后可以减少一些 RegionServer服务器来节省成本。<br/> **1. 通过 Merge 类合并 Region**(冷合并) 合并通过使用 org.apache.hadoop.hbase.util.Merge 类来实现,具体做法如下。 比如我想把以下两个 Region 合并: ![](https://img.kancloud.cn/09/c9/09c9caef06bd1a7d5d707349b8e07e87_1552x441.png) (1)Merge合并需要先将HMaster和所有的HRegionServer关闭 ```sql [root@hadoop101 /]# cd /opt/install/hbase/bin [root@hadoop101 bin]# ./stop-hbase.sh ``` (2)关掉Hbase后再执行下面的语句 ```sql -- 注意:RegionName 的 . 符号要带上 [root@hadoop101 bin]# hbase org.apache.hadoop.hbase.util.Merge students students,1608367078659.d01dfa31c9e4400ca37df899c8eb3651. students,aaa,1608367519201.6f28b3c770d954c485b01fe28d2c6f64. ``` (3)启动Hbase并在Hbase Web UI可以看到已经合并了 ```sql [root@hadoop101 bin]# ./start-hbase.sh ``` ![](https://img.kancloud.cn/49/a5/49a5fa52b08c2a4f86bc26f50cd7f146_1773x401.png) 每次 merge 都要关闭整个HBase 这也太麻烦了,好在后来 HBase 又增加了 online_merge。 通过 Merge 类来合并叫**冷合并**,oneline_merge 叫**热合并**。<br/> **2. online_merge**(热合并) 比如我要合并如下两个Region。 ![](https://img.kancloud.cn/29/4d/294d95a83162efd427948a440640b16d_1564x357.png) ```sql -- merge_region后面的两个参数是需要合并的文件的hash值 hbase(main):014:0> merge_region 'c2e1a63a66226bfd9b236f5a34ab3b1c','32665b293d9788fa2431c77d661e9b07' ``` 合并后 ![](https://img.kancloud.cn/2f/6c/2f6c43d51859f7ba7036f7823861b802_1556x329.png)