我正在从这组基准中运行滚动计数基准。以下是相关代码:
spout = new FileReadSpout(BenchmarkUtils.ifAckEnabled(config));
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout(SPOUT_ID, spout, spoutNum);
builder.setBolt(SPLIT_ID, new WordCount.SplitSentence(), spBoltNum)
.localOrShuffleGrouping(SPOUT_ID);
builder.setBolt(COUNTER_ID, new RollingCountBolt(windowLength, emitFreq), rcBoltNum)
.fieldsGrouping(SPLIT_ID, new Fields(WordCount.SplitSentence.FIELDS));
我有一个三节点的设置,总共有96个核心 spBoltNum = 6
以及 rcBoltNum = 6
. 运行之后,我看到为对开螺栓的每个执行器报告的容量度量中存在严重的不平衡。即使每个节点有2个对拉螺栓执行器。我看到以下容量数字:
对开螺栓执行器
节点1~0.95
节点2~0.7
节点3~0.25
我不理解这种利用率的不平衡,因为对开螺栓的分组是local或shufflegrouping,我希望为每个执行器报告的容量或多或少相等。我错过了什么?
1条答案
按热度按时间fae0ux8s1#
你的工作是什么
spoutNum
? a会认为是的1
作为FileReaderSpout
读取本地文件(如果我没弄错的话)。当你的开口销通过
localOrShuffle
某些示例将是本地节点FileReaderSpout
还有一些遥控器。localOrShuffle
首选发送到本地示例,并且仅在本地使用者过载的情况下通过网络发送。因此,本地split bolt执行器比远程执行器获得更多的数据。