当前位置: 首页>>代码示例>>Java>>正文


Java HBaseAdmin.mergeRegions方法代码示例

本文整理汇总了Java中org.apache.hadoop.hbase.client.HBaseAdmin.mergeRegions方法的典型用法代码示例。如果您正苦于以下问题:Java HBaseAdmin.mergeRegions方法的具体用法?Java HBaseAdmin.mergeRegions怎么用?Java HBaseAdmin.mergeRegions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.hadoop.hbase.client.HBaseAdmin的用法示例。


在下文中一共展示了HBaseAdmin.mergeRegions方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: perform

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

  LOG.info("Performing action: Merge random adjacent regions of table " + tableName);
  List<HRegionInfo> regions = admin.getTableRegions(tableNameBytes);
  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());
  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:tenggyut,项目名称:HIndex,代码行数:26,代码来源:MergeRandomAdjacentRegionsOfTableAction.java

示例2: testAssignmentListener

import org.apache.hadoop.hbase.client.HBaseAdmin; //导入方法依赖的package包/类
@Test(timeout=60000)
public void testAssignmentListener() throws IOException, InterruptedException {
  AssignmentManager am = TEST_UTIL.getHBaseCluster().getMaster().getAssignmentManager();
  HBaseAdmin 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
    HTable 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_STR, "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_STR);
      mergeable = 0;
      for (JVMClusterUtil.RegionServerThread regionThread: miniCluster.getRegionServerThreads()) {
        for (HRegion region: regionThread.getRegionServer().getOnlineRegions(TABLE_NAME)) {
          mergeable += 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:tenggyut,项目名称:HIndex,代码行数:78,代码来源:TestAssignmentListener.java

示例3: testCoprocessorHooksInRegionsMerge

import org.apache.hadoop.hbase.client.HBaseAdmin; //导入方法依赖的package包/类
/**
 * Test verifies the hooks in regions merge.
 * @throws Exception
 */
@Test
public void testCoprocessorHooksInRegionsMerge() throws Exception {
  final int NUM_MASTERS = 1;
  final int NUM_RS = 1;
  final String TABLENAME = "testRegionServerObserver";
  final String TABLENAME2 = "testRegionServerObserver_2";
  final byte[] FAM = Bytes.toBytes("fam");

  // Create config to use for this cluster
  Configuration conf = HBaseConfiguration.create();
  conf.setClass("hbase.coprocessor.regionserver.classes", CPRegionServerObserver.class,
    RegionServerObserver.class);

  // Start the cluster
  HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility(conf);
  TEST_UTIL.startMiniCluster(NUM_MASTERS, NUM_RS);
  HBaseAdmin admin = new HBaseAdmin(conf);
  try {
    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();
    HRegionServer regionServer = cluster.getRegionServer(0);
    RegionServerCoprocessorHost cpHost = regionServer.getCoprocessorHost();
    Coprocessor coprocessor = cpHost.findCoprocessor(CPRegionServerObserver.class.getName());
    CPRegionServerObserver regionServerObserver = (CPRegionServerObserver) coprocessor;
    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(TABLENAME));
    desc.addFamily(new HColumnDescriptor(FAM));
    admin.createTable(desc, new byte[][] { Bytes.toBytes("row") });
    desc = new HTableDescriptor(TableName.valueOf(TABLENAME2));
    desc.addFamily(new HColumnDescriptor(FAM));
    admin.createTable(desc, new byte[][] { Bytes.toBytes("row") });
    assertFalse(regionServerObserver.wasRegionMergeCalled());
    List<HRegion> regions = regionServer.getOnlineRegions(TableName.valueOf(TABLENAME));
    admin.mergeRegions(regions.get(0).getRegionInfo().getEncodedNameAsBytes(), regions.get(1)
        .getRegionInfo().getEncodedNameAsBytes(), true);
    int regionsCount = regionServer.getOnlineRegions(TableName.valueOf(TABLENAME)).size();
    while (regionsCount != 1) {
      regionsCount = regionServer.getOnlineRegions(TableName.valueOf(TABLENAME)).size();
      Thread.sleep(1000);
    }
    assertTrue(regionServerObserver.wasRegionMergeCalled());
    assertTrue(regionServerObserver.wasPreMergeCommit());
    assertTrue(regionServerObserver.wasPostMergeCommit());
    assertEquals(regionsCount, 1);
    assertEquals(regionServer.getOnlineRegions(TableName.valueOf(TABLENAME2)).size(), 1);
  } finally {
    if (admin != null) admin.close();
    TEST_UTIL.shutdownMiniCluster();
  }
}
 
开发者ID:tenggyut,项目名称:HIndex,代码行数:53,代码来源:TestRegionServerObserver.java

示例4: testSnapshotStateAfterMerge

import org.apache.hadoop.hbase.client.HBaseAdmin; //导入方法依赖的package包/类
@Test (timeout=300000)
public void testSnapshotStateAfterMerge() throws Exception {
  int numRows = DEFAULT_NUM_ROWS;
  HBaseAdmin 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, STRING_TABLE_NAME, SnapshotDescription.Type.FLUSH);

  // Clone the table
  String cloneBeforeMergeName = "cloneBeforeMerge";
  admin.cloneSnapshot(snapshotBeforeMergeName, cloneBeforeMergeName);
  SnapshotTestingUtils.waitForTableToBeOnline(UTIL, TableName.valueOf(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
  String cloneAfterMergeName = "cloneAfterMerge";
  admin.cloneSnapshot(snapshotBeforeMergeName, cloneAfterMergeName);
  SnapshotTestingUtils.waitForTableToBeOnline(UTIL, TableName.valueOf(cloneAfterMergeName));

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

  // test that we can delete the snapshot
  UTIL.deleteTable(cloneAfterMergeName);
  UTIL.deleteTable(cloneBeforeMergeName);
}
 
开发者ID:tenggyut,项目名称:HIndex,代码行数:51,代码来源:TestFlushSnapshotFromClient.java

示例5: testTakeSnapshotAfterMerge

import org.apache.hadoop.hbase.client.HBaseAdmin; //导入方法依赖的package包/类
@Test (timeout=300000)
public void testTakeSnapshotAfterMerge() throws Exception {
  int numRows = DEFAULT_NUM_ROWS;
  HBaseAdmin 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, STRING_TABLE_NAME,
    SnapshotDescription.Type.FLUSH, 3);

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

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

  // test that we can delete the snapshot
  UTIL.deleteTable(cloneName);
}
 
开发者ID:tenggyut,项目名称:HIndex,代码行数:44,代码来源:TestFlushSnapshotFromClient.java

示例6: testHbckAfterRegionMerge

import org.apache.hadoop.hbase.client.HBaseAdmin; //导入方法依赖的package包/类
@Test
public void testHbckAfterRegionMerge() throws Exception {
  TableName table = TableName.valueOf("testMergeRegionFilesInHdfs");
  HTable meta = null;
  try {
    // disable CatalogJanitor
    TEST_UTIL.getHBaseCluster().getMaster().setCatalogJanitorEnabled(false);
    setupTable(table);
    assertEquals(ROWKEYS.length, countRows());

    // make sure data in regions, if in hlog only there is no data loss
    TEST_UTIL.getHBaseAdmin().flush(table.getName());
    HRegionInfo region1 = tbl.getRegionLocation("A").getRegionInfo();
    HRegionInfo region2 = tbl.getRegionLocation("B").getRegionInfo();

    int regionCountBeforeMerge = tbl.getRegionLocations().size();

    assertNotEquals(region1, region2);

    // do a region merge
    HBaseAdmin admin = TEST_UTIL.getHBaseAdmin();
    admin.mergeRegions(region1.getEncodedNameAsBytes(),
        region2.getEncodedNameAsBytes(), false);

    // wait until region merged
    long timeout = System.currentTimeMillis() + 30 * 1000;
    while (true) {
      if (tbl.getRegionLocations().size() < regionCountBeforeMerge) {
        break;
      } else if (System.currentTimeMillis() > timeout) {
        fail("Time out waiting on region " + region1.getEncodedName()
            + " and " + region2.getEncodedName() + " be merged");
      }
      Thread.sleep(10);
    }

    assertEquals(ROWKEYS.length, countRows());

    HBaseFsck hbck = doFsck(conf, false);
    assertNoErrors(hbck); // no errors

  } finally {
    TEST_UTIL.getHBaseCluster().getMaster().setCatalogJanitorEnabled(true);
    deleteTable(table);
    IOUtils.closeQuietly(meta);
  }
}
 
开发者ID:tenggyut,项目名称:HIndex,代码行数:48,代码来源:TestHBaseFsck.java


注:本文中的org.apache.hadoop.hbase.client.HBaseAdmin.mergeRegions方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。