在 azure synapse 中调用 POST livy 批处理 api 时,Spark 请求的核心数量多于要求的数量

问题描述 投票:0回答:2

我有一个 Azure Synapse Spark 集群,有 3 个节点,每个节点有 4 个 vCore 和 32 GB 内存。我正在尝试使用 azure synapse Livy 批处理 API 提交 Spark 作业。请求看起来像这样,

curl --location --request POST 'https://<synapse-workspace>.dev.azuresynapse.net/livyApi/versions/2019-11-01-preview/sparkPools/<pool-name>/batches?detailed=true' `
--header 'cache-control: no-cache' `
--header 'Authorization: Bearer <Token>' `
--header 'Content-Type: application/json' `
--data-raw '{
    "name": "T1",
    "file": "folder/file.py",
    "driverMemory": "1g",
    "driverCores": 1,
    "executorMemory": "1g",
    "executorCores":1,
    "numExecutors": 3
}'

我得到的回复是这样的,

{
    "TraceId": "<some-guid>",
    "Message": "Your Spark job requested 16 vcores. However, the pool has a 12 core limit. Try reducing the numbers of vcores requested or increasing your pool size."
}

我不明白为什么它要求 16 核。不是应该要求 4 (3 * 1 + 1) 个核心吗?

更新: 我尝试将节点池大小更改为 3 个节点,每个节点有 8 个 vCore 和 64 GB 内存。并且,通过此配置,

{
    "name": "T1",
    "file": "folder/file.py",
    "driverMemory": "1g",
    "driverCores": 1,
    "executorMemory": "1g",
    "executorCores": 1,
    "numExecutors": 6
}

它需要 28 个核心(即使是 executorCores 2、3、4)。如果我将 executorCores 更改为 5、6、7 或 8,它将请求 56 个核心。

apache-spark hadoop-yarn azure-synapse spark-submit livy
2个回答
0
投票

从门户无法完成您想要做的事情。

但是您仍然可以通过指定driver(核心和内存)和executor(核心和内存)来提交spark作业。例如,使用以下内容:从 Java 在 Azure Synapse 中提交 Spark 作业

使用上面的代码,我能够在 3 个节点中型实例(每个 8 个核心,但只有 7 个可用,因为 1 个保留给hadoop 守护进程)。


0
投票

Livy 用于计算 vcore 使用情况的逻辑与yarn 中的逻辑不同。 Livy 似乎在没有告诉我们的情况下将您的 driverCores 和 executorCores“四舍五入”为 4 或 8 的倍数。每当客户遇到这种意外行为时,它看起来就像一个错误。

虽然 YARN 集群管理器可以接受较小的作业,但小型作业无法通过自定义 Livy 实现的大门(这都是来自 Synapse-Spark 团队的自制代码)。

2023 年 9 月 27 日,我收到了 CSS 的以下更新。我希望我可以分享 ICM # 或 BUG #,但这些很难获得。我相信这里提到的“PG”指的是Synapse Spark团队中的“工作服务”工程师。

“我们收到 PG 团队的更新消息,负责将核心四舍五入到最接近的可用大小的微服务已被修改以适应更小的容器大小,我们还部署了新的位,目前版本已到达美国东部区域,因此很快就会完成,您将能够看到改进。”

长话短说,在为任意大小的执行器和驱动程序提交作业时,Livy 可能会开始表现得更好。这也有可能导致 Spark 池自动调整大小至最大节点数(通过 Yarn)。我不会屏住呼吸,直到我亲眼目睹这一切发生。希望这是有道理的。我将在部署和测试完成后尝试更新我的答案。

© www.soinside.com 2019 - 2024. All rights reserved.