代码之家  ›  专栏  ›  技术社区  ›  MetallicPriest

在具有Spark独立集群的工作节点上如何管理多个执行器?

  •  0
  • MetallicPriest  · 技术社区  · 7 年前

    到目前为止,我只使用了Hadoop集群上的Spark,用Sharn作为资源管理器。在这种类型的集群中,我确切地知道要运行多少执行器以及资源管理是如何工作的。但是,要知道我正试图使用一个独立的星团,我有点困惑。在我错的地方纠正我。

    this article 默认情况下,工作节点使用节点的所有内存减去1 GB。但我通过使用 SPARK_WORKER_MEMORY 我们可以用更少的内存。例如,如果节点的总内存是32GB,但我指定了16GB,那么spark worker在该节点上的使用量将不会超过16GB?

    但遗嘱执行人呢?假设我想在每个节点上运行2个执行器,我可以通过在 spark-submit 一半 火花工人记忆 如果我想在每个节点上运行4个执行器,通过将执行器内存指定为 火花工人记忆 ?

    如果是这样,除了执行器内存之外,我还必须正确地指定执行器核心。例如,如果我想在一个工作者上运行4个执行器,我必须指定执行器核心是 SPARK_WORKER_CORES ?如果我指定一个比这个大的数字,会发生什么?我的意思是如果我指定遗嘱执行人的记忆是 火花工人记忆 ,但执行器核心仅为 火花工芯 ?在这种情况下,我会在该节点上运行2或4个执行器吗?

    2 回复  |  直到 7 年前
        1
  •  1
  •   skjagini    7 年前

    在我的经验中,这是控制执行器、核心和内存数量的最佳方法。

    • 您可以设置所有执行器的核心总数和每个执行器的核心数,您可以设置执行器内存。

      --执行器核心总数12——执行器核心2——执行器内存6G

      这将给您6个执行器和2个核心/6g每个执行器,所以总共您将看到12个核心和36g

    • 您可以使用设置驱动程序内存

      --驱动器内存2G

        2
  •  0
  •   MetallicPriest    7 年前

    所以,我自己对spark独立集群做了一些试验,这就是我注意到的。

    1. 我的直觉是,通过调优执行器核心,可以在一个工人内部运行多个执行器,这确实是正确的。假设您的工人有16个内核。现在,如果您为执行器指定8个内核,spark将为每个工作者运行2个执行器。

    2. 一个工作者内部运行的执行器数量也取决于您指定的执行器内存。例如,如果工作内存为24 GB,并且您希望为每个工作内存运行2个执行器,则不能将执行器内存指定为超过12 GB。

    3. 通过指定可选参数的值,可以限制从机启动时的工作内存。 --memory 或者通过改变 SPARK_WORKER_MEMORY . 与芯数相同( --cores / SPARK_WORKER_CORES )

    如果希望能够在独立的Spark集群上运行多个作业,可以使用 spark.cores.max 执行时的配置属性 spark-submit . 例如,像这样。

    spark-submit <other parameters> --conf="spark.cores.max=16" <other parameters>
    

    因此,如果您的独立spark集群总共允许64个内核,并且您只给程序提供16个内核,那么其他spark作业可以使用剩余的48个内核。

    推荐文章