显示不同数量的执行者和任务的风暴UI

时间:2016-06-17 15:12:57

标签: apache-storm trident

我正在使用具有三叉戟拓扑的风暴,但我无法理解并行性是如何获得的,根据我的计算和我在风暴UI上看到的内容不同,

这里的代码是指定工人数量:

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 UI中显示23,如何?

enter image description here

EDITED

添加新屏幕截图,其中包含有关各个组件的信息

enter image description here

在这里,我可以看到Executors和任务的数量是50,但我没有为此设置任何配置,风暴是否提供了这个?

其次,发出的元组数量是巨大的,我没有产生这么多的数据,这是元组的100多倍,为什么这个元组在UI中显示?

1 个答案:

答案 0 :(得分:0)

发出的元组数量可能很大  原因:当spout发出一个元组时,它会指望ack,如果ack没有收到,它将重新发送元组,因此发出的和传输的计数可以是更高的值。 (检查ack计数与发射计数相比较小的数字)