在 Ray 作业中使用作业参数 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Ray 作业中使用作业参数

为 Amazon Glue Ray 任务设置参数的方式与为 Amazon Glue Spark 作业设置参数的方法相同。有关 Amazon Glue API 的更多信息,请参阅任务。您可以使用本参考中列出的不同参数配置 Amazon Glue Ray 作业。也可以提供自己的参数。

您可以在控制台的 Job details(作业详细信息)选项卡的 Job Parameters(作业参数)标题下配置作业。还可以设置作业上的 DefaultArguments 或作业运行上的 Arguments 来通过 Amazon 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 作业中访问作业参数。这为您提供了一种为每次运行配置作业的方法。环境变量的名称将是不带 -- 前缀的作业参数名称。

例如,在上面的实例中,变量名将为 scriptLocationtest-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 应用程序级别详细信息。有关日志的更多信息,请参阅对日志中的 Amazon Glue for Ray 错误进行故障排除

  • S3 - 配置 Amazon 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 - Amazon Glue for Ray 支持使用 Amazon S3 作为扩展 Ray 对象存储可用空间的一种方式。要启用此行为,您可以为 Ray 提供一个带有此参数的对象溢出 JSON 配置对象。有关 Ray 对象溢出配置的更多信息,请参阅 Ray 文档中的 Object Spilling。格式:JSON 对象。

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

    在 CLI 中提供 JSON 对象作为配置时,必须将其作为字符串提供,并对 JSON 对象进行字符串转义。例如,溢出到一个 Amazon S3 路径的字符串值将如下所示:"{\"type\": \"smart_open\", \"params\": {\"uri\":\"s3path\"}}"。在 Amazon Glue Studio 中,将此参数作为 JSON 对象提供,无需额外格式。

  • --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 的模块。与 Amazon Glue ETL 不同,自定义模块不是通过 pip 设置的,而是传递给 Ray 供分发。有关更多信息,请参阅 用于 Ray 作业的其他 Python 模块

  • --working-dir - 托管在 Amazon S3 中的.zip 文件的路径,该文件包含要分发到运行 Ray 作业的所有节点的文件。格式:字符串。有关更多信息,请参阅 为您的 Ray 作业提供文件