当前位置: 首页 > 知识库问答 >
问题:

在Apache Storm中重新平衡执行程序

蔡理
2023-03-14

我正在尝试重新平衡正在运行的Apache Storm(0.9.5)拓扑中的bolt执行程序的数量。当我对Nimbus节点执行命令./Storm rebalance MyTopology-n 2-e greenbolt=4时,它接受命令行输入,但当我在Storm UI中查看时,执行者的数量不会改变。

是不是有一个限制,我没有意识到,就像再平衡不能增加执行者的总数,只能把他们从一个螺栓移动到另一个螺栓?

共有1个答案

夏侯臻
2023-03-14

您总是需要拥有比执行者更多(或相等数量)的任务。由于任务的数量是固定的,您需要设置一个比初始执行程序更大的初始数量,以便能够在运行时扩展执行程序的数量。您可以看到任务的数量,即执行程序的最大数量:

#executors <= #numTasks

有关详细信息,请参见此处:https://storm.apache.org/documentation/commanding-the-parallelism-of-a-storm-topology.html

 类似资料:
  • 假设我有一个包含1,000个元素和10个执行器的RDD。现在我用10个分区并行化RDD,并由每个执行器处理100个元素(假设每个执行器1个任务)。 我的困难是,其中一些分区任务可能比其他任务花费的时间要长得多,所以说8个执行器将很快完成,而剩下的2个执行器则将被困在执行时间更长的任务中。因此,主进程将等待2完成后再继续,8将处于空闲状态。 有什么方法可以让无所事事的执行者从忙碌的执行者那里“拿走”

  • 这是我读完后想到的一个问题:Storm并行中的“任务”是什么 如果我需要在bolt的内部状态中保留一些信息,例如,在经典的单词计数用例中,在一个hashmap中保留在bolt中看到的每个单词的计数。执行“rebalance”命令后,将bolt的任务移到另一个执行器,该执行器可能在另一个JVM中,甚至可能在另一台机器中。bolt的内部状态(本例中的字数hashmap)是否会转移到新环境(instan

  • 我们有一个相对简单的分片MongoDB设置:4个分片,每个分片是一个副本集,至少有3个成员。每个集合都由从大量文件加载的数据组成;每个文件都被赋予一个单调递增的ID,并且根据ID的哈希完成分片。 我们的大部分产品都在按预期工作。然而,我有一个集合似乎没有正确地将块分布到各个碎片上。在创建索引之前,集合加载了大约30GB的数据,并且进行了分片,但是据我所知,这并不重要。以下是该集合的统计数据: 这个

  • 问题:修改一个BST,使它变得尽可能平衡。不用说,你应该尽可能有效率地做这件事。 提示:面试官说这是一个合乎逻辑的问题,如果你换位思考就会得到答案。没有困难的编码涉及。 -->话虽如此,但我不认为他希望我指向AVL/RB树。 我的解决方案是:我提出,我将对树进行顺序遍历,将中间元素作为新树的根(我们称之为新根)。然后到中间元素的左边,取它的中间元素作为树的左子树的根,生成新根。同样地,正确的部分也

  • 我有一个大约 100GB 的数据源,我正在尝试使用日期列对其进行分区。 为了避免分区内出现小块,我添加了一个重新分区(5 ),使每个分区内最多有5个文件: 我的问题是,在我分配的30个执行器中,只有5个在实际运行。最后我得到了我想要的东西(每个分区内有5个文件),但由于只有5个执行器在运行,所以执行时间非常长。 你有什么建议可以让我做得更快吗?

  • 我想知道当重新平衡发生时,当前处理使用者线程会发生什么? 使用者线程#T1->调用一些服务,并等待套接字超时,该超时是无限的。这意味着线程#t1在最坏的情况下不会再次调用poll。一旦超过50万次,这种再平衡就被触发了 使用者线程#T2和使用者线程#T3->将参与poll()方法调用的重新平衡,因为它们工作正常。 现在,线程t1在再平衡时会发生什么? null