Storm UI 显示不同数量的 Executors 和 Tasks
Posted
技术标签:
【中文标题】Storm UI 显示不同数量的 Executors 和 Tasks【英文标题】:Storm UI showing Different Numbers of Executors and Tasks 【发布时间】:2016-06-17 15:12:57 【问题描述】:我正在使用带有 trident 拓扑的 Storm,但我无法理解并行度是如何实现的,它根据我的计算和我在 Storm 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,怎么回事?
已编辑
添加包含单个组件信息的新屏幕截图
这里我可以看到Executors和tasks的数量是50个,但是我没有为此设置任何配置,storm自己提供这个吗??
其次,发出的元组数量庞大,我没有产生这么多数据,这是元组的 100 多倍,怎么会在 UI 中显示这么多元组?
【问题讨论】:
你能贴一下各个组件的截图吗?我相信这与acking有关,也让我们知道集群上有多少插槽是空的 @supermonk :我已经编辑了这个问题。请检查 请贴出构建和提交拓扑的完整代码 【参考方案1】:发出的元组数量可能很大 原因:当 spout 发出一个元组时,它会期待 ack,如果没有收到 ack,它将重新发送元组,因此发出和传输的计数可以是更高的值。 (检查确认它的小数并与发出的计数比较)
【讨论】:
请检查确认计数应该是以上是关于Storm UI 显示不同数量的 Executors 和 Tasks的主要内容,如果未能解决你的问题,请参考以下文章
storm单机运行报错 ERROR backtype.storm.daemon.executor -