use of co.cask.cdap.data2.util.hbase.HBaseTableUtil in project cdap by caskdata.
the class DatasetUpgrader method upgradeUserTable.
private void upgradeUserTable(HTableDescriptor desc) throws IOException {
TableId tableId = HTableNameConverter.from(desc);
LOG.info("Upgrading hbase table: {}, desc: {}", tableId, desc);
final boolean supportsIncrement = HBaseTableAdmin.supportsReadlessIncrements(desc);
final boolean transactional = HBaseTableAdmin.isTransactional(desc);
DatasetAdmin admin = new AbstractHBaseDataSetAdmin(tableId, hConf, cConf, hBaseTableUtil, locationFactory) {
@Override
protected CoprocessorJar createCoprocessorJar() throws IOException {
return HBaseTableAdmin.createCoprocessorJarInternal(cConf, coprocessorManager, hBaseTableUtil, transactional, supportsIncrement);
}
@Override
protected boolean needsUpdate(HTableDescriptor tableDescriptor) {
return false;
}
@Override
public void create() throws IOException {
// no-op
throw new UnsupportedOperationException("This DatasetAdmin is only used for upgrade() operation");
}
};
admin.upgrade();
LOG.info("Upgraded hbase table: {}", tableId);
}
use of co.cask.cdap.data2.util.hbase.HBaseTableUtil in project cdap by caskdata.
the class ReplicationStatusTool method getScanBuilder.
private static ScanBuilder getScanBuilder(HBaseTableUtil tableUtil, String rowType) {
ScanBuilder scan = tableUtil.buildScan();
// FIX: get scan based on start row and stop row
// ReplicationStatusKey startKey = new ReplicationStatusKey(Bytes.toBytes(prefix));
// scan.setStartRow(startKey.getKey());
// scan.setStopRow(Bytes.stopKeyForPrefix(startKey.getKey()));
scan.addColumn(Bytes.toBytes(ReplicationConstants.ReplicationStatusTool.TIME_FAMILY), Bytes.toBytes(rowType));
scan.setMaxVersions(1);
return scan;
}
use of co.cask.cdap.data2.util.hbase.HBaseTableUtil in project cdap by caskdata.
the class ReplicationStatusTool method dumpReplicationStateTable.
private static void dumpReplicationStateTable() throws Exception {
System.out.println("\nThis is all the HBase regions on the Cluster:");
HBaseTableUtil tableUtil = new HBaseTableUtilFactory(cConf).get();
HTable hTable = tableUtil.createHTable(hConf, getReplicationStateTableId(tableUtil));
ScanBuilder scan = tableUtil.buildScan();
scan.addColumn(Bytes.toBytes(ReplicationConstants.ReplicationStatusTool.TIME_FAMILY), Bytes.toBytes(ReplicationConstants.ReplicationStatusTool.WRITE_TIME_ROW_TYPE));
scan.addColumn(Bytes.toBytes(ReplicationConstants.ReplicationStatusTool.TIME_FAMILY), Bytes.toBytes(ReplicationConstants.ReplicationStatusTool.REPLICATE_TIME_ROW_TYPE));
Result result;
try (ResultScanner resultScanner = hTable.getScanner(scan.build())) {
while ((result = resultScanner.next()) != null) {
ReplicationStatusKey key = new ReplicationStatusKey(result.getRow());
String rowType = key.getRowType();
String region = key.getRegionName();
UUID rsID = key.getRsID();
Long writeTime = getTimeFromResult(result, ReplicationConstants.ReplicationStatusTool.WRITE_TIME_ROW_TYPE);
Long replicateTime = getTimeFromResult(result, ReplicationConstants.ReplicationStatusTool.REPLICATE_TIME_ROW_TYPE);
System.out.println("Key=>rowType:" + rowType + ":region:" + region + ":RSID:" + rsID + " writeTime:" + writeTime + ":replicateTime:" + replicateTime);
}
} finally {
hTable.close();
}
}
use of co.cask.cdap.data2.util.hbase.HBaseTableUtil in project cdap by caskdata.
the class CoprocessorBuildTool method main.
public static void main(final String[] args) throws ParseException {
Options options = new Options().addOption(new Option("h", "help", false, "Print this usage message.")).addOption(new Option("f", "force", false, "Overwrites any coprocessors that already exist."));
CommandLineParser parser = new BasicParser();
CommandLine commandLine = parser.parse(options, args);
String[] commandArgs = commandLine.getArgs();
// if help is an option, or if there isn't a single 'ensure' command, print usage and exit.
if (commandLine.hasOption("h") || commandArgs.length != 1 || !"check".equalsIgnoreCase(commandArgs[0])) {
HelpFormatter helpFormatter = new HelpFormatter();
helpFormatter.printHelp(CoprocessorBuildTool.class.getName() + " check", "Checks that HBase coprocessors required by CDAP are loaded onto HDFS. " + "If not, the coprocessors are built and placed on HDFS.", options, "");
System.exit(0);
}
boolean overwrite = commandLine.hasOption("f");
CConfiguration cConf = CConfiguration.create();
Configuration hConf = HBaseConfiguration.create();
Injector injector = Guice.createInjector(new ConfigModule(cConf, hConf), // for LocationFactory
new PrivateModule() {
@Override
protected void configure() {
bind(FileContext.class).toProvider(FileContextProvider.class).in(Scopes.SINGLETON);
expose(LocationFactory.class);
}
@Provides
@Singleton
private LocationFactory providesLocationFactory(Configuration hConf, CConfiguration cConf, FileContext fc) {
final String namespace = cConf.get(Constants.CFG_HDFS_NAMESPACE);
if (UserGroupInformation.isSecurityEnabled()) {
return new FileContextLocationFactory(hConf, namespace);
}
return new InsecureFileContextLocationFactory(hConf, namespace, fc);
}
});
try {
SecurityUtil.loginForMasterService(cConf);
} catch (Exception e) {
LOG.error("Failed to login as CDAP user", e);
System.exit(1);
}
LocationFactory locationFactory = injector.getInstance(LocationFactory.class);
HBaseTableUtil tableUtil = new HBaseTableUtilFactory(cConf).get();
CoprocessorManager coprocessorManager = new CoprocessorManager(cConf, locationFactory, tableUtil);
try {
Location location = coprocessorManager.ensureCoprocessorExists(overwrite);
LOG.info("coprocessor exists at {}.", location);
} catch (IOException e) {
LOG.error("Unable to build and upload coprocessor jars.", e);
System.exit(1);
}
}
use of co.cask.cdap.data2.util.hbase.HBaseTableUtil in project cdap by caskdata.
the class MetricsDataMigrator method migrateMetricsTables.
public void migrateMetricsTables(HBaseTableUtil hBaseTableUtil, boolean keepOldData) throws DataMigrationException {
Version cdapVersion = findMetricsTableVersion(new MetricHBaseTableUtil(hBaseTableUtil));
if (cdapVersion == Version.VERSION_2_6_OR_LOWER) {
migrateMetricsTableFromVersion26(cdapVersion);
} else if (cdapVersion == Version.VERSION_2_7) {
migrateMetricsTableFromVersion27(cdapVersion);
} else {
System.out.println("Unsupported version" + cdapVersion);
return;
}
if (!keepOldData) {
System.out.println("Performing cleanup of old metrics tables");
cleanUpOldTables(cdapVersion);
}
}
Aggregations