当我运行 Spark 流应用程序时,4 个执行程序的运行时间是否可能比 1、2、6、10 个执行程序的运行时间更长?
如果您使用 4 个执行程序(4 个不同的 Java 进程)运行 Spark 作业,并且每个执行程序都配置为具有 1 GB 内存和只有 1 个内核(--executor-memory 1g --executor-cores 1),那么意味着您一次只能运行一个工作任务。使用您拥有的相同配置增加执行程序的数量将产生更好的结果。
如果您只想使用 4 个执行器来提高性能,那么增加内核数量将提高并行度(同时运行更多的工作任务)。但是,随着内核数量的增加,您很可能需要更多内存,并且随着内存使用量的增加,您需要确保不会遇到 Java 性能问题(垃圾收集)。
因此,为了在没有任何其他细节的情况下非常简短地回答您的问题,理论上您可以使用 4 个具有 3 或 4 个核心(并行运行 12 或 16 个任务)的执行器获得更好的结果,而不是只有 1 个核心的 6 或 10 个执行器每个(一次运行 6 或 10 个任务)。
编辑:
我忽略了你在这里关于“Spark Streaming”的声明。除了执行程序的数量之外,还有更多的考虑因素会影响您的 Spark 流应用程序的性能。在某些情况下,例如使用直接 API 从单个 Kafka 主题分区读取数据,增加执行程序和内核的数量根本不会产生任何影响。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句