Search in sources :

Example 1 with EmbeddedDiscoveryModule

use of com.facebook.airlift.discovery.server.EmbeddedDiscoveryModule in project presto by prestodb.

the class CoordinatorModule method setup.

@Override
protected void setup(Binder binder) {
    httpServerBinder(binder).bindResource("/ui", "webapp").withWelcomeFile("index.html");
    httpServerBinder(binder).bindResource("/tableau", "webapp/tableau");
    // discovery server
    install(installModuleIf(EmbeddedDiscoveryConfig.class, EmbeddedDiscoveryConfig::isEnabled, new EmbeddedDiscoveryModule()));
    // presto coordinator announcement
    discoveryBinder(binder).bindHttpAnnouncement("presto-coordinator");
    // statement resource
    jsonCodecBinder(binder).bindJsonCodec(QueryInfo.class);
    jsonCodecBinder(binder).bindJsonCodec(TaskInfo.class);
    jsonCodecBinder(binder).bindJsonCodec(QueryResults.class);
    jsonCodecBinder(binder).bindJsonCodec(SelectedRole.class);
    jaxrsBinder(binder).bind(QueuedStatementResource.class);
    jaxrsBinder(binder).bind(ExecutingStatementResource.class);
    binder.bind(StatementHttpExecutionMBean.class).in(Scopes.SINGLETON);
    newExporter(binder).export(StatementHttpExecutionMBean.class).withGeneratedName();
    // resource for serving static content
    jaxrsBinder(binder).bind(WebUiResource.class);
    // failure detector
    binder.install(new FailureDetectorModule());
    jaxrsBinder(binder).bind(NodeResource.class);
    jaxrsBinder(binder).bind(WorkerResource.class);
    httpClientBinder(binder).bindHttpClient("workerInfo", ForWorkerInfo.class);
    // query monitor
    jsonCodecBinder(binder).bindJsonCodec(OperatorInfo.class);
    configBinder(binder).bindConfig(QueryMonitorConfig.class);
    binder.bind(QueryMonitor.class).in(Scopes.SINGLETON);
    // query manager
    jaxrsBinder(binder).bind(QueryResource.class);
    jaxrsBinder(binder).bind(StageResource.class);
    jaxrsBinder(binder).bind(QueryStateInfoResource.class);
    jaxrsBinder(binder).bind(ResourceGroupStateInfoResource.class);
    binder.bind(QueryIdGenerator.class).in(Scopes.SINGLETON);
    binder.bind(QueryManager.class).to(SqlQueryManager.class).in(Scopes.SINGLETON);
    newExporter(binder).export(QueryManager.class).withGeneratedName();
    binder.bind(QueryPreparer.class).in(Scopes.SINGLETON);
    binder.bind(SessionSupplier.class).to(QuerySessionSupplier.class).in(Scopes.SINGLETON);
    binder.bind(InternalResourceGroupManager.class).in(Scopes.SINGLETON);
    newExporter(binder).export(InternalResourceGroupManager.class).withGeneratedName();
    binder.bind(ResourceGroupManager.class).to(InternalResourceGroupManager.class);
    binder.bind(LegacyResourceGroupConfigurationManager.class).in(Scopes.SINGLETON);
    binder.bind(RetryCircuitBreaker.class).in(Scopes.SINGLETON);
    newExporter(binder).export(RetryCircuitBreaker.class).withGeneratedName();
    binder.bind(LocalQueryProvider.class).in(Scopes.SINGLETON);
    jaxrsBinder(binder).bind(TaskInfoResource.class);
    // dispatcher
    binder.bind(DispatchManager.class).in(Scopes.SINGLETON);
    binder.bind(FailedDispatchQueryFactory.class).in(Scopes.SINGLETON);
    binder.bind(DispatchExecutor.class).in(Scopes.SINGLETON);
    // local dispatcher
    binder.bind(DispatchQueryFactory.class).to(LocalDispatchQueryFactory.class);
    // cluster memory manager
    binder.bind(ClusterMemoryManager.class).in(Scopes.SINGLETON);
    binder.bind(ClusterMemoryPoolManager.class).to(ClusterMemoryManager.class).in(Scopes.SINGLETON);
    httpClientBinder(binder).bindHttpClient("memoryManager", ForMemoryManager.class).withTracing().withConfigDefaults(config -> {
        config.setRequestTimeout(new Duration(10, SECONDS));
    });
    bindLowMemoryKiller(LowMemoryKillerPolicy.NONE, NoneLowMemoryKiller.class);
    bindLowMemoryKiller(LowMemoryKillerPolicy.TOTAL_RESERVATION, TotalReservationLowMemoryKiller.class);
    bindLowMemoryKiller(LowMemoryKillerPolicy.TOTAL_RESERVATION_ON_BLOCKED_NODES, TotalReservationOnBlockedNodesLowMemoryKiller.class);
    newExporter(binder).export(ClusterMemoryManager.class).withGeneratedName();
    // node monitor
    binder.bind(ClusterSizeMonitor.class).in(Scopes.SINGLETON);
    // statistics calculator
    binder.install(new StatsCalculatorModule());
    // cost calculator
    binder.bind(TaskCountEstimator.class).in(Scopes.SINGLETON);
    binder.bind(CostCalculator.class).to(CostCalculatorUsingExchanges.class).in(Scopes.SINGLETON);
    binder.bind(CostCalculator.class).annotatedWith(EstimatedExchanges.class).to(CostCalculatorWithEstimatedExchanges.class).in(Scopes.SINGLETON);
    binder.bind(CostComparator.class).in(Scopes.SINGLETON);
    // cluster statistics
    jaxrsBinder(binder).bind(ClusterStatsResource.class);
    // planner
    binder.bind(PlanFragmenter.class).in(Scopes.SINGLETON);
    binder.bind(PlanOptimizers.class).in(Scopes.SINGLETON);
    // query explainer
    binder.bind(QueryExplainer.class).in(Scopes.SINGLETON);
    // explain analyze
    binder.bind(ExplainAnalyzeContext.class).in(Scopes.SINGLETON);
    // execution scheduler
    binder.bind(RemoteTaskFactory.class).to(HttpRemoteTaskFactory.class).in(Scopes.SINGLETON);
    newExporter(binder).export(RemoteTaskFactory.class).withGeneratedName();
    binder.bind(RemoteTaskStats.class).in(Scopes.SINGLETON);
    newExporter(binder).export(RemoteTaskStats.class).withGeneratedName();
    httpClientBinder(binder).bindHttpClient("scheduler", ForScheduler.class).withTracing().withFilter(GenerateTraceTokenRequestFilter.class).withConfigDefaults(config -> {
        config.setRequestTimeout(new Duration(10, SECONDS));
        config.setMaxConnectionsPerServer(250);
    });
    binder.bind(ScheduledExecutorService.class).annotatedWith(ForScheduler.class).toInstance(newSingleThreadScheduledExecutor(threadsNamed("stage-scheduler")));
    // query execution
    binder.bind(ExecutorService.class).annotatedWith(ForQueryExecution.class).toInstance(newCachedThreadPool(threadsNamed("query-execution-%s")));
    binder.bind(QueryExecutionMBean.class).in(Scopes.SINGLETON);
    newExporter(binder).export(QueryExecutionMBean.class).as(generatedNameOf(QueryExecution.class));
    MapBinder<Class<? extends Statement>, QueryExecutionFactory<?>> executionBinder = newMapBinder(binder, new TypeLiteral<Class<? extends Statement>>() {
    }, new TypeLiteral<QueryExecution.QueryExecutionFactory<?>>() {
    });
    binder.bind(SplitSchedulerStats.class).in(Scopes.SINGLETON);
    newExporter(binder).export(SplitSchedulerStats.class).withGeneratedName();
    binder.bind(SqlQueryExecutionFactory.class).in(Scopes.SINGLETON);
    binder.bind(SectionExecutionFactory.class).in(Scopes.SINGLETON);
    Set<Map.Entry<Class<? extends Statement>, QueryType>> queryTypes = getAllQueryTypes().entrySet();
    // bind sql query statements to SqlQueryExecutionFactory
    queryTypes.stream().filter(entry -> entry.getValue() != QueryType.DATA_DEFINITION).forEach(entry -> executionBinder.addBinding(entry.getKey()).to(SqlQueryExecutionFactory.class).in(Scopes.SINGLETON));
    binder.bind(PartialResultQueryManager.class).in(Scopes.SINGLETON);
    // bind data definition statements to DataDefinitionExecutionFactory
    queryTypes.stream().filter(entry -> entry.getValue() == QueryType.DATA_DEFINITION && !isSessionTransactionControlStatement(entry.getKey())).forEach(entry -> executionBinder.addBinding(entry.getKey()).to(DDLDefinitionExecutionFactory.class).in(Scopes.SINGLETON));
    binder.bind(DDLDefinitionExecutionFactory.class).in(Scopes.SINGLETON);
    // bind session Control statements to SessionTransactionExecutionFactory
    queryTypes.stream().filter(entry -> (entry.getValue() == QueryType.DATA_DEFINITION && isSessionTransactionControlStatement(entry.getKey()))).forEach(entry -> executionBinder.addBinding(entry.getKey()).to(SessionDefinitionExecutionFactory.class).in(Scopes.SINGLETON));
    binder.bind(SessionDefinitionExecutionFactory.class).in(Scopes.SINGLETON);
    // helper class binding data definition tasks and statements
    PrestoDataDefBindingHelper.bindDDLDefinitionTasks(binder);
    PrestoDataDefBindingHelper.bindTransactionControlDefinitionTasks(binder);
    MapBinder<String, ExecutionPolicy> executionPolicyBinder = newMapBinder(binder, String.class, ExecutionPolicy.class);
    executionPolicyBinder.addBinding("all-at-once").to(AllAtOnceExecutionPolicy.class);
    executionPolicyBinder.addBinding("phased").to(PhasedExecutionPolicy.class);
    configBinder(binder).bindConfig(NodeResourceStatusConfig.class);
    binder.bind(NodeResourceStatusProvider.class).to(NodeResourceStatus.class).in(Scopes.SINGLETON);
    newOptionalBinder(binder, ResourceManagerProxy.class);
    install(installModuleIf(ServerConfig.class, ServerConfig::isResourceManagerEnabled, rmBinder -> {
        httpClientBinder(rmBinder).bindHttpClient("resourceManager", ForResourceManager.class);
        rmBinder.bind(ResourceManagerProxy.class).in(Scopes.SINGLETON);
    }));
    // cleanup
    binder.bind(ExecutorCleanup.class).in(Scopes.SINGLETON);
}
Also used : JaxrsBinder.jaxrsBinder(com.facebook.airlift.jaxrs.JaxrsBinder.jaxrsBinder) QueryExplainer(com.facebook.presto.sql.analyzer.QueryExplainer) QueryPerformanceFetcher(com.facebook.presto.execution.QueryPerformanceFetcher) QueryExecutionFactory(com.facebook.presto.execution.QueryExecution.QueryExecutionFactory) Executors.newSingleThreadScheduledExecutor(java.util.concurrent.Executors.newSingleThreadScheduledExecutor) Executors.newScheduledThreadPool(java.util.concurrent.Executors.newScheduledThreadPool) Map(java.util.Map) SqlQueryExecutionFactory(com.facebook.presto.execution.SqlQueryExecution.SqlQueryExecutionFactory) TaskCountEstimator(com.facebook.presto.cost.TaskCountEstimator) RemoteTaskFactory(com.facebook.presto.execution.RemoteTaskFactory) PhasedExecutionPolicy(com.facebook.presto.execution.scheduler.PhasedExecutionPolicy) Set(java.util.Set) QueryIdGenerator(com.facebook.presto.execution.QueryIdGenerator) ForMemoryManager(com.facebook.presto.memory.ForMemoryManager) RetryCircuitBreaker(com.facebook.presto.server.protocol.RetryCircuitBreaker) QueryExecution(com.facebook.presto.execution.QueryExecution) QueryInfo(com.facebook.presto.execution.QueryInfo) QueryPreparer(com.facebook.presto.execution.QueryPreparer) NodeResourceStatusConfig(com.facebook.presto.execution.NodeResourceStatusConfig) InternalResourceGroupManager(com.facebook.presto.execution.resourceGroups.InternalResourceGroupManager) TypeLiteral(com.google.inject.TypeLiteral) DispatchExecutor(com.facebook.presto.dispatcher.DispatchExecutor) EmbeddedDiscoveryModule(com.facebook.airlift.discovery.server.EmbeddedDiscoveryModule) Binder(com.google.inject.Binder) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) LocalDispatchQueryFactory(com.facebook.presto.dispatcher.LocalDispatchQueryFactory) NoneLowMemoryKiller(com.facebook.presto.memory.NoneLowMemoryKiller) ExecutingStatementResource(com.facebook.presto.server.protocol.ExecutingStatementResource) RemoteTaskStats(com.facebook.presto.server.remotetask.RemoteTaskStats) TransactionManager(com.facebook.presto.transaction.TransactionManager) ResourceGroupManager(com.facebook.presto.execution.resourceGroups.ResourceGroupManager) DDLDefinitionExecutionFactory(com.facebook.presto.execution.DDLDefinitionExecution.DDLDefinitionExecutionFactory) LegacyResourceGroupConfigurationManager(com.facebook.presto.execution.resourceGroups.LegacyResourceGroupConfigurationManager) ClusterMemoryPoolManager(com.facebook.presto.spi.memory.ClusterMemoryPoolManager) Threads.threadsNamed(com.facebook.airlift.concurrent.Threads.threadsNamed) QueryExecutionMBean(com.facebook.presto.execution.QueryExecutionMBean) AllAtOnceExecutionPolicy(com.facebook.presto.execution.scheduler.AllAtOnceExecutionPolicy) QueryMonitor(com.facebook.presto.event.QueryMonitor) InMemoryTransactionManager(com.facebook.presto.transaction.InMemoryTransactionManager) ForQueryExecution(com.facebook.presto.execution.ForQueryExecution) ClusterSizeMonitor(com.facebook.presto.execution.ClusterSizeMonitor) TaskInfo(com.facebook.presto.execution.TaskInfo) CostCalculatorWithEstimatedExchanges(com.facebook.presto.cost.CostCalculatorWithEstimatedExchanges) ForScheduler(com.facebook.presto.operator.ForScheduler) EstimatedExchanges(com.facebook.presto.cost.CostCalculator.EstimatedExchanges) SectionExecutionFactory(com.facebook.presto.execution.scheduler.SectionExecutionFactory) TaskManagerConfig(com.facebook.presto.execution.TaskManagerConfig) Duration(io.airlift.units.Duration) PreDestroy(javax.annotation.PreDestroy) AbstractConfigurationAwareModule(com.facebook.airlift.configuration.AbstractConfigurationAwareModule) HttpClientBinder.httpClientBinder(com.facebook.airlift.http.client.HttpClientBinder.httpClientBinder) ExportBinder.newExporter(org.weakref.jmx.guice.ExportBinder.newExporter) OperatorInfo(com.facebook.presto.operator.OperatorInfo) MapBinder(com.google.inject.multibindings.MapBinder) ExecutionPolicy(com.facebook.presto.execution.scheduler.ExecutionPolicy) OptionalBinder.newOptionalBinder(com.google.inject.multibindings.OptionalBinder.newOptionalBinder) ForResourceManager(com.facebook.presto.resourcemanager.ForResourceManager) ResourceManagerProxy(com.facebook.presto.resourcemanager.ResourceManagerProxy) StatementUtils.isSessionTransactionControlStatement(com.facebook.presto.util.StatementUtils.isSessionTransactionControlStatement) SplitSchedulerStats(com.facebook.presto.execution.scheduler.SplitSchedulerStats) ConditionalModule.installModuleIf(com.facebook.airlift.configuration.ConditionalModule.installModuleIf) CostCalculatorUsingExchanges(com.facebook.presto.cost.CostCalculatorUsingExchanges) CostCalculator(com.facebook.presto.cost.CostCalculator) LowMemoryKiller(com.facebook.presto.memory.LowMemoryKiller) Threads.daemonThreadsNamed(com.facebook.airlift.concurrent.Threads.daemonThreadsNamed) List(java.util.List) StatementUtils.getAllQueryTypes(com.facebook.presto.util.StatementUtils.getAllQueryTypes) TransactionManagerConfig(com.facebook.presto.transaction.TransactionManagerConfig) PrestoDataDefBindingHelper(com.facebook.presto.util.PrestoDataDefBindingHelper) DispatchQueryFactory(com.facebook.presto.dispatcher.DispatchQueryFactory) HttpRemoteTaskFactory(com.facebook.presto.server.remotetask.HttpRemoteTaskFactory) TotalReservationLowMemoryKiller(com.facebook.presto.memory.TotalReservationLowMemoryKiller) QueryResults(com.facebook.presto.client.QueryResults) ForTransactionManager(com.facebook.presto.transaction.ForTransactionManager) QueryManager(com.facebook.presto.execution.QueryManager) Singleton(javax.inject.Singleton) JsonCodecBinder.jsonCodecBinder(com.facebook.airlift.json.JsonCodecBinder.jsonCodecBinder) StatsCalculatorModule(com.facebook.presto.cost.StatsCalculatorModule) PlanOptimizers(com.facebook.presto.sql.planner.PlanOptimizers) Inject(javax.inject.Inject) BoundedExecutor(com.facebook.airlift.concurrent.BoundedExecutor) ImmutableList(com.google.common.collect.ImmutableList) ExplainAnalyzeContext(com.facebook.presto.execution.ExplainAnalyzeContext) MemoryManagerConfig(com.facebook.presto.memory.MemoryManagerConfig) PlanFragmenter(com.facebook.presto.sql.planner.PlanFragmenter) ExecutorService(java.util.concurrent.ExecutorService) SelectedRole(com.facebook.presto.spi.security.SelectedRole) MapBinder.newMapBinder(com.google.inject.multibindings.MapBinder.newMapBinder) SessionDefinitionExecutionFactory(com.facebook.presto.execution.SessionDefinitionExecution.SessionDefinitionExecutionFactory) ObjectNames.generatedNameOf(org.weakref.jmx.ObjectNames.generatedNameOf) ClusterMemoryManager(com.facebook.presto.memory.ClusterMemoryManager) LocalQueryProvider(com.facebook.presto.server.protocol.LocalQueryProvider) DispatchManager(com.facebook.presto.dispatcher.DispatchManager) LowMemoryKillerPolicy(com.facebook.presto.memory.MemoryManagerConfig.LowMemoryKillerPolicy) Scopes(com.google.inject.Scopes) CatalogManager(com.facebook.presto.metadata.CatalogManager) TotalReservationOnBlockedNodesLowMemoryKiller(com.facebook.presto.memory.TotalReservationOnBlockedNodesLowMemoryKiller) FailureDetectorModule(com.facebook.presto.failureDetector.FailureDetectorModule) Provides(com.google.inject.Provides) QueryMonitorConfig(com.facebook.presto.event.QueryMonitorConfig) QueuedStatementResource(com.facebook.presto.server.protocol.QueuedStatementResource) QueryType(com.facebook.presto.spi.resourceGroups.QueryType) Executors.newCachedThreadPool(java.util.concurrent.Executors.newCachedThreadPool) HttpServerBinder.httpServerBinder(com.facebook.airlift.http.server.HttpServerBinder.httpServerBinder) CostComparator(com.facebook.presto.cost.CostComparator) FailedDispatchQueryFactory(com.facebook.presto.dispatcher.FailedDispatchQueryFactory) SqlQueryManager(com.facebook.presto.execution.SqlQueryManager) ConfigBinder.configBinder(com.facebook.airlift.configuration.ConfigBinder.configBinder) DiscoveryBinder.discoveryBinder(com.facebook.airlift.discovery.client.DiscoveryBinder.discoveryBinder) SECONDS(java.util.concurrent.TimeUnit.SECONDS) PartialResultQueryManager(com.facebook.presto.execution.PartialResultQueryManager) Statement(com.facebook.presto.sql.tree.Statement) QueryIdGenerator(com.facebook.presto.execution.QueryIdGenerator) DispatchManager(com.facebook.presto.dispatcher.DispatchManager) FailureDetectorModule(com.facebook.presto.failureDetector.FailureDetectorModule) RetryCircuitBreaker(com.facebook.presto.server.protocol.RetryCircuitBreaker) QueryPreparer(com.facebook.presto.execution.QueryPreparer) RemoteTaskStats(com.facebook.presto.server.remotetask.RemoteTaskStats) QueryMonitor(com.facebook.presto.event.QueryMonitor) HttpRemoteTaskFactory(com.facebook.presto.server.remotetask.HttpRemoteTaskFactory) QueryExecutionMBean(com.facebook.presto.execution.QueryExecutionMBean) LegacyResourceGroupConfigurationManager(com.facebook.presto.execution.resourceGroups.LegacyResourceGroupConfigurationManager) RemoteTaskFactory(com.facebook.presto.execution.RemoteTaskFactory) HttpRemoteTaskFactory(com.facebook.presto.server.remotetask.HttpRemoteTaskFactory) DDLDefinitionExecutionFactory(com.facebook.presto.execution.DDLDefinitionExecution.DDLDefinitionExecutionFactory) QueryExplainer(com.facebook.presto.sql.analyzer.QueryExplainer) InternalResourceGroupManager(com.facebook.presto.execution.resourceGroups.InternalResourceGroupManager) ResourceGroupManager(com.facebook.presto.execution.resourceGroups.ResourceGroupManager) Duration(io.airlift.units.Duration) PartialResultQueryManager(com.facebook.presto.execution.PartialResultQueryManager) LocalQueryProvider(com.facebook.presto.server.protocol.LocalQueryProvider) SplitSchedulerStats(com.facebook.presto.execution.scheduler.SplitSchedulerStats) QueryExecutionFactory(com.facebook.presto.execution.QueryExecution.QueryExecutionFactory) SqlQueryExecutionFactory(com.facebook.presto.execution.SqlQueryExecution.SqlQueryExecutionFactory) PlanOptimizers(com.facebook.presto.sql.planner.PlanOptimizers) CostCalculatorWithEstimatedExchanges(com.facebook.presto.cost.CostCalculatorWithEstimatedExchanges) ForQueryExecution(com.facebook.presto.execution.ForQueryExecution) SessionDefinitionExecutionFactory(com.facebook.presto.execution.SessionDefinitionExecution.SessionDefinitionExecutionFactory) PlanFragmenter(com.facebook.presto.sql.planner.PlanFragmenter) QueryExecution(com.facebook.presto.execution.QueryExecution) ForQueryExecution(com.facebook.presto.execution.ForQueryExecution) FailedDispatchQueryFactory(com.facebook.presto.dispatcher.FailedDispatchQueryFactory) SqlQueryExecutionFactory(com.facebook.presto.execution.SqlQueryExecution.SqlQueryExecutionFactory) InternalResourceGroupManager(com.facebook.presto.execution.resourceGroups.InternalResourceGroupManager) CostCalculatorUsingExchanges(com.facebook.presto.cost.CostCalculatorUsingExchanges) ForScheduler(com.facebook.presto.operator.ForScheduler) ExplainAnalyzeContext(com.facebook.presto.execution.ExplainAnalyzeContext) ClusterSizeMonitor(com.facebook.presto.execution.ClusterSizeMonitor) StatsCalculatorModule(com.facebook.presto.cost.StatsCalculatorModule) TaskCountEstimator(com.facebook.presto.cost.TaskCountEstimator) CostComparator(com.facebook.presto.cost.CostComparator) ForResourceManager(com.facebook.presto.resourcemanager.ForResourceManager) StatementUtils.isSessionTransactionControlStatement(com.facebook.presto.util.StatementUtils.isSessionTransactionControlStatement) Statement(com.facebook.presto.sql.tree.Statement) EmbeddedDiscoveryModule(com.facebook.airlift.discovery.server.EmbeddedDiscoveryModule) CostCalculator(com.facebook.presto.cost.CostCalculator) LocalDispatchQueryFactory(com.facebook.presto.dispatcher.LocalDispatchQueryFactory) DispatchQueryFactory(com.facebook.presto.dispatcher.DispatchQueryFactory) FailedDispatchQueryFactory(com.facebook.presto.dispatcher.FailedDispatchQueryFactory) PhasedExecutionPolicy(com.facebook.presto.execution.scheduler.PhasedExecutionPolicy) AllAtOnceExecutionPolicy(com.facebook.presto.execution.scheduler.AllAtOnceExecutionPolicy) ExecutionPolicy(com.facebook.presto.execution.scheduler.ExecutionPolicy) ClusterMemoryManager(com.facebook.presto.memory.ClusterMemoryManager) QueryManager(com.facebook.presto.execution.QueryManager) SqlQueryManager(com.facebook.presto.execution.SqlQueryManager) PartialResultQueryManager(com.facebook.presto.execution.PartialResultQueryManager) DispatchExecutor(com.facebook.presto.dispatcher.DispatchExecutor) SectionExecutionFactory(com.facebook.presto.execution.scheduler.SectionExecutionFactory) SqlQueryManager(com.facebook.presto.execution.SqlQueryManager)

Example 2 with EmbeddedDiscoveryModule

use of com.facebook.airlift.discovery.server.EmbeddedDiscoveryModule in project presto by prestodb.

the class ResourceManagerModule method setup.

@Override
protected void setup(Binder binder) {
    // discovery server
    install(installModuleIf(EmbeddedDiscoveryConfig.class, EmbeddedDiscoveryConfig::isEnabled, new EmbeddedDiscoveryModule()));
    // presto coordinator announcement
    discoveryBinder(binder).bindHttpAnnouncement("presto-resource-manager");
    // statement resource
    jsonCodecBinder(binder).bindJsonCodec(QueryInfo.class);
    // resource for serving static content
    jaxrsBinder(binder).bind(WebUiResource.class);
    // failure detector
    binder.install(new FailureDetectorModule());
    jaxrsBinder(binder).bind(NodeResource.class);
    jaxrsBinder(binder).bind(WorkerResource.class);
    httpClientBinder(binder).bindHttpClient("workerInfo", ForWorkerInfo.class);
    // TODO: decouple query-level configuration that is not needed for Resource Manager
    binder.bind(QueryManager.class).to(NoOpQueryManager.class).in(Scopes.SINGLETON);
    jaxrsBinder(binder).bind(DistributedResourceGroupInfoResource.class);
    binder.bind(QueryIdGenerator.class).in(Scopes.SINGLETON);
    binder.bind(QueryPreparer.class).in(Scopes.SINGLETON);
    binder.bind(SessionSupplier.class).to(QuerySessionSupplier.class).in(Scopes.SINGLETON);
    binder.bind(ResourceGroupManager.class).to(NoOpResourceGroupManager.class);
    jsonCodecBinder(binder).bindJsonCodec(QueryInfo.class);
    smileCodecBinder(binder).bindSmileCodec(QueryInfo.class);
    jsonCodecBinder(binder).bindJsonCodec(BasicQueryInfo.class);
    smileCodecBinder(binder).bindSmileCodec(BasicQueryInfo.class);
    jsonCodecBinder(binder).bindListJsonCodec(QueryStateInfo.class);
    jsonCodecBinder(binder).bindJsonCodec(ResourceGroupInfo.class);
    binder.bind(TransactionManager.class).to(NoOpTransactionManager.class);
    binder.bind(ResourceManagerClusterStateProvider.class).in(Scopes.SINGLETON);
    driftServerBinder(binder).bindService(ResourceManagerServer.class);
    binder.bind(NodeResourceStatusProvider.class).toInstance(() -> true);
    jaxrsBinder(binder).bind(DistributedQueryResource.class);
    jaxrsBinder(binder).bind(DistributedQueryInfoResource.class);
    jaxrsBinder(binder).bind(DistributedClusterStatsResource.class);
    httpClientBinder(binder).bindHttpClient("resourceManager", ForResourceManager.class);
    binder.bind(ResourceManagerProxy.class).in(Scopes.SINGLETON);
    jsonBinder(binder).addSerializerBinding(Duration.class).to(DurationSerializer.class);
    jsonBinder(binder).addSerializerBinding(DataSize.class).to(DataSizeSerializer.class);
}
Also used : QueryIdGenerator(com.facebook.presto.execution.QueryIdGenerator) ResourceManagerClusterStateProvider(com.facebook.presto.resourcemanager.ResourceManagerClusterStateProvider) EmbeddedDiscoveryModule(com.facebook.airlift.discovery.server.EmbeddedDiscoveryModule) NoOpResourceGroupManager(com.facebook.presto.execution.resourceGroups.NoOpResourceGroupManager) ResourceGroupManager(com.facebook.presto.execution.resourceGroups.ResourceGroupManager) Duration(io.airlift.units.Duration) FailureDetectorModule(com.facebook.presto.failureDetector.FailureDetectorModule) NoOpQueryManager(com.facebook.presto.dispatcher.NoOpQueryManager) QueryPreparer(com.facebook.presto.execution.QueryPreparer) ResourceManagerProxy(com.facebook.presto.resourcemanager.ResourceManagerProxy) NoOpTransactionManager(com.facebook.presto.transaction.NoOpTransactionManager) TransactionManager(com.facebook.presto.transaction.TransactionManager) DataSize(io.airlift.units.DataSize)

Aggregations

EmbeddedDiscoveryModule (com.facebook.airlift.discovery.server.EmbeddedDiscoveryModule)2 QueryIdGenerator (com.facebook.presto.execution.QueryIdGenerator)2 QueryPreparer (com.facebook.presto.execution.QueryPreparer)2 ResourceGroupManager (com.facebook.presto.execution.resourceGroups.ResourceGroupManager)2 FailureDetectorModule (com.facebook.presto.failureDetector.FailureDetectorModule)2 ResourceManagerProxy (com.facebook.presto.resourcemanager.ResourceManagerProxy)2 TransactionManager (com.facebook.presto.transaction.TransactionManager)2 Duration (io.airlift.units.Duration)2 BoundedExecutor (com.facebook.airlift.concurrent.BoundedExecutor)1 Threads.daemonThreadsNamed (com.facebook.airlift.concurrent.Threads.daemonThreadsNamed)1 Threads.threadsNamed (com.facebook.airlift.concurrent.Threads.threadsNamed)1 AbstractConfigurationAwareModule (com.facebook.airlift.configuration.AbstractConfigurationAwareModule)1 ConditionalModule.installModuleIf (com.facebook.airlift.configuration.ConditionalModule.installModuleIf)1 ConfigBinder.configBinder (com.facebook.airlift.configuration.ConfigBinder.configBinder)1 DiscoveryBinder.discoveryBinder (com.facebook.airlift.discovery.client.DiscoveryBinder.discoveryBinder)1 HttpClientBinder.httpClientBinder (com.facebook.airlift.http.client.HttpClientBinder.httpClientBinder)1 HttpServerBinder.httpServerBinder (com.facebook.airlift.http.server.HttpServerBinder.httpServerBinder)1 JaxrsBinder.jaxrsBinder (com.facebook.airlift.jaxrs.JaxrsBinder.jaxrsBinder)1 JsonCodecBinder.jsonCodecBinder (com.facebook.airlift.json.JsonCodecBinder.jsonCodecBinder)1 QueryResults (com.facebook.presto.client.QueryResults)1