【问题标题】:Hadoop YARN Cluster Performance TuningHadoop YARN 集群性能调优
【发布时间】:2015-11-09 06:24:30
【问题描述】:

我想知道一些参数来加速我的 YARN 集群上的 Spark 作业。

我有以下 Spark/YARN 配置,但我对执行速度不满意。我有很多未使用的 vcore 和内存。

Spark 配置:

- spark.yarn.am.cores = 2
- spark.executor.memory = 5g
- spark.executor.cores = 8

纱线配置:

- yarn.nodemanager.resource.memory-mb = 31744
- yarn.nodemanager.resource.cpu-vcores = 15
- yarn.scheduler.maximum-allocation-mb = 31744

从图片来看,

  1. 在节点 3 和 5 上,为什么要使用 2gb 中的 6gb。
  2. 节点 1、2、4、5、6 上的内存根本没有使用

此外,我希望能够为集群中的每个节点启动更多容器。

非常感谢您的帮助。

【问题讨论】:

  • 您当前的应用程序只需要 3 个来自 YARN 的容器。尝试使用 --num-executors 3 增加 spark executor 的数量,调整 executor 内存和内核可能也有用。请注意,以下步骤应该会增加资源利用率,但您需要了解 Spark 如何调整应用程序的性能。

标签: hadoop apache-spark hadoop-yarn


【解决方案1】:

添加这个 spark conf,成功了:

spark.executor.instances = 6

【讨论】:

    【解决方案2】:

    要改进 Yarn 上的 Spark 作业,您可以使用以下参数:

    spark.executor.instances:它创建了几个执行器(实际上是 JVM)以提高性能,例如 drecute 所说的。

    spark.executor.instances = 6
    

    spark.executor.cores:此外,Spark 是多线程兼容的。这意味着对于您定义的每个执行器,spark 可以同时在该执行器上处理多个操作。供您使用:

    spark.executor.cores = $int
    

    缓存在内存中:最后,可以在内存中缓存数据以提高性能。通过使用它,您可以预期将延迟时间划分为 5 倍到 20 倍。要使用此模式,请参考以下参数:

    spark.driver.memory
    spark.executor.memory
    spark.driver.memory
    spark.yarn.memoryOverhead
    spark.yarn.driver.memoryOverhead
    

    这是来自 Cloudera 的教程,它解释了如何调整 Spark 作业以及如何在内存中缓存数据:

    http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多