我的生产系统是CDH3
,(旧但仍在使用)
我有几个区域的storefilesAizeMB
超过200K。我想知道我是否可以分割一个区域,同时也可以写入该区域?
当区域变大时,Hbase就是这样做的。但这是一个缓慢的过程,它会影响你的写作表现。
最佳做法是在创建数据库时根据数据模型预拆分区域。下面是一个小代码片段:
HTableDescriptor desc = new HTableDescriptor(tableName); // Tablename tablename
HColumnDescriptor coldef = new HColumnDescriptor(Bytes.toBytes("CON"));
desc.addFamily(coldef); // add the cf to the table
// function to get all regions looking at the data
// it is an array which stocks the prefix of each regions
byte[][] regions = getRegions();
admin.createTable(desc, regions);
答案是否定的。
如果RegionServer未联机,或引发NotServingRegionException,master将区域移动到OFFLINE状态,并将其重新分配给不同的RegionServer。
参见https://hbase.apache.org/book.html#regions.arch.states和https://hbase.apache.org/book.html#arch.region.splits