首页 > 代码库 > 删除hbase的region步骤和代码
删除hbase的region步骤和代码
1、初始化hbase连接
1 Configuration conf = HbaseCommonsUnit.initConfiguration(); 2 Connection conn = ConnectionFactory.createConnection(conf); 3 Table meta_table = conn.getTable(TableName.META_TABLE_NAME); 4 HTable table = new HTable(conf, Bytes.toBytes(tablename)); //HTabel负责跟记录相关的操作如增删改查 5 HBaseAdmin admin = new HBaseAdmin(conf); //HBaseAdmin负责跟表相关的操作如create,drop等
2、删除Hbase表中Region中StartKey为2014000的Region及Meta中Region的元数据
A、先关闭regionserver中的Region
B、删除Region在HDFS上的文件
C、删除Meta表中Region数据记录信息
String startKey = "2014000"; HRegionInfo regionInfo = table.getRegionLocation(startKey).getRegionInfo(); String tableNameDataDir = "/data/default/" + tablename;
FileSystem fs = FileSystem.get(conf);
Path rootDir = new Path(conf.get("hbase.rootdir") + tableNameDataDir);
HRegionFileSystem.deleteRegionFromFileSystem(conf, fs, rootDir, regionInfo);
String regionNameAsString = regionInfo.getRegionNameAsString();
ServerName serverName_temp = StrategyImplementUnit.getServerNameByRegionName(regionNameAsString);//获取region的regionServerName
admin.closeRegion(serverName_temp,regionInfo);
List list = new ArrayList();
Delete d1 = new Delete(regionNameAsString.getBytes());
list.add(d1); meta_table.delete(list); meta_table.close();
3、创建一个新的region,其中Startkey为NULL
1 String new_end_key = "2013222"; 2 TableName tableName = TableName.valueOf(tablename); 3 HRegionInfo regionInfo = new HRegionInfo(tableName, Bytes.toBytes(""), Bytes.toBytes(new_end_key)); 4 HRegionFileSystem.createRegionOnFileSystem(conf, fs, rootDir, regionInfo); 5 6 Put put = MetaTableAccessor.makePutFromRegionInfo(regionInfo); 7 meta_table.put(put); 8 meta_table.close();
4、关闭hbase的连接
if ( table != null) { try { table.close(); } catch (IOException e) { e.printStackTrace(); } }
删除hbase的region步骤和代码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。