當前位置: 首頁>>代碼示例>>Java>>正文


Java Admin.mergeRegions方法代碼示例

本文整理匯總了Java中org.apache.hadoop.hbase.client.Admin.mergeRegions方法的典型用法代碼示例。如果您正苦於以下問題:Java Admin.mergeRegions方法的具體用法?Java Admin.mergeRegions怎麽用?Java Admin.mergeRegions使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在org.apache.hadoop.hbase.client.Admin的用法示例。


在下文中一共展示了Admin.mergeRegions方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: execute

import org.apache.hadoop.hbase.client.Admin; //導入方法依賴的package包/類
/**
 * {@inheritDoc}
 */
@Override
public void execute(Admin admin) {
  LOG.info("Executing merging normalization plan: " + this);
  try {
    admin.mergeRegions(firstRegion.getEncodedNameAsBytes(),
      secondRegion.getEncodedNameAsBytes(), true);
  } catch (IOException ex) {
    LOG.error("Error during region merge: ", ex);
  }
}
 
開發者ID:fengchen8086,項目名稱:ditb,代碼行數:14,代碼來源:MergeNormalizationPlan.java

示例2: perform

import org.apache.hadoop.hbase.client.Admin; //導入方法依賴的package包/類
@Override
public void perform() throws Exception {
  HBaseTestingUtility util = context.getHBaseIntegrationTestingUtility();
  Admin admin = util.getHBaseAdmin();

  LOG.info("Performing action: Merge random adjacent regions of table " + tableName);
  List<HRegionInfo> regions = admin.getTableRegions(tableName);
  if (regions == null || regions.size() < 2) {
    LOG.info("Table " + tableName + " doesn't have enough regions to merge");
    return;
  }

  int i = RandomUtils.nextInt(regions.size() - 1);
  HRegionInfo a = regions.get(i++);
  HRegionInfo b = regions.get(i);
  LOG.debug("Merging " + a.getRegionNameAsString() + " and " + b.getRegionNameAsString());

  // Don't try the merge if we're stopping
  if (context.isStopping()) {
    return;
  }

  try {
    admin.mergeRegions(a.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), false);
  } catch (Exception ex) {
    LOG.warn("Merge failed, might be caused by other chaos: " + ex.getMessage());
  }
  if (sleepTime > 0) {
    Thread.sleep(sleepTime);
  }
}
 
開發者ID:fengchen8086,項目名稱:ditb,代碼行數:32,代碼來源:MergeRandomAdjacentRegionsOfTableAction.java

示例3: testAssignmentListener

import org.apache.hadoop.hbase.client.Admin; //導入方法依賴的package包/類
@Test(timeout=60000)
public void testAssignmentListener() throws IOException, InterruptedException {
  AssignmentManager am = TEST_UTIL.getHBaseCluster().getMaster().getAssignmentManager();
  Admin admin = TEST_UTIL.getHBaseAdmin();

  DummyAssignmentListener listener = new DummyAssignmentListener();
  am.registerListener(listener);
  try {
    final String TABLE_NAME_STR = "testtb";
    final TableName TABLE_NAME = TableName.valueOf(TABLE_NAME_STR);
    final byte[] FAMILY = Bytes.toBytes("cf");

    // Create a new table, with a single region
    LOG.info("Create Table");
    TEST_UTIL.createTable(TABLE_NAME, FAMILY);
    listener.awaitModifications(1);
    assertEquals(1, listener.getLoadCount());
    assertEquals(0, listener.getCloseCount());

    // Add some data
    Table table = new HTable(TEST_UTIL.getConfiguration(), TABLE_NAME);
    try {
      for (int i = 0; i < 10; ++i) {
        byte[] key = Bytes.toBytes("row-" + i);
        Put put = new Put(key);
        put.add(FAMILY, null, key);
        table.put(put);
      }
    } finally {
      table.close();
    }

    // Split the table in two
    LOG.info("Split Table");
    listener.reset();
    admin.split(TABLE_NAME, Bytes.toBytes("row-3"));
    listener.awaitModifications(3);
    assertEquals(2, listener.getLoadCount());     // daughters added
    assertEquals(1, listener.getCloseCount());    // parent removed

    // Wait for the Regions to be mergeable
    MiniHBaseCluster miniCluster = TEST_UTIL.getMiniHBaseCluster();
    int mergeable = 0;
    while (mergeable < 2) {
      Thread.sleep(100);
      admin.majorCompact(TABLE_NAME);
      mergeable = 0;
      for (JVMClusterUtil.RegionServerThread regionThread: miniCluster.getRegionServerThreads()) {
        for (Region region: regionThread.getRegionServer().getOnlineRegions(TABLE_NAME)) {
          mergeable += ((HRegion)region).isMergeable() ? 1 : 0;
        }
      }
    }

    // Merge the two regions
    LOG.info("Merge Regions");
    listener.reset();
    List<HRegionInfo> regions = admin.getTableRegions(TABLE_NAME);
    assertEquals(2, regions.size());
    admin.mergeRegions(regions.get(0).getEncodedNameAsBytes(),
      regions.get(1).getEncodedNameAsBytes(), true);
    listener.awaitModifications(3);
    assertEquals(1, admin.getTableRegions(TABLE_NAME).size());
    assertEquals(1, listener.getLoadCount());     // new merged region added
    assertEquals(2, listener.getCloseCount());    // daughters removed

    // Delete the table
    LOG.info("Drop Table");
    listener.reset();
    TEST_UTIL.deleteTable(TABLE_NAME);
    listener.awaitModifications(1);
    assertEquals(0, listener.getLoadCount());
    assertEquals(1, listener.getCloseCount());
  } finally {
    am.unregisterListener(listener);
  }
}
 
開發者ID:fengchen8086,項目名稱:ditb,代碼行數:78,代碼來源:TestAssignmentListener.java

示例4: testSnapshotStateAfterMerge

import org.apache.hadoop.hbase.client.Admin; //導入方法依賴的package包/類
@Test (timeout=300000)
public void testSnapshotStateAfterMerge() throws Exception {
  int numRows = DEFAULT_NUM_ROWS;
  Admin admin = UTIL.getHBaseAdmin();
  // make sure we don't fail on listing snapshots
  SnapshotTestingUtils.assertNoSnapshots(admin);
  // load the table so we have some data
  SnapshotTestingUtils.loadData(UTIL, TABLE_NAME, numRows, TEST_FAM);

  // Take a snapshot
  String snapshotBeforeMergeName = "snapshotBeforeMerge";
  admin.snapshot(snapshotBeforeMergeName, TABLE_NAME, SnapshotDescription.Type.FLUSH);

  // Clone the table
  TableName cloneBeforeMergeName = TableName.valueOf("cloneBeforeMerge");
  admin.cloneSnapshot(snapshotBeforeMergeName, cloneBeforeMergeName);
  SnapshotTestingUtils.waitForTableToBeOnline(UTIL, cloneBeforeMergeName);

  // Merge two regions
  List<HRegionInfo> regions = admin.getTableRegions(TABLE_NAME);
  Collections.sort(regions, new Comparator<HRegionInfo>() {
    public int compare(HRegionInfo r1, HRegionInfo r2) {
      return Bytes.compareTo(r1.getStartKey(), r2.getStartKey());
    }
  });

  int numRegions = admin.getTableRegions(TABLE_NAME).size();
  int numRegionsAfterMerge = numRegions - 2;
  admin.mergeRegions(regions.get(1).getEncodedNameAsBytes(),
      regions.get(2).getEncodedNameAsBytes(), true);
  admin.mergeRegions(regions.get(5).getEncodedNameAsBytes(),
      regions.get(6).getEncodedNameAsBytes(), true);

  // Verify that there's one region less
  waitRegionsAfterMerge(numRegionsAfterMerge);
  assertEquals(numRegionsAfterMerge, admin.getTableRegions(TABLE_NAME).size());

  // Clone the table
  TableName cloneAfterMergeName = TableName.valueOf("cloneAfterMerge");
  admin.cloneSnapshot(snapshotBeforeMergeName, cloneAfterMergeName);
  SnapshotTestingUtils.waitForTableToBeOnline(UTIL, cloneAfterMergeName);

  SnapshotTestingUtils.verifyRowCount(UTIL, TABLE_NAME, numRows);
  SnapshotTestingUtils.verifyRowCount(UTIL, cloneBeforeMergeName, numRows);
  SnapshotTestingUtils.verifyRowCount(UTIL, cloneAfterMergeName, numRows);

  // test that we can delete the snapshot
  UTIL.deleteTable(cloneAfterMergeName);
  UTIL.deleteTable(cloneBeforeMergeName);
}
 
開發者ID:fengchen8086,項目名稱:ditb,代碼行數:51,代碼來源:TestFlushSnapshotFromClient.java

示例5: testTakeSnapshotAfterMerge

import org.apache.hadoop.hbase.client.Admin; //導入方法依賴的package包/類
@Test (timeout=300000)
public void testTakeSnapshotAfterMerge() throws Exception {
  int numRows = DEFAULT_NUM_ROWS;
  Admin admin = UTIL.getHBaseAdmin();
  // make sure we don't fail on listing snapshots
  SnapshotTestingUtils.assertNoSnapshots(admin);
  // load the table so we have some data
  SnapshotTestingUtils.loadData(UTIL, TABLE_NAME, numRows, TEST_FAM);

  // Merge two regions
  List<HRegionInfo> regions = admin.getTableRegions(TABLE_NAME);
  Collections.sort(regions, new Comparator<HRegionInfo>() {
    public int compare(HRegionInfo r1, HRegionInfo r2) {
      return Bytes.compareTo(r1.getStartKey(), r2.getStartKey());
    }
  });

  int numRegions = admin.getTableRegions(TABLE_NAME).size();
  int numRegionsAfterMerge = numRegions - 2;
  admin.mergeRegions(regions.get(1).getEncodedNameAsBytes(),
      regions.get(2).getEncodedNameAsBytes(), true);
  admin.mergeRegions(regions.get(5).getEncodedNameAsBytes(),
      regions.get(6).getEncodedNameAsBytes(), true);

  waitRegionsAfterMerge(numRegionsAfterMerge);
  assertEquals(numRegionsAfterMerge, admin.getTableRegions(TABLE_NAME).size());

  // Take a snapshot
  String snapshotName = "snapshotAfterMerge";
  SnapshotTestingUtils.snapshot(admin, snapshotName, TABLE_NAME.getNameAsString(),
    SnapshotDescription.Type.FLUSH, 3);

  // Clone the table
  TableName cloneName = TableName.valueOf("cloneMerge");
  admin.cloneSnapshot(snapshotName, cloneName);
  SnapshotTestingUtils.waitForTableToBeOnline(UTIL, cloneName);

  SnapshotTestingUtils.verifyRowCount(UTIL, TABLE_NAME, numRows);
  SnapshotTestingUtils.verifyRowCount(UTIL, cloneName, numRows);

  // test that we can delete the snapshot
  UTIL.deleteTable(cloneName);
}
 
開發者ID:fengchen8086,項目名稱:ditb,代碼行數:44,代碼來源:TestFlushSnapshotFromClient.java


注:本文中的org.apache.hadoop.hbase.client.Admin.mergeRegions方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。