锚杆执行器的性能利用不平衡

x6yk4ghg  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(262)

我正在从这组基准中运行滚动计数基准。以下是相关代码:

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,我希望为每个执行器报告的容量或多或少相等。我错过了什么?

fae0ux8s

fae0ux8s1#

你的工作是什么 spoutNum ? a会认为是的 1 作为 FileReaderSpout 读取本地文件(如果我没弄错的话)。
当你的开口销通过 localOrShuffle 某些示例将是本地节点 FileReaderSpout 还有一些遥控器。 localOrShuffle 首选发送到本地示例,并且仅在本地使用者过载的情况下通过网络发送。因此,本地split bolt执行器比远程执行器获得更多的数据。

相关问题