public class UnifiedIndexerAppenderatorsManager extends Object implements AppenderatorsManager
Appenderator instances for the CliIndexer task execution service, which runs all tasks in
a single process.
This class keeps a map of UnifiedIndexerAppenderatorsManager.DatasourceBundle objects, keyed by datasource name. Each bundle contains:
- A per-datasource SinkQuerySegmentWalker (with an associated per-datasource timeline)
- A map that associates a taskId with a list of Appenderators created for that task
Access to the datasource bundle map and the task->appenderator maps is synchronized. The methods
on this class can be called concurrently from multiple task threads. If there are no remaining
appenderators for a given datasource, the corresponding bundle will be removed from the bundle map.
Appenderators created by this class will use the shared per-datasource SinkQuerySegmentWalkers.
The per-datasource SinkQuerySegmentWalkers share a common queryExecutorService.
Each task that requests an Appenderator from this AppenderatorsManager will receive a heap memory limit
equal to WorkerConfig.globalIngestionHeapLimitBytes evenly divided by WorkerConfig.capacity.
This assumes that each task will only ingest to one Appenderator simultaneously.
The Appenderators created by this class share an executor pool for IndexMerger persist
and merge operations, with concurrent operations limited to `druid.worker.capacity` divided 2. This limit is imposed
to reduce overall memory usage.| Modifier and Type | Class and Description |
|---|---|
class |
UnifiedIndexerAppenderatorsManager.DatasourceBundle |
static class |
UnifiedIndexerAppenderatorsManager.LimitedPoolIndexMerger
This wrapper around IndexMerger limits concurrent calls to the merge/persist methods used by
StreamAppenderator with a shared executor service. |
| Constructor and Description |
|---|
UnifiedIndexerAppenderatorsManager(QueryProcessingPool queryProcessingPool,
JoinableFactory joinableFactory,
WorkerConfig workerConfig,
Cache cache,
CacheConfig cacheConfig,
CachePopulatorStats cachePopulatorStats,
com.fasterxml.jackson.databind.ObjectMapper objectMapper,
ServiceEmitter serviceEmitter,
com.google.inject.Provider<QueryRunnerFactoryConglomerate> queryRunnerFactoryConglomerateProvider) |
| Modifier and Type | Method and Description |
|---|---|
Appenderator |
createClosedSegmentsOfflineAppenderatorForTask(String taskId,
DataSchema schema,
AppenderatorConfig config,
FireDepartmentMetrics metrics,
DataSegmentPusher dataSegmentPusher,
com.fasterxml.jackson.databind.ObjectMapper objectMapper,
IndexIO indexIO,
IndexMerger indexMerger,
RowIngestionMeters rowIngestionMeters,
ParseExceptionHandler parseExceptionHandler) |
Appenderator |
createOfflineAppenderatorForTask(String taskId,
DataSchema schema,
AppenderatorConfig config,
FireDepartmentMetrics metrics,
DataSegmentPusher dataSegmentPusher,
com.fasterxml.jackson.databind.ObjectMapper objectMapper,
IndexIO indexIO,
IndexMerger indexMerger,
RowIngestionMeters rowIngestionMeters,
ParseExceptionHandler parseExceptionHandler) |
Appenderator |
createOpenSegmentsOfflineAppenderatorForTask(String taskId,
DataSchema schema,
AppenderatorConfig config,
FireDepartmentMetrics metrics,
DataSegmentPusher dataSegmentPusher,
com.fasterxml.jackson.databind.ObjectMapper objectMapper,
IndexIO indexIO,
IndexMerger indexMerger,
RowIngestionMeters rowIngestionMeters,
ParseExceptionHandler parseExceptionHandler)
Creates an Appenderator suited for batch ingestion.
|
Appenderator |
createRealtimeAppenderatorForTask(String taskId,
DataSchema schema,
AppenderatorConfig config,
FireDepartmentMetrics metrics,
DataSegmentPusher dataSegmentPusher,
com.fasterxml.jackson.databind.ObjectMapper objectMapper,
IndexIO indexIO,
IndexMerger indexMerger,
QueryRunnerFactoryConglomerate conglomerate,
DataSegmentAnnouncer segmentAnnouncer,
ServiceEmitter emitter,
QueryProcessingPool queryProcessingPool,
JoinableFactory joinableFactory,
Cache cache,
CacheConfig cacheConfig,
CachePopulatorStats cachePopulatorStats,
RowIngestionMeters rowIngestionMeters,
ParseExceptionHandler parseExceptionHandler)
Creates an Appenderator suited for realtime ingestion.
|
Map<String,UnifiedIndexerAppenderatorsManager.DatasourceBundle> |
getDatasourceBundles() |
<T> QueryRunner<T> |
getQueryRunnerForIntervals(Query<T> query,
Iterable<org.joda.time.Interval> intervals)
Returns a query runner for the given intervals over the Appenderators managed by this AppenderatorsManager.
|
<T> QueryRunner<T> |
getQueryRunnerForSegments(Query<T> query,
Iterable<SegmentDescriptor> specs)
Returns a query runner for the given segment specs over the Appenderators managed by this AppenderatorsManager.
|
void |
removeAppenderatorsForTask(String taskId,
String dataSource)
Removes any internal Appenderator-tracking state associated with the provided taskId.
|
boolean |
shouldTaskMakeNodeAnnouncements()
As AppenderatorsManager implementions are service dependent (i.e., Peons and Indexers have different impls),
this method allows Tasks to know whether they should announce themselves as nodes and segment servers
to the rest of the cluster.
|
void |
shutdown()
Shut down the AppenderatorsManager.
|
@Inject public UnifiedIndexerAppenderatorsManager(QueryProcessingPool queryProcessingPool, JoinableFactory joinableFactory, WorkerConfig workerConfig, Cache cache, CacheConfig cacheConfig, CachePopulatorStats cachePopulatorStats, com.fasterxml.jackson.databind.ObjectMapper objectMapper, ServiceEmitter serviceEmitter, com.google.inject.Provider<QueryRunnerFactoryConglomerate> queryRunnerFactoryConglomerateProvider)
public Appenderator createRealtimeAppenderatorForTask(String taskId, DataSchema schema, AppenderatorConfig config, FireDepartmentMetrics metrics, DataSegmentPusher dataSegmentPusher, com.fasterxml.jackson.databind.ObjectMapper objectMapper, IndexIO indexIO, IndexMerger indexMerger, QueryRunnerFactoryConglomerate conglomerate, DataSegmentAnnouncer segmentAnnouncer, ServiceEmitter emitter, QueryProcessingPool queryProcessingPool, JoinableFactory joinableFactory, Cache cache, CacheConfig cacheConfig, CachePopulatorStats cachePopulatorStats, RowIngestionMeters rowIngestionMeters, ParseExceptionHandler parseExceptionHandler)
AppenderatorsManagercreateRealtimeAppenderatorForTask in interface AppenderatorsManagerpublic Appenderator createOfflineAppenderatorForTask(String taskId, DataSchema schema, AppenderatorConfig config, FireDepartmentMetrics metrics, DataSegmentPusher dataSegmentPusher, com.fasterxml.jackson.databind.ObjectMapper objectMapper, IndexIO indexIO, IndexMerger indexMerger, RowIngestionMeters rowIngestionMeters, ParseExceptionHandler parseExceptionHandler)
createOfflineAppenderatorForTask in interface AppenderatorsManagerpublic Appenderator createOpenSegmentsOfflineAppenderatorForTask(String taskId, DataSchema schema, AppenderatorConfig config, FireDepartmentMetrics metrics, DataSegmentPusher dataSegmentPusher, com.fasterxml.jackson.databind.ObjectMapper objectMapper, IndexIO indexIO, IndexMerger indexMerger, RowIngestionMeters rowIngestionMeters, ParseExceptionHandler parseExceptionHandler)
AppenderatorsManagercreateOpenSegmentsOfflineAppenderatorForTask in interface AppenderatorsManagerpublic Appenderator createClosedSegmentsOfflineAppenderatorForTask(String taskId, DataSchema schema, AppenderatorConfig config, FireDepartmentMetrics metrics, DataSegmentPusher dataSegmentPusher, com.fasterxml.jackson.databind.ObjectMapper objectMapper, IndexIO indexIO, IndexMerger indexMerger, RowIngestionMeters rowIngestionMeters, ParseExceptionHandler parseExceptionHandler)
createClosedSegmentsOfflineAppenderatorForTask in interface AppenderatorsManagerpublic void removeAppenderatorsForTask(String taskId, String dataSource)
AppenderatorsManagerremoveAppenderatorsForTask in interface AppenderatorsManagerpublic <T> QueryRunner<T> getQueryRunnerForIntervals(Query<T> query, Iterable<org.joda.time.Interval> intervals)
AppenderatorsManagergetQueryRunnerForIntervals in interface AppenderatorsManagerpublic <T> QueryRunner<T> getQueryRunnerForSegments(Query<T> query, Iterable<SegmentDescriptor> specs)
AppenderatorsManagergetQueryRunnerForSegments in interface AppenderatorsManagerpublic boolean shouldTaskMakeNodeAnnouncements()
AppenderatorsManagershouldTaskMakeNodeAnnouncements in interface AppenderatorsManagerpublic void shutdown()
AppenderatorsManagershutdown in interface AppenderatorsManagerpublic Map<String,UnifiedIndexerAppenderatorsManager.DatasourceBundle> getDatasourceBundles()
Copyright © 2011–2021 The Apache Software Foundation. All rights reserved.