【问题标题】:How does spark choose nodes to run executors?(spark on yarn)spark如何选择节点来运行executors?(spark on yarn)
【发布时间】:2018-02-06 16:30:01
【问题描述】:

spark如何选择节点来运行executors?(spark on yarn) 我们使用 spark on yarn 模式,集群有 120 个节点。 昨天一个 spark 作业创建了 200 个执行器,而 node1 上有 11 个执行器, node2上有10个executor,其他executor平均分布在其他节点上。

由于 node1 和 node2 上的 executor 太多,所以作业运行缓慢。

spark如何选择节点运行executors? 根据纱线资源管理器?

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    正如您提到的 Spark on Yarn: Yarn Services 根据集群资源的可用性为 spark 作业选择 executor 节点。请检查队列系统和纱线的动态分配。最好的文档https://blog.cloudera.com/blog/2016/01/untangling-apache-hadoop-yarn-part-3/

    【讨论】:

      【解决方案2】:

      集群管理器在其他应用程序之间分配资源。 我认为问题在于糟糕的优化配置。您需要在动态分配上配置 Spark。在这种情况下,Spark 将分析集群资源并添加更改以优化工作。

      您可以在此处找到有关 Spark 资源分配以及如何配置的所有信息:http://site.clairvoyantsoft.com/understanding-resource-allocation-configurations-spark-application/

      【讨论】:

      • 谢谢。那么容器的分配是由yarn控制的?
      • @MengQi 是的,你是对的!请进入我上面的答案
      【解决方案3】:

      所有 120 个节点的容量是否相同?

      此外,作业将根据节点管理器的运行状况和资源可用性提交给合适的节点管理器。

      为了优化 Spark 作业,您可以使用动态资源分配,您不需要定义运行作业所需的执行器数量。默认情况下,它使用配置的最小 cpu 和内存运行应用程序。稍后它会从集群中获取资源以执行任务。一旦作业完成并且作业空闲到配置的空闲超时值,它将向集群管理器释放资源。再次启动时,它会从集群中回收资源。

      【讨论】:

        猜你喜欢
        • 2016-11-14
        • 1970-01-01
        • 1970-01-01
        • 2015-07-31
        • 2017-10-31
        • 2016-08-20
        • 1970-01-01
        • 2019-07-25
        • 1970-01-01
        相关资源
        最近更新 更多