如何使用spark独立集群在工作节点上管理多个执行器?

py49o6xq  于 2021-05-31  发布在  Hadoop
关注(0)|答案(2)|浏览(451)

到目前为止,我只在hadoop集群上使用了spark和yarn作为资源管理器。在这种类型的集群中,我确切地知道要运行多少执行器以及资源管理是如何工作的。但是,知道我正在尝试使用一个独立的spark集群,我有点困惑。纠正我的错误。
在本文中,默认情况下,工作节点使用节点的所有内存减去1GB。但我明白通过使用 SPARK_WORKER_MEMORY ,我们可以使用较少的内存。例如,如果节点的总内存是32GB,但我指定了16GB,那么spark worker在该节点上使用的内存不会超过16GB?
但遗嘱执行人呢?假设我想在每个节点上运行2个执行器,我可以通过在运行期间指定执行器内存来实现吗 spark-submit 成为…的一半 SPARK_WORKER_MEMORY ,如果我希望每个节点运行4个执行器,则将executor memory指定为 SPARK_WORKER_MEMORY ?
如果是这样的话,除了executor内存之外,我还必须正确地指定executor内核。例如,如果我想在一个worker上运行4个executors,我必须将executor cores指定为 SPARK_WORKER_CORES ? 如果我指定一个比这个大的数字会发生什么?我的意思是如果我指定执行器内存是 SPARK_WORKER_MEMORY ,但执行器内核只有 SPARK_WORKER_CORES ? 在这种情况下,我会在该节点上运行2或4个执行器吗?

f4t66c6m

f4t66c6m1#

根据我的经验,这是控制执行器、内核和内存数量的最佳方法。
核心:您可以设置所有执行器的核心总数和每个执行器的核心数
内存:执行器内存
--执行器内核总数12--执行器内核2--执行器内存6g
这将给你6个执行器和2核/6g每个执行器,所以你总共看12核和36g
您可以使用
--驱动程序内存2g

n53p2ov0

n53p2ov02#

所以,我自己也尝试了一下spark独立集群,这就是我注意到的。
我的直觉是,通过调整执行器内核,可以在一个worker内部运行多个执行器,这确实是正确的。比如说,你的工人有16个核心。现在,如果为执行器指定8个内核,spark将为每个工作进程运行2个执行器。
在一个worker中运行的执行器数量还取决于您指定的执行器内存。例如,如果工作机内存为24 gb,并且您希望每个工作机运行2个执行器,则不能将执行器内存指定为大于12 gb。
通过为可选参数指定值,可以在启动从属时限制辅助进程的内存 --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个内核。

相关问题