我得把spark申请表上的遗嘱执行人人数定为20人。在查看官方文档时,我很困惑哪种配置更好spark.dynamicallocation.initialexecutors=20spark.executor.instances=20我已启用以下配置spark.dynamicallocation.enabled=真在什么用例场景中我会使用它们?
kcwpcxri1#
根据spark文档spark.DynamicLocation.initialexecutors启用动态分配时要运行的执行器的初始数目。如果 --num-executors (或 spark.executor.instances )如果设置为且大于此值,则它将用作执行器的初始数目。正如您在突出显示的文本中看到的,当--num executors设置为高于spark.dynamicallocation.initialexecutors的值时,它可以被--num executors覆盖。基本上,当您的应用程序启动时,它将启动spark.dynamicalocation.initialexecutors,然后缓慢增加,直到启用动态分配时spark.dynamicalocation.maxexecutors。spark.executor.instances示例静态分配的执行者数。通俗地说,这就像说我需要x个资源(spark.executor.instances)来完成一项工作(或)我想要最小(x资源)和最大(y资源)以及初始(z资源)来完成作业。。。条件(x<=z<=y)应始终满足,并且在作业运行时,资源的使用情况将根据需要决定。何时使用动态分配?当您的群集上运行多个流应用程序或按需spark sql作业时。大多数情况下,您的作业可能需要很少的资源,而且几乎只在大数据流块(高峰时间)中保持空闲。作业可能需要更多的资源来处理数据,否则应释放群集资源并将其用于其他目的。注意:当启用动态分配时,请确保启用外部随机服务(spark.shuffle.service.enabled=true)。外部shuffle服务的目的是允许删除执行器,而不删除它们编写的shuffle文件(更详细)。设置此服务的方式因集群管理器而异参考资料:https://dzone.com/articles/spark-dynamic-allocation
--num-executors
spark.executor.instances
1条答案
按热度按时间kcwpcxri1#
根据spark文档
spark.DynamicLocation.initialexecutors
启用动态分配时要运行的执行器的初始数目。
如果
--num-executors
(或spark.executor.instances
)如果设置为且大于此值,则它将用作执行器的初始数目。正如您在突出显示的文本中看到的,当--num executors设置为高于spark.dynamicallocation.initialexecutors的值时,它可以被--num executors覆盖。基本上,当您的应用程序启动时,它将启动spark.dynamicalocation.initialexecutors,然后缓慢增加,直到启用动态分配时spark.dynamicalocation.maxexecutors。
spark.executor.instances示例
静态分配的执行者数。
通俗地说,这就像说我需要x个资源(spark.executor.instances)来完成一项工作
(或)
我想要最小(x资源)和最大(y资源)以及初始(z资源)来完成作业。。。条件(x<=z<=y)应始终满足,并且在作业运行时,资源的使用情况将根据需要决定。
何时使用动态分配?
当您的群集上运行多个流应用程序或按需spark sql作业时。大多数情况下,您的作业可能需要很少的资源,而且几乎只在大数据流块(高峰时间)中保持空闲。作业可能需要更多的资源来处理数据,否则应释放群集资源并将其用于其他目的。
注意:当启用动态分配时,请确保启用外部随机服务(spark.shuffle.service.enabled=true)。
外部shuffle服务的目的是允许删除执行器,而不删除它们编写的shuffle文件(更详细)。设置此服务的方式因集群管理器而异
参考资料:https://dzone.com/articles/spark-dynamic-allocation