类org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment源码实例Demo

下面列出了怎么用org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: atlas   文件: HBaseAtlasCoprocessor.java
@Override
public void postModifyTable(ObserverContext<MasterCoprocessorEnvironment> ctx, TableName tableName, TableDescriptor htd) throws IOException {
    if(LOG.isDebugEnabled()) {
        LOG.debug("==> HBaseAtlasCoprocessor.postModifyTable()");
    }

    try {
        activatePluginClassLoader();
        implMasterObserver.postModifyTable(ctx, tableName, htd);
    } finally {
        deactivatePluginClassLoader();
    }

    if(LOG.isDebugEnabled()) {
        LOG.debug("<== HBaseAtlasCoprocessor.postModifyTable()");
    }
}
 
/**
 * Perform the validation checks for a coprocessor to determine if the path
 * is white listed or not.
 * @throws IOException if path is not included in whitelist or a failure
 *                     occurs in processing
 * @param  ctx         as passed in from the coprocessor
 * @param  htd         as passed in from the coprocessor
 */
private static void verifyCoprocessors(ObserverContext<MasterCoprocessorEnvironment> ctx,
    TableDescriptor htd) throws IOException {
  Collection<String> paths =
    ctx.getEnvironment().getConfiguration().getStringCollection(
          CP_COPROCESSOR_WHITELIST_PATHS_KEY);
  for (CoprocessorDescriptor cp : htd.getCoprocessorDescriptors()) {
    if (cp.getJarPath().isPresent()) {
      if (paths.stream().noneMatch(p -> {
        Path wlPath = new Path(p);
        if (validatePath(new Path(cp.getJarPath().get()), wlPath)) {
          LOG.debug(String.format("Coprocessor %s found in directory %s",
            cp.getClassName(), p));
          return true;
        }
        return false;
      })) {
        throw new IOException(String.format("Loading %s DENIED in %s",
          cp.getClassName(), CP_COPROCESSOR_WHITELIST_PATHS_KEY));
      }
    }
  }
}
 
源代码3 项目: atlas   文件: HBaseAtlasCoprocessor.java
@Override
public void postDeleteNamespace(ObserverContext<MasterCoprocessorEnvironment> ctx, String ns) throws IOException {
    if(LOG.isDebugEnabled()) {
        LOG.debug("==> HBaseAtlasCoprocessor.preDeleteNamespace()");
    }

    try {
        activatePluginClassLoader();
        implMasterObserver.postDeleteNamespace(ctx, ns);
    } finally {
        deactivatePluginClassLoader();
    }

    if(LOG.isDebugEnabled()) {
        LOG.debug("<== HBaseAtlasCoprocessor.preDeleteNamespace()");
    }
}
 
源代码4 项目: atlas   文件: HBaseAtlasCoprocessor.java
@Override
public void postCloneSnapshot(ObserverContext<MasterCoprocessorEnvironment> observerContext, SnapshotDescription snapshot, TableDescriptor tableDescriptor) throws IOException {
    if (LOG.isDebugEnabled()) {
        LOG.debug("==> HBaseAtlasCoprocessor.postCloneSnapshot()");
    }

    try {
        activatePluginClassLoader();
        implMasterObserver.postCloneSnapshot(observerContext,snapshot,tableDescriptor);
    } finally {
        deactivatePluginClassLoader();
    }

    if (LOG.isDebugEnabled()) {
        LOG.debug("<== HBaseAtlasCoprocessor.postCloneSnapshot()");
    }
}
 
源代码5 项目: atlas   文件: HBaseAtlasCoprocessor.java
@Override
public void postRestoreSnapshot(ObserverContext<MasterCoprocessorEnvironment> observerContext, SnapshotDescription snapshot, TableDescriptor tableDescriptor) throws IOException {
    if (LOG.isDebugEnabled()) {
        LOG.debug("==> HBaseAtlasCoprocessor.postRestoreSnapshot()");
    }

    try {
        activatePluginClassLoader();
        implMasterObserver.postRestoreSnapshot(observerContext,snapshot,tableDescriptor);
    } finally {
        deactivatePluginClassLoader();
    }

    if (LOG.isDebugEnabled()) {
        LOG.debug("<== HBaseAtlasCoprocessor.postRestoreSnapshot()");
    }
}
 
源代码6 项目: hbase   文件: SnapshotScannerHDFSAclController.java
@Override
public void postCompletedCreateTableAction(ObserverContext<MasterCoprocessorEnvironment> c,
    TableDescriptor desc, RegionInfo[] regions) throws IOException {
  if (needHandleTableHdfsAcl(desc, "createTable " + desc.getTableName())) {
    TableName tableName = desc.getTableName();
    // 1. Create table directories to make HDFS acls can be inherited
    hdfsAclHelper.createTableDirectories(tableName);
    // 2. Add table owner HDFS acls
    String owner =
        desc.getOwnerString() == null ? getActiveUser(c).getShortName() : desc.getOwnerString();
    hdfsAclHelper.addTableAcl(tableName, Sets.newHashSet(owner), "create");
    // 3. Record table owner permission is synced to HDFS in acl table
    SnapshotScannerHDFSAclStorage.addUserTableHdfsAcl(c.getEnvironment().getConnection(), owner,
      tableName);
  }
}
 
源代码7 项目: hbase   文件: VisibilityController.java
@Override
public void start(CoprocessorEnvironment env) throws IOException {
  this.conf = env.getConfiguration();

  authorizationEnabled = AccessChecker.isAuthorizationSupported(conf);
  if (!authorizationEnabled) {
    LOG.warn("The VisibilityController has been loaded with authorization checks disabled.");
  }

  if (HFile.getFormatVersion(conf) < HFile.MIN_FORMAT_VERSION_WITH_TAGS) {
    throw new RuntimeException("A minimum HFile version of " + HFile.MIN_FORMAT_VERSION_WITH_TAGS
      + " is required to persist visibility labels. Consider setting " + HFile.FORMAT_VERSION_KEY
      + " accordingly.");
  }

  // Do not create for master CPs
  if (!(env instanceof MasterCoprocessorEnvironment)) {
    visibilityLabelService = VisibilityLabelServiceManager.getInstance()
        .getVisibilityLabelService(this.conf);
  }
}
 
源代码8 项目: hbase   文件: AccessController.java
@Override
public void postDeleteTable(ObserverContext<MasterCoprocessorEnvironment> c,
    final TableName tableName) throws IOException {
  final Configuration conf = c.getEnvironment().getConfiguration();
  User.runAsLoginUser(new PrivilegedExceptionAction<Void>() {
    @Override
    public Void run() throws Exception {
      try (Table table =
          c.getEnvironment().getConnection().getTable(PermissionStorage.ACL_TABLE_NAME)) {
        PermissionStorage.removeTablePermissions(conf, tableName, table);
      }
      return null;
    }
  });
  zkPermissionWatcher.deleteTableACLNode(tableName);
}
 
源代码9 项目: hbase   文件: AccessController.java
@Override
public void preTruncateTable(ObserverContext<MasterCoprocessorEnvironment> c,
    final TableName tableName) throws IOException {
  requirePermission(c, "truncateTable",
      tableName, null, null, Action.ADMIN, Action.CREATE);

  final Configuration conf = c.getEnvironment().getConfiguration();
  User.runAsLoginUser(new PrivilegedExceptionAction<Void>() {
    @Override
    public Void run() throws Exception {
      List<UserPermission> acls =
          PermissionStorage.getUserTablePermissions(conf, tableName, null, null, null, false);
      if (acls != null) {
        tableAcls.put(tableName, acls);
      }
      return null;
    }
  });
}
 
源代码10 项目: hbase   文件: AccessController.java
@Override
public void preCloneSnapshot(final ObserverContext<MasterCoprocessorEnvironment> ctx,
    final SnapshotDescription snapshot, final TableDescriptor hTableDescriptor)
    throws IOException {
  User user = getActiveUser(ctx);
  if (SnapshotDescriptionUtils.isSnapshotOwner(snapshot, user)
      && hTableDescriptor.getTableName().getNameAsString()
      .equals(snapshot.getTableNameAsString())) {
    // Snapshot owner is allowed to create a table with the same name as the snapshot he took
    AuthResult result = AuthResult.allow("cloneSnapshot " + snapshot.getName(),
      "Snapshot owner check allowed", user, null, hTableDescriptor.getTableName(), null);
    AccessChecker.logResult(result);
  } else {
    accessChecker.requirePermission(user, "cloneSnapshot " + snapshot.getName(), null,
      Action.ADMIN);
  }
}
 
源代码11 项目: hbase   文件: TestSnapshotClientRetries.java
@Override
public void preCloneSnapshot(final ObserverContext<MasterCoprocessorEnvironment> ctx,
    final SnapshotDescription snapshot, final TableDescriptor hTableDescriptor)
    throws IOException {
  if (cloneCount != null) {
    cloneCount.incrementAndGet();
  }
}
 
源代码12 项目: hbase   文件: TestFailedProcCleanup.java
@Override
public void preCreateTable(ObserverContext<MasterCoprocessorEnvironment> env,
    TableDescriptor desc, RegionInfo[] regions) throws IOException {

  if (desc.getTableName().equals(TABLE)) {
    throw new AccessDeniedException("Don't allow creation of table");
  }
}
 
源代码13 项目: atlas   文件: HBaseAtlasCoprocessor.java
@Override
public void postCreateTable(ObserverContext<MasterCoprocessorEnvironment> observerContext, TableDescriptor tableDescriptor, RegionInfo[] hRegionInfos) throws IOException {
    LOG.info("==> HBaseAtlasCoprocessor.postCreateTable()");

    hbaseAtlasHook.sendHBaseTableOperation(tableDescriptor, null, HBaseAtlasHook.OPERATION.CREATE_TABLE, observerContext);
    if (LOG.isDebugEnabled()) {
        LOG.debug("<== HBaseAtlasCoprocessor.postCreateTable()");
    }
}
 
源代码14 项目: atlas   文件: HBaseAtlasCoprocessor.java
@Override
public void postModifyTable(ObserverContext<MasterCoprocessorEnvironment> observerContext, TableName tableName, TableDescriptor tableDescriptor) throws IOException {
    LOG.info("==> HBaseAtlasCoprocessor.postModifyTable()");
    hbaseAtlasHook.sendHBaseTableOperation(tableDescriptor, tableName, HBaseAtlasHook.OPERATION.ALTER_TABLE, observerContext);
    if (LOG.isDebugEnabled()) {
        LOG.debug("<== HBaseAtlasCoprocessor.postModifyTable()");
    }
}
 
源代码15 项目: atlas   文件: HBaseAtlasCoprocessor.java
@Override
public void postCreateNamespace(ObserverContext<MasterCoprocessorEnvironment> observerContext, NamespaceDescriptor namespaceDescriptor) throws IOException {
    LOG.info("==> HBaseAtlasCoprocessor.postCreateNamespace()");

    hbaseAtlasHook.sendHBaseNameSpaceOperation(namespaceDescriptor, null, HBaseAtlasHook.OPERATION.CREATE_NAMESPACE, observerContext);

    if (LOG.isDebugEnabled()) {
        LOG.debug("<== HBaseAtlasCoprocessor.postCreateNamespace()");
    }
}
 
源代码16 项目: atlas   文件: HBaseAtlasCoprocessor.java
@Override
public void postDeleteNamespace(ObserverContext<MasterCoprocessorEnvironment> observerContext, String s) throws IOException {
    LOG.info("==> HBaseAtlasCoprocessor.postDeleteNamespace()");

    hbaseAtlasHook.sendHBaseNameSpaceOperation(null, s, HBaseAtlasHook.OPERATION.DELETE_NAMESPACE, observerContext);

    if (LOG.isDebugEnabled()) {
        LOG.debug("==> HBaseAtlasCoprocessor.postDeleteNamespace()");
    }
}
 
源代码17 项目: hbase   文件: SecureTestUtil.java
@Override
public void postCompletedDeleteTableAction(
    final ObserverContext<MasterCoprocessorEnvironment> ctx,
    final TableName tableName) throws IOException {
  // the AccessController test, some times calls only and directly the
  // postCompletedDeleteTableAction()
  if (tableDeletionLatch != null) {
    tableDeletionLatch.countDown();
  }
}
 
源代码18 项目: hbase   文件: TestAsyncAdminBuilder.java
@Override
public void preGetNamespaceDescriptor(ObserverContext<MasterCoprocessorEnvironment> ctx,
    String namespace) throws IOException {
  if (retryNum.getAndIncrement() < DEFAULT_RETRIES_NUMBER) {
    throw new IOException("call fail");
  }
}
 
源代码19 项目: hbase   文件: SnapshotScannerHDFSAclController.java
@Override
public void postCompletedSnapshotAction(ObserverContext<MasterCoprocessorEnvironment> c,
    SnapshotDescription snapshot, TableDescriptor tableDescriptor) throws IOException {
  if (needHandleTableHdfsAcl(tableDescriptor, "snapshot " + snapshot.getName())) {
    // Add HDFS acls of users with table read permission to snapshot files
    hdfsAclHelper.snapshotAcl(snapshot);
  }
}
 
源代码20 项目: hbase   文件: TestAsyncAdminBuilder.java
@Override
public void preGetNamespaceDescriptor(ObserverContext<MasterCoprocessorEnvironment> ctx,
    String namespace) throws IOException {
  Threads.sleep(DEFAULT_RPC_TIMEOUT / 2);
  if (sleepTime.addAndGet(DEFAULT_RPC_TIMEOUT / 2) < DEFAULT_OPERATION_TIMEOUT) {
    throw new IOException("call fail");
  }
}
 
源代码21 项目: phoenix   文件: IndexMasterObserver.java
@Override
public void postDeleteTableHandler(ObserverContext<MasterCoprocessorEnvironment> ctx,
        TableName tableName) throws IOException {
    if (balancer != null && balancer.isTableColocated(tableName)) {
        balancer.removeTablesFromColocation(tableName);
    }
}
 
源代码22 项目: hbase   文件: TestAccessController2.java
@Test
public void testCoprocessorLoading() throws Exception {
  MasterCoprocessorHost cpHost =
      TEST_UTIL.getMiniHBaseCluster().getMaster().getMasterCoprocessorHost();
  cpHost.load(MyAccessController.class, Coprocessor.PRIORITY_HIGHEST, conf);
  AccessController ACCESS_CONTROLLER = cpHost.findCoprocessor(MyAccessController.class);
  MasterCoprocessorEnvironment CP_ENV = cpHost.createEnvironment(
    ACCESS_CONTROLLER, Coprocessor.PRIORITY_HIGHEST, 1, conf);
  RegionServerCoprocessorHost rsHost = TEST_UTIL.getMiniHBaseCluster().getRegionServer(0)
      .getRegionServerCoprocessorHost();
  RegionServerCoprocessorEnvironment RSCP_ENV = rsHost.createEnvironment(
    ACCESS_CONTROLLER, Coprocessor.PRIORITY_HIGHEST, 1, conf);
}
 
源代码23 项目: hbase   文件: TestBackupDeleteWithFailures.java
@Override
public void preDeleteSnapshot(ObserverContext<MasterCoprocessorEnvironment> ctx,
    SnapshotDescription snapshot) throws IOException {
  if (failures.contains(Failure.PRE_DELETE_SNAPSHOT_FAILURE)) {
    throw new IOException("preDeleteSnapshot");
  }
}
 
源代码24 项目: hbase   文件: TestBackupDeleteWithFailures.java
@Override
public void postDeleteSnapshot(ObserverContext<MasterCoprocessorEnvironment> ctx,
    SnapshotDescription snapshot) throws IOException {
  if (failures.contains(Failure.POST_DELETE_SNAPSHOT_FAILURE)) {
    throw new IOException("postDeleteSnapshot");
  }
}
 
源代码25 项目: hbase   文件: TestMasterAbortWhileMergingTable.java
@Override
public void preMergeRegionsCommitAction(
    ObserverContext<MasterCoprocessorEnvironment> ctx,
    RegionInfo[] regionsToMerge, List<Mutation> metaEntries) {
  mergeCommitArrive.countDown();
  LOG.error("mergeCommitArrive countdown");
}
 
源代码26 项目: hbase   文件: TestNamespaceAuditor.java
@Override
public void preCreateTableAction(ObserverContext<MasterCoprocessorEnvironment> ctx,
    TableDescriptor desc, RegionInfo[] regions) throws IOException {
  if (throwExceptionInPreCreateTableAction) {
    throw new IOException("Throw exception as it is demanded.");
  }
}
 
源代码27 项目: hbase   文件: SnapshotScannerHDFSAclController.java
@Override
public void postRevoke(ObserverContext<MasterCoprocessorEnvironment> c,
    UserPermission userPermission) throws IOException {
  if (checkInitialized("revoke " + userPermission)) {
    try (Table aclTable =
        c.getEnvironment().getConnection().getTable(PermissionStorage.ACL_TABLE_NAME)) {
      String userName = userPermission.getUser();
      Configuration conf = c.getEnvironment().getConfiguration();
      switch (userPermission.getAccessScope()) {
        case GLOBAL:
          UserPermission userGlobalPerm = getUserGlobalPermission(conf, userName);
          if (userGlobalPerm == null || !hdfsAclHelper.containReadAction(userGlobalPerm)) {
            removeUserGlobalHdfsAcl(aclTable, userName, userPermission);
          }
          break;
        case NAMESPACE:
          NamespacePermission nsPerm = (NamespacePermission) userPermission.getPermission();
          UserPermission userNsPerm =
              getUserNamespacePermission(conf, userName, nsPerm.getNamespace());
          if (userNsPerm == null || !hdfsAclHelper.containReadAction(userNsPerm)) {
            removeUserNamespaceHdfsAcl(aclTable, userName, nsPerm.getNamespace(), userPermission);
          }
          break;
        case TABLE:
          TablePermission tPerm = (TablePermission) userPermission.getPermission();
          if (needHandleTableHdfsAcl(tPerm)) {
            TableName tableName = tPerm.getTableName();
            UserPermission userTablePerm = getUserTablePermission(conf, userName, tableName);
            if (userTablePerm == null || !hdfsAclHelper.containReadAction(userTablePerm)) {
              removeUserTableHdfsAcl(aclTable, userName, tableName, userPermission);
            }
          }
          break;
        default:
          throw new IllegalArgumentException(
              "Illegal user permission scope " + userPermission.getAccessScope());
      }
    }
  }
}
 
源代码28 项目: hbase   文件: AccessController.java
@Override
public TableDescriptor preModifyTable(ObserverContext<MasterCoprocessorEnvironment> c,
    TableName tableName, TableDescriptor currentDesc, TableDescriptor newDesc)
    throws IOException {
  // TODO: potentially check if this is a add/modify/delete column operation
  requirePermission(c, "modifyTable", tableName, null, null, Action.ADMIN, Action.CREATE);
  return newDesc;
}
 
源代码29 项目: hbase   文件: AccessController.java
@Override
public void preDisableTable(ObserverContext<MasterCoprocessorEnvironment> c, TableName tableName)
    throws IOException {
  if (Bytes.equals(tableName.getName(), PermissionStorage.ACL_GLOBAL_NAME)) {
    // We have to unconditionally disallow disable of the ACL table when we are installed,
    // even if not enforcing authorizations. We are still allowing grants and revocations,
    // checking permissions and logging audit messages, etc. If the ACL table is not
    // available we will fail random actions all over the place.
    throw new AccessDeniedException("Not allowed to disable " + PermissionStorage.ACL_TABLE_NAME
        + " table with AccessController installed");
  }
  requirePermission(c, "disableTable",
      tableName, null, null, Action.ADMIN, Action.CREATE);
}
 
源代码30 项目: hbase   文件: TestEnableTable.java
@Override
public void postCompletedDeleteTableAction(
    final ObserverContext<MasterCoprocessorEnvironment> ctx,
    final TableName tableName)
throws IOException {
  // the AccessController test, some times calls only and directly the postDeleteTableHandler()
  if (tableDeletionLatch != null) {
    tableDeletionLatch.countDown();
  }
}
 
 类所在包
 同包方法