Search in sources :

Example 6 with ShardMetadata

use of com.facebook.presto.raptor.metadata.ShardMetadata 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)

Aggregations

ShardMetadata (com.facebook.presto.raptor.metadata.ShardMetadata)6 ShardManager (com.facebook.presto.raptor.metadata.ShardManager)3 Table (com.facebook.presto.raptor.metadata.Table)3 TableColumn (com.facebook.presto.raptor.metadata.TableColumn)3 NodeManager (com.facebook.presto.spi.NodeManager)3 VisibleForTesting (com.google.common.annotations.VisibleForTesting)3 Threads.daemonThreadsNamed (io.airlift.concurrent.Threads.daemonThreadsNamed)3 Logger (io.airlift.log.Logger)3 Duration (io.airlift.units.Duration)3 Objects.requireNonNull (java.util.Objects.requireNonNull)3 Set (java.util.Set)3 Executors.newScheduledThreadPool (java.util.concurrent.Executors.newScheduledThreadPool)3 ScheduledExecutorService (java.util.concurrent.ScheduledExecutorService)3 ThreadLocalRandom (java.util.concurrent.ThreadLocalRandom)3 SECONDS (java.util.concurrent.TimeUnit.SECONDS)3 ForMetadata (com.facebook.presto.raptor.metadata.ForMetadata)2 MetadataDao (com.facebook.presto.raptor.metadata.MetadataDao)2 StorageManagerConfig (com.facebook.presto.raptor.storage.StorageManagerConfig)2 ShardOrganizerUtil.getOrganizationEligibleShards (com.facebook.presto.raptor.storage.organization.ShardOrganizerUtil.getOrganizationEligibleShards)2 DatabaseUtil.onDemandDao (com.facebook.presto.raptor.util.DatabaseUtil.onDemandDao)2