Search in sources :

Example 6 with MetadataDao

use of com.facebook.presto.raptor.metadata.MetadataDao in project presto by prestodb.

the class ShardOrganizationManager method runOrganization.

private void runOrganization(long tableId) {
    Set<ShardMetadata> shardMetadatas = shardManager.getNodeShards(currentNodeIdentifier, tableId);
    Table tableInfo = metadataDao.getTableInformation(tableId);
    Set<ShardMetadata> filteredShards = shardMetadatas.stream().filter(shard -> !organizer.inProgress(shard.getShardUuid())).collect(toSet());
    Collection<ShardIndexInfo> indexInfos = getOrganizationEligibleShards(dbi, metadataDao, tableInfo, filteredShards, true);
    Set<OrganizationSet> organizationSets = createOrganizationSets(tableInfo, indexInfos);
    if (organizationSets.isEmpty()) {
        return;
    }
    log.info("Created %s organization set(s) from %s shards for table ID %s", organizationSets.size(), filteredShards.size(), tableId);
    long lastStartTime = System.currentTimeMillis();
    tablesInProgress.add(tableId);
    ImmutableList.Builder<CompletableFuture<?>> futures = ImmutableList.builder();
    for (OrganizationSet organizationSet : organizationSets) {
        futures.add(organizer.enqueue(organizationSet));
    }
    allAsList(futures.build()).whenComplete((value, throwable) -> {
        tablesInProgress.remove(tableId);
        organizerDao.updateLastStartTime(currentNodeIdentifier, tableId, lastStartTime);
    });
}
Also used : IDBI(org.skife.jdbi.v2.IDBI) MoreFutures.allAsList(io.airlift.concurrent.MoreFutures.allAsList) Logger(io.airlift.log.Logger) ForMetadata(com.facebook.presto.raptor.metadata.ForMetadata) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) CompletableFuture(java.util.concurrent.CompletableFuture) MINUTES(java.util.concurrent.TimeUnit.MINUTES) Duration(io.airlift.units.Duration) Inject(javax.inject.Inject) HashSet(java.util.HashSet) PreDestroy(javax.annotation.PreDestroy) Sets.difference(com.google.common.collect.Sets.difference) ImmutableList(com.google.common.collect.ImmutableList) Executors.newScheduledThreadPool(java.util.concurrent.Executors.newScheduledThreadPool) Threads.daemonThreadsNamed(io.airlift.concurrent.Threads.daemonThreadsNamed) Map(java.util.Map) ThreadLocalRandom(java.util.concurrent.ThreadLocalRandom) Objects.requireNonNull(java.util.Objects.requireNonNull) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) ShardManager(com.facebook.presto.raptor.metadata.ShardManager) DatabaseUtil.onDemandDao(com.facebook.presto.raptor.util.DatabaseUtil.onDemandDao) Collectors.toSet(java.util.stream.Collectors.toSet) Table(com.facebook.presto.raptor.metadata.Table) ImmutableSet(com.google.common.collect.ImmutableSet) ShardOrganizerUtil.getShardsByDaysBuckets(com.facebook.presto.raptor.storage.organization.ShardOrganizerUtil.getShardsByDaysBuckets) NodeManager(com.facebook.presto.spi.NodeManager) Collection(java.util.Collection) Sets.newConcurrentHashSet(com.google.common.collect.Sets.newConcurrentHashSet) Set(java.util.Set) MILLISECONDS(java.util.concurrent.TimeUnit.MILLISECONDS) StorageManagerConfig(com.facebook.presto.raptor.storage.StorageManagerConfig) ComparisonChain(com.google.common.collect.ComparisonChain) Maps(com.google.common.collect.Maps) MetadataDao(com.facebook.presto.raptor.metadata.MetadataDao) ShardMetadata(com.facebook.presto.raptor.metadata.ShardMetadata) List(java.util.List) ShardOrganizerUtil.getOrganizationEligibleShards(com.facebook.presto.raptor.storage.organization.ShardOrganizerUtil.getOrganizationEligibleShards) Collectors.toList(java.util.stream.Collectors.toList) ShardOrganizerUtil.createOrganizationSet(com.facebook.presto.raptor.storage.organization.ShardOrganizerUtil.createOrganizationSet) PostConstruct(javax.annotation.PostConstruct) Math.max(java.lang.Math.max) VisibleForTesting(com.google.common.annotations.VisibleForTesting) SECONDS(java.util.concurrent.TimeUnit.SECONDS) CompletableFuture(java.util.concurrent.CompletableFuture) Table(com.facebook.presto.raptor.metadata.Table) ImmutableList(com.google.common.collect.ImmutableList) ShardMetadata(com.facebook.presto.raptor.metadata.ShardMetadata) ShardOrganizerUtil.createOrganizationSet(com.facebook.presto.raptor.storage.organization.ShardOrganizerUtil.createOrganizationSet)

Example 7 with MetadataDao

use of com.facebook.presto.raptor.metadata.MetadataDao in project presto by prestodb.

the class RaptorMetadata method renameTable.

@Override
public void renameTable(ConnectorSession session, ConnectorTableHandle tableHandle, SchemaTableName newTableName) {
    RaptorTableHandle table = (RaptorTableHandle) tableHandle;
    runTransaction(dbi, (handle, status) -> {
        MetadataDao dao = handle.attach(MetadataDao.class);
        dao.renameTable(table.getTableId(), newTableName.getSchemaName(), newTableName.getTableName());
        return null;
    });
}
Also used : MetadataDao(com.facebook.presto.raptor.metadata.MetadataDao)

Example 8 with MetadataDao

use of com.facebook.presto.raptor.metadata.MetadataDao in project presto by prestodb.

the class TestRaptorConnector method setup.

@BeforeMethod
public void setup() throws Exception {
    TypeRegistry typeRegistry = new TypeRegistry();
    DBI dbi = new DBI("jdbc:h2:mem:test" + System.nanoTime());
    dbi.registerMapper(new TableColumn.Mapper(typeRegistry));
    dummyHandle = dbi.open();
    metadataDao = dbi.onDemand(MetadataDao.class);
    createTablesWithRetry(dbi);
    dataDir = Files.createTempDir();
    RaptorConnectorId connectorId = new RaptorConnectorId("test");
    NodeManager nodeManager = new TestingNodeManager();
    NodeSupplier nodeSupplier = nodeManager::getWorkerNodes;
    ShardManager shardManager = createShardManager(dbi);
    StorageManager storageManager = createOrcStorageManager(dbi, dataDir);
    StorageManagerConfig config = new StorageManagerConfig().setDataDirectory(dataDir);
    connector = new RaptorConnector(new LifeCycleManager(ImmutableList.of(), null), new TestingNodeManager(), new RaptorMetadataFactory(connectorId, dbi, shardManager), new RaptorSplitManager(connectorId, nodeSupplier, shardManager, false), new RaptorPageSourceProvider(storageManager), new RaptorPageSinkProvider(storageManager, new PagesIndexPageSorter(new PagesIndex.TestingFactory()), config), new RaptorNodePartitioningProvider(nodeSupplier), new RaptorSessionProperties(config), new RaptorTableProperties(typeRegistry), ImmutableSet.of(), dbi);
}
Also used : TestOrcStorageManager.createOrcStorageManager(com.facebook.presto.raptor.storage.TestOrcStorageManager.createOrcStorageManager) StorageManager(com.facebook.presto.raptor.storage.StorageManager) DBI(org.skife.jdbi.v2.DBI) ShardManager(com.facebook.presto.raptor.metadata.ShardManager) TestDatabaseShardManager.createShardManager(com.facebook.presto.raptor.metadata.TestDatabaseShardManager.createShardManager) TypeRegistry(com.facebook.presto.type.TypeRegistry) TableColumn(com.facebook.presto.raptor.metadata.TableColumn) StorageManagerConfig(com.facebook.presto.raptor.storage.StorageManagerConfig) NodeManager(com.facebook.presto.spi.NodeManager) TestingNodeManager(com.facebook.presto.testing.TestingNodeManager) PagesIndexPageSorter(com.facebook.presto.PagesIndexPageSorter) LifeCycleManager(io.airlift.bootstrap.LifeCycleManager) TestingNodeManager(com.facebook.presto.testing.TestingNodeManager) MetadataDao(com.facebook.presto.raptor.metadata.MetadataDao) BeforeMethod(org.testng.annotations.BeforeMethod)

Example 9 with MetadataDao

use of com.facebook.presto.raptor.metadata.MetadataDao in project presto by prestodb.

the class TestBucketBalancer method createBucketedTable.

private long createBucketedTable(String tableName, long distributionId, DataSize compressedSize) {
    MetadataDao dao = dbi.onDemand(MetadataDao.class);
    long tableId = dao.insertTable("test", tableName, false, false, distributionId, 0);
    List<ColumnInfo> columnsA = ImmutableList.of(new ColumnInfo(1, BIGINT));
    shardManager.createTable(tableId, columnsA, false, OptionalLong.empty());
    metadataDao.updateTableStats(tableId, 1024, 1024 * 1024 * 1024, compressedSize.toBytes(), compressedSize.toBytes() * 2);
    return tableId;
}
Also used : ColumnInfo(com.facebook.presto.raptor.metadata.ColumnInfo) MetadataDao(com.facebook.presto.raptor.metadata.MetadataDao)

Example 10 with MetadataDao

use of com.facebook.presto.raptor.metadata.MetadataDao in project presto by prestodb.

the class TestBucketBalancer method setup.

@BeforeMethod
public void setup() throws Exception {
    TypeRegistry typeRegistry = new TypeRegistry();
    dbi = new DBI("jdbc:h2:mem:test" + System.nanoTime());
    dbi.registerMapper(new Distribution.Mapper(typeRegistry));
    dummyHandle = dbi.open();
    createTablesWithRetry(dbi);
    metadataDao = dbi.onDemand(MetadataDao.class);
    nodeManager = new TestingNodeManager(AVAILABLE_WORKERS.stream().map(TestBucketBalancer::createTestingNode).collect(Collectors.toList()));
    NodeSupplier nodeSupplier = nodeManager::getWorkerNodes;
    shardManager = createShardManager(dbi, nodeSupplier);
    balancer = new BucketBalancer(nodeSupplier, shardManager, true, new Duration(1, DAYS), true, true, "test");
}
Also used : TestingNodeManager(com.facebook.presto.testing.TestingNodeManager) Distribution(com.facebook.presto.raptor.metadata.Distribution) DBI(org.skife.jdbi.v2.DBI) Duration(io.airlift.units.Duration) TypeRegistry(com.facebook.presto.type.TypeRegistry) NodeSupplier(com.facebook.presto.raptor.NodeSupplier) MetadataDao(com.facebook.presto.raptor.metadata.MetadataDao) BeforeMethod(org.testng.annotations.BeforeMethod)

Aggregations

MetadataDao (com.facebook.presto.raptor.metadata.MetadataDao)12 ShardManager (com.facebook.presto.raptor.metadata.ShardManager)3 TableColumn (com.facebook.presto.raptor.metadata.TableColumn)3 StorageManagerConfig (com.facebook.presto.raptor.storage.StorageManagerConfig)3 NodeManager (com.facebook.presto.spi.NodeManager)3 TypeRegistry (com.facebook.presto.type.TypeRegistry)3 Duration (io.airlift.units.Duration)3 DBI (org.skife.jdbi.v2.DBI)3 BeforeMethod (org.testng.annotations.BeforeMethod)3 ColumnInfo (com.facebook.presto.raptor.metadata.ColumnInfo)2 ForMetadata (com.facebook.presto.raptor.metadata.ForMetadata)2 ShardMetadata (com.facebook.presto.raptor.metadata.ShardMetadata)2 Table (com.facebook.presto.raptor.metadata.Table)2 ShardOrganizerUtil.getOrganizationEligibleShards (com.facebook.presto.raptor.storage.organization.ShardOrganizerUtil.getOrganizationEligibleShards)2 DatabaseUtil.onDemandDao (com.facebook.presto.raptor.util.DatabaseUtil.onDemandDao)2 SchemaTableName (com.facebook.presto.spi.SchemaTableName)2 TestingNodeManager (com.facebook.presto.testing.TestingNodeManager)2 ImmutableSet (com.google.common.collect.ImmutableSet)2 Threads.daemonThreadsNamed (io.airlift.concurrent.Threads.daemonThreadsNamed)2 Logger (io.airlift.log.Logger)2