可以在纱线客户端模式下启动Dask吗?

时间:2018-04-27 23:08:47

标签: python amazon-web-services yarn dask dask-distributed

我使用dask_yarnknit的一部分)来启动Dask Yarn集群,如下所示:

import dask_yarn

cluster = dask_yarn.DaskYARNCluster(env='/home/hadoop/reqs/dvss.zip', lang='en_US.UTF-8')
cluster.start(n_workers=4, memory=5120, cpus=3)

这会在AM的核心节点上请求1个vCore,并将其余的vCore提供给工作人员。

在Spark中,我可以选择以yarn-client模式运行应用程序,这将使驱动程序在主节点上运行,然后工作人员可以自由使用所有核心节点资源。是否可以对dask_yarn执行相同的操作?

1 个答案:

答案 0 :(得分:0)

我认为你可能误解了spark中两种部署模式的含义。

  

有两种部署模式可用于在YARN上启动Spark应用程序。在集群模式下,Spark驱动程序在应用程序主进程内运行,该进程由群集上的YARN管理,客户端可以在启动应用程序后消失。在客户端模式下,驱动程序在客户端进程中运行,应用程序主服务器仅用于从YARN请求资源。

据此我了解ApplicationMaster始终存在,因此必须分配一些资源。问题是是否需要在纱线之外单独的客户流程。

对于knit,还总有一个ApplicationMaster和一个客户端进程 - 它有效地实现了客户端模式。此外,使用Dask调度程序的python进程将运行。这可能有点浪费,我们希望不需要(java)客户端进程,但它很小。

对于ApplicationMaster的要求,YARN标准实际上非常轻。请注意,YARN是资源分配服务,并且在容器请求时实际上不会耗尽系统资源。