spark如何选择节点来运行执行程序?(在纱线上点火) 我们使用火花模式,具有120个节点的集群。 昨天一个spark job创建了200个执行器,而node1上有11个执行器, node2上有10个执行程序,其他执行程序在其他节点上平均分配。
由于node1和node2上有很多执行程序,因此作业运行缓慢。
spark如何选择节点来运行执行程序? 根据yarn resourceManager?
答案 0 :(得分:1)
正如你提到Spark on Yarn: Yarn Services根据群集资源的可用性为spark作业选择执行程序节点。请检查Yarn的队列系统和动态分配。最好的文档https://blog.cloudera.com/blog/2016/01/untangling-apache-hadoop-yarn-part-3/
答案 1 :(得分:0)
Cluster Manager在其他应用程序之间分配资源。 我认为问题在于优化配置错误。您需要在动态分配上配置Spark。在这种情况下,Spark将分析群集资源并添加更改以优化工作。
您可以在此处找到有关Spark资源分配以及如何配置它的所有信息:http://site.clairvoyantsoft.com/understanding-resource-allocation-configurations-spark-application/
答案 2 :(得分:0)
所有120个节点的容量是否相同?
此外,作业将根据节点管理器的运行状况和资源可用性提交给合适的节点管理器。
要优化spark作业,您可以使用动态资源分配,您无需定义运行作业所需的执行程序数。默认情况下,它使用配置的最小cpu和内存运行应用程序。稍后,它从集群中获取资源以执行任务。一旦作业完成,并且作业空闲到配置的空闲超时值,它将向集群管理器释放资源。一旦它再次启动,它将从集群中回收资源。