【问题标题】:Possible to start Dask in yarn-client mode?可以在纱线客户端模式下启动 Dask 吗?
【发布时间】:2018-10-08 19:47:38
【问题描述】:

我使用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 可以做同样的事情吗?

【问题讨论】:

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


    【解决方案1】:

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

    有两种部署模式可用于在 YARN 上启动 Spark 应用程序。在集群模式下,Spark驱动运行在集群上由YARN管理的应用主进程中,客户端启动应用后即可离开。在客户端模式下,驱动运行在客户端进程中,应用主控仅用于向YARN请求资源。

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

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

    对于 ApplicationMaster 的要求,实际上按 YARN 标准来说是很轻的。请注意,YARN 是一种资源分配服务,当容器请求它们时,它实际上并不会耗尽系统资源。

    【讨论】:

    • 我的困惑来自于此:我在同一个 EMR 集群上运行一个 Spark 应用程序和一个 Dask 应用程序,具有 2 个核心节点(c4.2xlarge 和 8 个 vCore)和一个主节点(m4.xlarge,8核心)。 Spark 应用程序请求并获得了 4 个执行器,每个执行器有 4 个核心 - 每个节点有 2 个执行器。当我为 Dask 应用程序指定 4 个每个具有 4 个核心的工作人员时,它无法分配它们。我认为这是因为在客户端模式下,Spark 驱动程序和 AM 使用主 vCore,而不是核心节点上的 vCore,但 Dask 没有。到底发生了什么?
    • 值得调查一下什么纱线计划用于火花案例。你可以通过仪表板甚至knit's yarn-api 来做到这一点。
    • 我知道它安排了 4 个执行者。我截取了这些截图:dropbox.com/s/fmrctpi0umt6qh3/yarn-spark-executors1.png?dl=0
    • 问题是,yarn怎么看这个分配
    • 嗯。有没有办法告诉?
    猜你喜欢
    • 2017-04-27
    • 2015-10-22
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2016-08-05
    相关资源
    最近更新 更多