Я использую шторм с топологией трезубца, но я не могу понять, как достигается параллелизм, он отличается в зависимости от моих расчетов и того, что я вижу в пользовательском интерфейсе шторма,
Вот код назначения количества рабочих:
public Config getTopologyConfiguration() {
Config conf = new Config();
//conf.setDebug(true);
conf.setNumWorkers(6);
conf.setMessageTimeoutSecs(100);
return conf;
}
А вот код потоковой обработки:
s.name("aggregation_stream")
.parallelismHint(invoiceAggregationConfig.getSpoutParallelism())
.partitionBy(groupedFields)
.partitionAggregate(aggregateInputFields,
new GenericAggregator(groupedFields, aggregatedFieldsList, aggregateFieldsOperationList),
aggregatorOutputFields)
.parallelismHint(invoiceAggregationConfig.getAggregationParallelism())
.shuffle()
.each(aggregatorOutputFields,
new CreatePaymentFromInvoices(paymentType, groupMap, aggMap, paymentExtraParams),
Const.PAYMENT_FIELD)
.each(TridentUtils.fieldsConcat(aggregatorOutputFields, Const.PAYMENT_FIELD),
new CreateApplicationFromPaymentAndInvoices(invoiceType),
Const.APPLICATIONS_FIELD)
.each(TridentUtils.fieldsConcat(aggregatorOutputFields, Const.PAYMENT_FIELD, Const.APPLICATIONS_FIELD),
new RestbusFilterForPaymentAndApplications(environment, bu, serviceConfiguration))
.parallelismHint(invoiceAggregationConfig.getPersistenceParallelism());
а атрибуты параллелизма, которые я использую в приведенном выше коде, находятся здесь:
spoutParallelism: 3
aggregationParallelism: 6
persistenceParallelism: 6
Теперь по моим расчетам количество исполнителей должно быть 3 * 6 + 6 = 24.
Но в интерфейсе Storm отображается 23, как ??
ИЗМЕНЕНО
Добавление нового снимка экрана с информацией об отдельных компонентах
Здесь я вижу, что количество исполнителей и задач 50, но я не настраивал для этого какую-либо конфигурацию, обеспечивает ли шторм это сам ??
Во-вторых, количество генерируемых кортежей огромно, я не создаю так много данных, это более чем в 100 раз больше кортежей, почему такое количество кортежей отображается в пользовательском интерфейсе ??