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

spark streaming应该使用多少个执行器

廉博赡
2023-03-14

我必须编写spark streaming(createDirectStream API)代码。我将接收大约90K消息每秒,所以虽然使用100个分区为Kafka主题,以提高性能。

能不能请你告诉我,我该用多少个遗嘱执行人?我可以使用50个执行器和每个执行器2个核心吗?

另外,考虑如果批处理间隔为10秒,并且kafka主题的分区数为100,我会从每个kafka分区接收100个RDD,即1个RDD吗?在10秒批处理间隔内,每个分区是否只有1个RDD。

谢谢

共有1个答案

赖渊
2023-03-14

真的没有好的答案,这取决于集群中有多少执行器内存+内核。

硬限制是,您的执行程序进程总数不能超过kafka分区,并且您不想使网络或其他IO饱和。

因此,首先查找是否使用一个执行器来限制网络和/或内存/磁盘,然后运行两个执行器,看看吞吐量是否翻倍&在一台机器上网络速率是否减半。然后根据需要扩展核心和实例。

关于RDD,假设执行器实例与分区之间有1:1的映射,那么每个执行器在每个间隔内只能看到一个分区10秒的数据,每个执行器有自己的RDD要处理,因此每个批处理总共有100个RDDs。IMO中,“RDDs的数量”并不太重要,因为每个间隔总是得到1个RDD。

 类似资料:
  • Docker教程经常说我可以运行更多容器,以提高我的webapp的可用性。然而,这是一个非常宽泛的声明,并没有解释在不同的情况下应该运行多少个容器。我如何知道我是否需要1、5、10、100或1000个容器实例? 示例-我只有一台服务器,正在使用docker运行nginx和php fpm。每个容器一个。有了这个简单的设置,我的webapp就可以正常工作,而且看起来很灵敏。(在同一台服务器上)增加额外

  • 问题内容: 这是以下程序的输出。 我的问题是,ε值应该是多少? 是否有任何可靠的方法来获取值,而不是从天而降。 问题答案: 您第二个问题的答案是否定的。有限机器精度误差的大小可以任意大: 这给出,但是如果您增加,则可能会得到所需的几乎任何级别的错误。 关于如何编写数值稳定算法,过去和现在都有大量研究。这是一个难题。

  • 关于编译器(GCC)所做的优化,标准做法是什么?每个选项(-O、-O1、-O2、-O3、-Os、-s、-fexpensive-optimizations)有什么不同,我如何决定什么是最优的?

  • 问题内容: 有没有办法知道在Java中执行一个循环要花多少秒? 例如: 它不必精确到100%,而只是想知道要花费多长时间。里面的算法是一种写入.txt文件的密钥生成器。我希望它花费几分钟,因此对于我的第一次测试,我想计算秒数。 问题答案: 用Java编写微基准测试时需要非常小心。例如: 如果JIT编译器可以弄清楚循环体不影响代码结果,则可以对其进行优化。例如: 可能很快就会“运行”。 JIT编译后

  • 我正在使用火花流处理一些事件。它是以独立模式部署的,有1个主和3个工作人员。我已将每个执行人的核心数设为4个,执行人的总数设为24个。这意味着总共有6个执行者将被产生。我已经把摊开成真了。所以每个工人机器得到2个执行者。我的批处理间隔为1秒。另外,我已经将批处理重新分区为21。其余3个是给接收器的。在运行时,我从事件时间线观察到,只有3个执行器被使用。其他3个没有使用。据我所知,在spark独立模

  • 问题内容: 我正在尝试像这样安装doozer: 我得到这些错误。 问题答案: 在文档中进行了讨论: 在环境变量列表地方寻找Go代码。在Unix上,该值是用冒号分隔的字符串。在Windows上,该值为分号分隔的字符串。在计划9中,该值是一个列表。 必须设置为获取,构建和安装标准Go树之外的软件包。 在安装说明中讨论: Go二进制发行版假定它们将安装在(或Windows下),但是可以将Go工具安装到其