spark 调整优化 运行 次与执行者
spark tuning optimize running times with executors
当我 运行 一个 spark 流应用程序时,4 个执行器的 运行ning 时间是否可能比 1、2、6、10 个执行器的时间更好?
如果您运行使用 4 个执行程序(4 个不同的 Java 进程)来执行您的 Spark 作业,并且每个执行程序都配置为具有 1 GB 内存和只有 1 个内核(-- executor-memory 1g --executor-cores 1),那么这意味着您一次只能 运行 一个工作任务。使用您拥有的相同配置增加执行程序的数量将产生更好的结果。
如果你想只使用 4 个执行器来提高性能,那么增加内核数量将提高并行度(更多工作任务 运行 同时)。但是,随着内核数量的增加,您很可能需要更多内存,并且随着内存使用量的增加,您需要确保不会 运行 陷入 Java 性能问题(垃圾收集)。
因此,为了在没有任何其他细节的情况下非常简短地回答您的问题,理论上您可以使用 4 个执行器(每个执行器具有 3 或 4 个内核)(12 或 16 个任务 运行 并行)获得更好的结果,因为相对于 6 或 10 个执行器,每个执行器只有 1 个核心(6 或 10 个任务 运行ning 一次)。
已编辑:
我忽略了您在此处关于 "Spark Streaming." 的陈述 除了执行程序的数量之外,还有很多其他因素会影响您的 Spark 流应用程序的性能。在某些情况下,例如使用直接 API 从一个 Kafka 主题分区读取数据,增加执行器和内核的数量根本不会有任何影响。
当我 运行 一个 spark 流应用程序时,4 个执行器的 运行ning 时间是否可能比 1、2、6、10 个执行器的时间更好?
如果您运行使用 4 个执行程序(4 个不同的 Java 进程)来执行您的 Spark 作业,并且每个执行程序都配置为具有 1 GB 内存和只有 1 个内核(-- executor-memory 1g --executor-cores 1),那么这意味着您一次只能 运行 一个工作任务。使用您拥有的相同配置增加执行程序的数量将产生更好的结果。
如果你想只使用 4 个执行器来提高性能,那么增加内核数量将提高并行度(更多工作任务 运行 同时)。但是,随着内核数量的增加,您很可能需要更多内存,并且随着内存使用量的增加,您需要确保不会 运行 陷入 Java 性能问题(垃圾收集)。
因此,为了在没有任何其他细节的情况下非常简短地回答您的问题,理论上您可以使用 4 个执行器(每个执行器具有 3 或 4 个内核)(12 或 16 个任务 运行 并行)获得更好的结果,因为相对于 6 或 10 个执行器,每个执行器只有 1 个核心(6 或 10 个任务 运行ning 一次)。
已编辑:
我忽略了您在此处关于 "Spark Streaming." 的陈述 除了执行程序的数量之外,还有很多其他因素会影响您的 Spark 流应用程序的性能。在某些情况下,例如使用直接 API 从一个 Kafka 主题分区读取数据,增加执行器和内核的数量根本不会有任何影响。