本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Ray 作业中使用作业参数
为 AWS Glue Ray 任务设置参数的方式与为 AWS Glue Spark 作业设置参数的方法相同。有关 AWS Glue API 的更多信息,请参阅任务。您可以使用本参考中列出的不同参数配置 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
配置 Ray 作业生成日志的方式
默认情况下,Ray 作业生成的日志和指标会发送到 CloudWatch 和 Amazon S3。您可以使用 --logging_configuration
参数更改日志的生成方式,目前还可以用它来阻止 Ray 作业生成各种类型的日志。该参数会获取一个 JSON 对象,其键对应于您要更改的日志/行为。它支持以下键:
CLOUDWATCH_METRICS
- 配置 CloudWatch 指标系列,这些指标可用于可视化作业运行状况。有关指标的更多信息,请参阅 使用指标监控 Ray 作业。CLOUDWATCH_LOGS
- 配置 CloudWatch 日志,这些日志提供有关作业运行状态的 Ray 应用程序级别详细信息。有关日志的更多信息,请参阅对日志中的 AWS Glue for Ray 错误进行故障排除。S3
- 配置 AWS Glue 写入 Amazon S3 的内容,这些内容主要是类似于 CloudWatch 日志的信息,但以文件而不是日志流的形式写入。
要禁用 Ray 日志记录行为,请提供值 {\"IS_ENABLED\": \"False\"}
。例如,要禁用 CloudWatch 指标和 CloudWatch 日志,请提供以下配置:
"--logging_configuration": "{\"CLOUDWATCH_METRICS\": {\"IS_ENABLED\": \"False\"}, \"CLOUDWATCH_LOGS\": {\"IS_ENABLED\": \"False\"}}"
参考
Ray 作业可识别以下参数名称,这些参数名称可用于设置 Ray 作业和作业运行的脚本环境:
-
--logging_configuration
- 用于停止生成 Ray 作业创建的各种日志。默认情况下,所有 Ray 作业都会生成这些日志。格式:字符串转义的 JSON 对象。有关更多信息,请参阅 配置 Ray 作业生成日志的方式。 -
--min-workers
— 分配给 Ray 作业的 Worker 节点的最小数量。一个 Worker 节点可以运行多个副本,每个虚拟 CPU 一个副本。格式:整数。最小值:0。最大值:--number-of-workers (NumberOfWorkers)
在作业定义中指定的值。有关 Worker 节点会计的更多信息,请参阅 Ray 作业的工作线程会计。 -
--object_spilling_config
- AWS Glue for Ray 支持使用 Amazon S3 作为扩展 Ray 对象存储可用空间的一种方式。要启用此行为,您可以为 Ray 提供一个带有此参数的对象溢出 JSON 配置对象。有关 Ray 对象溢出配置的更多信息,请参阅 Ray 文档中的 Object Spilling。格式:JSON 对象。 AWS Glue for Ray 仅支持一次性溢出到磁盘或溢出到 Amazon S3。您可以提供多个溢出地点,前提是它们遵守此限制。溢出到 Amazon S3 时,您还需要为该存储桶的作业添加 IAM 权限。
在 CLI 中提供 JSON 对象作为配置时,必须将其作为字符串提供,并对 JSON 对象进行字符串转义。例如,溢出到一个 Amazon S3 路径的字符串值将如下所示:
"{\"type\": \"smart_open\", \"params\": {\"uri\":\"
。在 AWS Glue Studio 中,将此参数作为 JSON 对象提供,无需额外格式。s3path
\"}}" -
--object_store_memory_head
— 分配给 Ray 头节点上的 Plasma 对象存储的内存。此实例运行集群管理服务以及工作线程副本。该值表示热启动后实例上可用内存的百分比。使用此参数调整内存密集型工作负载,默认值对于大多数使用案例来说是可接受的。格式:正整数。最小值:1。最大值:100。有关 Plasma 的更多信息,请参阅 Ray 文档中的 Plasma 内存对象存储
。 -
--object_store_memory_worker
— 分配给 Ray Worker 节点上的 Plasma 对象存储的内存。这些实例仅运行工作线程副本。该值表示热启动后实例上可用内存的百分比。此参数用于调整内存密集型工作负载,默认值对于大多数使用案例来说是可接受的。格式:正整数。最小值:1。最大值:100。有关 Plasma 的更多信息,请参阅 Ray 文档中的 Plasma 内存对象存储
。 -
--pip-install
— 一组要安装的 Python 软件包。可以使用此参数从 PyPI 安装软件包。格式:以逗号分隔的列表。PyPI 软件包条目的格式为
package==version
,带有目标软件包的 PyPI 名称和版本。条目使用 Python 版本匹配以匹配软件包和版本,例如==
,而不是单一等于=
。还有其他版本匹配运算符。有关更多信息,请参阅 Python 网站上的 PEP 440。您还可以使用 --s3-py-modules
提供自定义模块。 -
--s3-py-modules
- 一组托管 Python 模块分发的 Amazon S3 路径。格式:以逗号分隔的列表。您可以用它来将自己的模块分发到您的 Ray 作业中。您还可以使用
--pip-install
提供来自 PyPI 的模块。与 AWS Glue ETL 不同,自定义模块不是通过 pip 设置的,而是传递给 Ray 供分发。有关更多信息,请参阅 用于 Ray 作业的其他 Python 模块。 -
--working-dir
- 托管在 Amazon S3 中的.zip 文件的路径,该文件包含要分发到运行 Ray 作业的所有节点的文件。格式:字符串。有关更多信息,请参阅 为您的 Ray 作业提供文件。