【问题标题】:Mismatch in no of Executors(Spark in YARN Pseudo distributed mode)执行器数量不匹配(YARN 伪分布式模式下的 Spark)
【发布时间】:2018-11-28 15:37:44
【问题描述】:

我使用 YARN(Hadoop 2.6) 作为集群管理器运行 Spark。 YARN 以伪分布式模式运行。我已经用 6 个执行器启动了 spark shell,并且期待相同

spark-shell --master yarn --num-executors 6

但是在 Spark Web UI 中,我只看到 4 个执行器

有什么原因吗?

PS:我在 Ubuntu(14.04) 中运行了nproc 命令,结果如下。我相信这意味着,我的系统有 8 个核心

mountain@mountain:~$ nproc
8

【问题讨论】:

  • 可能没有足够的硬件资源来启动所有 6 个执行程序。你为 YARN 集群预留了多少内存?检查 YARN 资源管理器 UI Web 界面。
  • @vanekjar。从资源管理器 UI:总内存 -> 8 GB,VCores Total -> 8。这里有任何限制吗?

标签: hadoop apache-spark hadoop-yarn


【解决方案1】:

您是否考虑过 spark.yarn.executor.memoryOverhead? 可能它会创建隐藏的内存要求,最终纱线无法提供全部资源。 另外,请注意纱线圆形容器大小为 yarn.scheduler.increment-allocation-mb。 这里的所有细节: http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/

【讨论】:

    【解决方案2】:

    当您的集群上没有足够的资源来启动更多执行程序时,就会发生这种情况。考虑到以下几点

    1. Spark 执行器在纱线容器内运行。此容器大小由 yarn-site.xml 中的 yarn.scheduler.minimum-allocation-mb 的值确定。检查此属性。如果您现有的容器消耗了所有可用内存,那么新容器将无法使用更多内存。所以不会启动新的执行者

    2. UI 中的存储内存列显示用于执行和 RDD 存储的内存量。默认情况下,这等于 (HEAP_SPACE - 300MB) * 75%。其余的内存用于内部元数据、用户数据结构和其他东西。参考(Spark on YARN: Less executor memory than set via spark-submit)

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多