

# 在 AWS Glue 中处理 Ray 作业
<a name="ray-jobs-section"></a>

**重要**  
自 2026 年 4 月 30 日起，AWS Glue for Ray 将不再向新客户开放。要使用 AWS Glue for Ray，请在该日期之前注册。现有客户可以继续正常使用该服务。要获取与 AWS Glue for Ray 相似的功能，可探索 Amazon EKS。有关更多信息，请参阅 [AWS Glue for Ray 终止支持](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html)。

此部分提供有关使用 AWS Glue for Ray 作业的信息。有关编写 AWS Glue for Ray 脚本的更多信息，请参阅 [Ray 脚本编程](aws-glue-programming-ray.md) 部分。

**Topics**
+ [AWS Glue for Ray 入门](#author-job-ray-using)
+ [支持的 Ray 运行时环境](#author-job-ray-runtimes)
+ [Ray 作业的工作线程会计](#author-job-ray-worker-accounting)
+ [在 Ray 作业中使用作业参数](author-job-ray-job-parameters.md)
+ [使用指标监控 Ray 作业](author-job-ray-monitor.md)

## AWS Glue for Ray 入门
<a name="author-job-ray-using"></a>

要使用 AWS Glue for Ray，您可以使用为 AWS Glue for Spark 使用的相同 AWS Glue 作业和交互式会话。AWS Glue 作业专为循环运行相同的脚本而设计，而交互式会话旨在让您针对相同的预置资源按顺序运行代码片段。

AWS Glue ETL 和 Ray 在底层是不同的，所以在您的脚本中，您可以访问不同的工具、功能和配置。作为一个由 AWS Glue 管理的新计算框架，Ray 具有不同的架构，并使用不同的词汇来描述它的作用。有关更多信息，请参阅 Ray 文档中的[架构白皮书](https://docs.ray.io/en/latest/ray-contribute/whitepaper.html)。

**注意**  
AWS Glue for Ray 在美国东部（弗吉尼亚州北部）、美国东部（俄亥俄州）、美国西部（俄勒冈州）、亚太地区（东京）和欧洲地区（爱尔兰）发布。

### AWS Glue Studio 控制台中的 Ray 作业
<a name="author-job-ray-using-console"></a>

在 AWS Glue Studio—**Ray 脚本编辑器**中创建作业时，在 AWS Glue Studio 控制台的 **作业**页面上，可以选择一个新选项。选择此选项可在控制台中创建 Ray 作业。有关这些作业及其使用方法的详细信息，请参阅 [构建可视化 ETL 作业](author-job-glue.md)。

![\[AWS Glue Studio 中的作业页面，其中选择了 Ray 脚本编辑器选项。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/ray_job_setup.png)


### AWS CLI 和 SDK 中的 Ray 作业
<a name="author-job-ray-using-cli"></a>

AWS CLI 中的 Ray 作业与其他作业使用相同的 SDK 操作和参数。AWS Glue for Ray 为某些参数引入了新值。有关作业 API 的更多信息，请参阅 [作业](aws-glue-api-jobs-job.md)。

## 支持的 Ray 运行时环境
<a name="author-job-ray-runtimes"></a>

在 Spark 作业中，`GlueVersion` 确定 AWS Glue for Spark 作业中可用的 Apache Spark 和 Python 版本。Python 版本指示了 Spark 类型的作业支持的版本。这不是 Ray 运行时环境的配置方式。

对于 Ray 作业，应将 `GlueVersion` 设置为 `4.0` 或更高。但是，Ray 作业中可用的 Ray、Python 和其他库的版本由作业定义中的 `Runtime` 字段决定。

`Ray2.4` 运行时环境将在发布后至少 6 个月内可用。随着 Ray 的快速发展，您将能够在未来的运行时环境版本中整合 Ray 的更新和改进功能。

有效值：`Ray2.4`


| 运行时值 | Ray 和 Python 版本 | 
| --- | --- | 
| Ray2.4（适用于 AWS Glue 4.0\$1 版本） |  Ray 2.4.0 Python 3.9  | 

**其他信息**
+ 有关 Ray 版本附带 AWS Glue 的发行说明，请参阅 [AWS Glue 版本](release-notes.md#release-notes-versions)。
+ 有关在运行时环境中提供的 Python 库，请参阅 [Ray 作业提供的模块](edit-script-ray-env-dependencies.md#edit-script-ray-modules-provided)。

## Ray 作业的工作线程会计
<a name="author-job-ray-worker-accounting"></a>

AWS Glue 在新的基于 Graviton 的 EC2 工作线程类型上运行 Ray 作业，这些类型仅适用于 Ray 作业。为了适当地为这些工作负载配置 Ray 所设计的工作负载，我们提供了与大多数工作线程不同的计算资源与内存资源的比例。为了考虑这些资源，我们使用内存优化数据处理单元（M-DPU），而不是标准数据处理单元（DPU）。
+ 一个 M-DPU 相当于 4 个 vCPU 和 32 GB 内存。
+ 一个 DPU 相当于 4 个 vCPU 和 16 GB 内存。DPU 用于核算 AWS Glue 中使用 Spark 作业和相应工作线程的资源。

Ray 作业目前可以访问一种工作者类型 `Z.2X`。`Z.2X` 工作线程映射到 2 个 M-DPU（8 个 vCPU，64 GB 内存），并拥有 128 GB 的磁盘空间。`Z.2X` 计算机提供 8 个 Ray 工作线程（每个 vCPU 一个）。

在一个账户中可以同时使用的 M-DPU 数量受服务限额的限制。有关 AWS Glue 账户限制的更多信息，请参阅[AWS Glue端节点和配额](https://docs.aws.amazon.com/general/latest/gr/glue.html)。

您可以在作业定义中指定使用 `--number-of-workers (NumberOfWorkers)` 的 Ray 作业可用的工作节点数量。有关作业 API 中 Ray 值的更多信息，请参阅 [作业](aws-glue-api-jobs-job.md)。

您可以使用 `--min-workers` 作业参数进一步指定 Ray 作业必须分配的最小工作线程数。有关任务参数的更多信息，请参阅 [参考](author-job-ray-job-parameters.md#author-job-ray-parameters-reference)。

# 在 Ray 作业中使用作业参数
<a name="author-job-ray-job-parameters"></a>

**重要**  
自 2026 年 4 月 30 日起，AWS Glue for Ray 将不再向新客户开放。要使用 AWS Glue for Ray，请在该日期之前注册。现有客户可以继续正常使用该服务。要获取与 AWS Glue for Ray 相似的功能，可探索 Amazon EKS。有关更多信息，请参阅 [AWS Glue for Ray 终止支持](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html)。

为 AWS Glue Ray 任务设置参数的方式与为 AWS Glue Spark 作业设置参数的方法相同。有关 AWS Glue API 的更多信息，请参阅[作业](aws-glue-api-jobs-job.md)。您可以使用本参考中列出的不同参数配置 AWS Glue Ray 作业。也可以提供自己的参数。

您可以在控制台的 **Job details**（作业详细信息）选项卡的 **Job Parameters**（作业参数）标题下配置作业。还可以设置作业上的 `DefaultArguments` 或作业运行上的 `Arguments` 来通过 AWS CLI 配置作业。默认参数和作业参数将在多次运行时保留在作业中。

例如，以下是运行任务的语法，使用 `--arguments` 设置特殊参数。

```
$ aws glue start-job-run --job-name "CSV to CSV" --arguments='--scriptLocation="s3://my_glue/libraries/test_lib.py",--test-environment="true"'
```

设置参数后，您可以通过环境变量从 Ray 作业中访问作业参数。这为您提供了一种为每次运行配置作业的方法。环境变量的名称将是不带 `--` 前缀的作业参数名称。

例如，在上面的实例中，变量名将为 `scriptLocation` 和 `test-environment`。然后，您可以通过标准库中提供的方法检索参数：`test_environment = os.environ.get('test-environment')`。有关使用 Python 访问环境变量的更多信息，请参阅 Python 文档中的 [os module](https://docs.python.org/3/library/os.html)。

## 配置 Ray 作业生成日志的方式
<a name="author-job-ray-logging-configuration"></a>

默认情况下，Ray 作业生成的日志和指标会发送到 CloudWatch 和 Amazon S3。您可以使用 `--logging_configuration` 参数更改日志的生成方式，目前还可以用它来阻止 Ray 作业生成各种类型的日志。该参数会获取一个 JSON 对象，其键对应于您要更改的日志/行为。它支持以下键：
+ `CLOUDWATCH_METRICS` - 配置 CloudWatch 指标系列，这些指标可用于可视化作业运行状况。有关指标的更多信息，请参阅 [使用指标监控 Ray 作业](author-job-ray-monitor.md)。
+ `CLOUDWATCH_LOGS` - 配置 CloudWatch 日志，这些日志提供有关作业运行状态的 Ray 应用程序级别详细信息。有关日志的更多信息，请参阅[对日志中的 AWS Glue for Ray 错误进行故障排除](troubleshooting-ray.md)。
+ `S3` - 配置 AWS Glue 写入 Amazon S3 的内容，这些内容主要是类似于 CloudWatch 日志的信息，但以文件而不是日志流的形式写入。

要禁用 Ray 日志记录行为，请提供值 `{\"IS_ENABLED\": \"False\"}`。例如，要禁用 CloudWatch 指标和 CloudWatch 日志，请提供以下配置：

```
"--logging_configuration": "{\"CLOUDWATCH_METRICS\": {\"IS_ENABLED\": \"False\"}, \"CLOUDWATCH_LOGS\": {\"IS_ENABLED\": \"False\"}}"
```

## 参考
<a name="author-job-ray-parameters-reference"></a>

 Ray 作业可识别以下参数名称，这些参数名称可用于设置 Ray 作业和作业运行的脚本环境：
+ `--logging_configuration` - 用于停止生成 Ray 作业创建的各种日志。默认情况下，所有 Ray 作业都会生成这些日志。格式：字符串转义的 JSON 对象。有关更多信息，请参阅 [配置 Ray 作业生成日志的方式](#author-job-ray-logging-configuration)。
+ `--min-workers` — 分配给 Ray 作业的 Worker 节点的最小数量。一个 Worker 节点可以运行多个副本，每个虚拟 CPU 一个副本。格式：整数。最小值：0。最大值：`--number-of-workers (NumberOfWorkers)` 在作业定义中指定的值。有关 Worker 节点会计的更多信息，请参阅 [Ray 作业的工作线程会计](ray-jobs-section.md#author-job-ray-worker-accounting)。
+ `--object_spilling_config` - AWS Glue for Ray 支持使用 Amazon S3 作为扩展 Ray 对象存储可用空间的一种方式。要启用此行为，您可以为 Ray 提供一个带有此参数的*对象溢出* JSON 配置对象。有关 Ray 对象溢出配置的更多信息，请参阅 Ray 文档中的 [Object Spilling](https://docs.ray.io/en/latest/ray-core/objects/object-spilling.html)。格式：JSON 对象。

  AWS Glue for Ray 仅支持一次性溢出到磁盘或溢出到 Amazon S3。您可以提供多个溢出地点，前提是它们遵守此限制。溢出到 Amazon S3 时，您还需要为该存储桶的作业添加 IAM 权限。

  在 CLI 中提供 JSON 对象作为配置时，必须将其作为字符串提供，并对 JSON 对象进行字符串转义。例如，溢出到一个 Amazon S3 路径的字符串值将如下所示：`"{\"type\": \"smart_open\", \"params\": {\"uri\":\"s3path\"}}"`。在 AWS Glue Studio 中，将此参数作为 JSON 对象提供，无需额外格式。
+ `--object_store_memory_head` — 分配给 Ray 头节点上的 Plasma 对象存储的内存。此实例运行集群管理服务以及工作线程副本。该值表示热启动后实例上可用内存的百分比。使用此参数调整内存密集型工作负载，默认值对于大多数使用案例来说是可接受的。格式：正整数。最小值：1。最大值：100。

  有关 Plasma 的更多信息，请参阅 Ray 文档中的 [Plasma 内存对象存储](https://ray-project.github.io/2017/08/08/plasma-in-memory-object-store.html)。
+ `--object_store_memory_worker` — 分配给 Ray Worker 节点上的 Plasma 对象存储的内存。这些实例仅运行工作线程副本。该值表示热启动后实例上可用内存的百分比。此参数用于调整内存密集型工作负载，默认值对于大多数使用案例来说是可接受的。格式：正整数。最小值：1。最大值：100。

  有关 Plasma 的更多信息，请参阅 Ray 文档中的 [Plasma 内存对象存储](https://ray-project.github.io/2017/08/08/plasma-in-memory-object-store.html)。
+ `--pip-install` — 一组要安装的 Python 软件包。可以使用此参数从 PyPI 安装软件包。格式：以逗号分隔的列表。

  PyPI 软件包条目的格式为 `package==version`，带有目标软件包的 PyPI 名称和版本。条目使用 Python 版本匹配以匹配软件包和版本，例如 `==`，而不是单一等于 `=`。还有其他版本匹配运算符。有关更多信息，请参阅 Python 网站上的 [PEP 440](https://peps.python.org/pep-0440/#version-matching)。您还可以使用 `--s3-py-modules` 提供自定义模块。
+ `--s3-py-modules` - 一组托管 Python 模块分发的 Amazon S3 路径。格式：以逗号分隔的列表。

  您可以用它来将自己的模块分发到您的 Ray 作业中。您还可以使用 `--pip-install` 提供来自 PyPI 的模块。与 AWS Glue ETL 不同，自定义模块不是通过 pip 设置的，而是传递给 Ray 供分发。有关更多信息，请参阅 [用于 Ray 作业的其他 Python 模块](edit-script-ray-env-dependencies.md#edit-script-ray-python-libraries-additional)。
+ `--working-dir` - 托管在 Amazon S3 中的.zip 文件的路径，该文件包含要分发到运行 Ray 作业的所有节点的文件。格式：字符串。有关更多信息，请参阅 [为您的 Ray 作业提供文件](edit-script-ray-env-dependencies.md#edit-script-ray-working-directory)。

# 使用指标监控 Ray 作业
<a name="author-job-ray-monitor"></a>

**重要**  
自 2026 年 4 月 30 日起，AWS Glue for Ray 将不再向新客户开放。要使用 AWS Glue for Ray，请在该日期之前注册。现有客户可以继续正常使用该服务。要获取与 AWS Glue for Ray 相似的功能，可探索 Amazon EKS。有关更多信息，请参阅 [AWS Glue for Ray 终止支持](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html)。

您可以使用 AWS Glue Studio 和 Amazon CloudWatch 监控 Ray 作业。CloudWatch 可从 AWS Glue 收集和处理 Ray 中的原始指标，以便于分析。这些指标在 AWS Glue Studio 控制台中可视化，因此您可以在作业运行时对其进行监控。

有关如何监控 AWS Glue 的一般概述，请参阅[使用 Amazon CloudWatch 指标监控 AWS Glue](monitoring-awsglue-with-cloudwatch-metrics.md)。有关如何使用 AWS Glue 发布的 CloudWatch 指标的总体概述，请参阅[使用 Amazon CloudWatch 监控](monitor-cloudwatch.md)。

## 在 AWS Glue 控制台中监控 Ray 作业
<a name="author-job-ray-monitor-console"></a>

在作业运行的详细信息页面上的**运行详细信息**部分下面，您可以查看预先构建的聚合图，这些图可以可视化您的可用作业指标。AWS Glue Studio 将作业指标发送到 CloudWatch，用于每次作业运行。借助这些功能，您可以建立集群和任务的配置文件，也可以访问有关每个节点的详细信息。

有关可用指标图的更多信息，请参阅 [查看 Ray 作业运行的 Amazon CloudWatch 指标](view-job-runs.md#monitoring-job-run-metrics-ray)。

## CloudWatch 中 Ray 作业指标概述
<a name="author-job-ray-monitor-cw"></a>

在 CloudWatch 中启用详细监控后，我们会发布 Ray 指标。指标已发布到 `Glue/Ray` CloudWatch 命名空间。
+ **实例指标**

  我们发布有关分配给作业的实例的 CPU、内存和磁盘利用率的指标。这些指标由 `ExecutorId`、`ExecutorType` 和 `host` 等功能标识。这些指标是标准 Linux CloudWatch 代理指标的子集。您可以在 CloudWatch 文档中找到有关指标名称和功能的信息。有关详细信息，请参阅 [CloudWatch 代理收集的指标](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html)。
+ **Ray 集群指标**

  我们会将运行脚本的 Ray 进程的指标转发到这个命名空间，然后为您提供最关键的指标。可用指标可能因 Ray 版本而异。有关您的作业运行的 Ray 版本的更多信息，请参阅[AWS Glue 版本](release-notes.md)。

  Ray 在实例级别收集指标。同时还提供任务和集群的指标。有关 Ray 基础指标策略的更多信息，请参阅 Ray 文档中的 [Metrics](https://docs.ray.io/en/latest/ray-observability/ray-metrics.html#system-metrics)。

**注意**  
 我们不会将 Ray 指标发布到 `Glue/Job Metrics/` 命名空间，该命名空间仅用于 AWS Glue ETL 任务。