适用于 Apache Spark 的 Cloud Shuffle 存储插件 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

适用于 Apache Spark 的 Cloud Shuffle 存储插件

Cloud Shuffle 存储插件是一款与 ShuffleDataIO API 兼容的 Apache Spark 插件,它允许在云存储系统(例如 Amazon S3)上存储 shuffle 数据。它可以帮助您补充或替换本地磁盘存储容量以进行大型随机播放,这些操作通常由 Spark 应用程序中的 joinreduceByKeygroupByKeyrepartition 等转换触发,从而减少无服务器数据分析任务和管道的常见故障或性价比/性能失调。

Amazon Glue

Amazon Glue 版本 3.0 和 4.0 预装了插件,无需任何额外步骤即可在 Amazon S3 上进行重组。有关更多信息,请参阅 Amazon Glue 搭载 Amazon S3 的 Spark shuffle 插件,以为您的 Spark 应用程序启用该功能。

其他 Spark 环境

该插件要求在其他 Spark 环境中设置以下 Spark 配置:

  • --conf spark.shuffle.sort.io.plugin.class=com.amazonaws.spark.shuffle.io.cloud.ChopperPlugin:这通知 Spark 为 Shuffle IO 使用这个插件。

  • --conf spark.shuffle.storage.path=s3://bucket-name/shuffle-file-dir:您的随机播放文件的存储路径。

注意

该插件覆盖了一个 Spark 核心类。因此,需要在 Spark jar 之前加载插件 jar。如果在 Amazon Glue 外部使用插件,则可以使用 userClassPathFirst 在本地 YARN 环境中执行此操作。

将插件与您的 Spark 应用程序捆绑在一起

在本地开发 Spark 应用程序时,您可以在 Maven pom.xml 中添加插件依赖关系,将插件与 Spark 应用程序和 Spark 发行版(版本 3.1 及更高版本)捆绑在一起。有关插件和 Spark 版本的更多信息,请参阅插件版本

<repositories> ... <repository> <id>aws-glue-etl-artifacts</id> <url>https://aws-glue-etl-artifacts.s3.amazonaws.com/release/ </url> </repository> </repositories> ... <dependency> <groupId>com.amazonaws</groupId> <artifactId>chopper-plugin</artifactId> <version>3.1-amzn-LATEST</version> </dependency>

您也可以直接从 Amazon Glue Maven 构件下载二进制文件,并将它们包含在您的 Spark 应用程序中,如下所示。

#!/bin/bash sudo wget -v https://aws-glue-etl-artifacts.s3.amazonaws.com/release/com/amazonaws/chopper-plugin/3.1-amzn-LATEST/chopper-plugin-3.1-amzn-LATEST.jar -P /usr/lib/spark/jars/

Spark 提交示例

spark-submit --deploy-mode cluster \ --conf spark.shuffle.storage.s3.path=s3://<ShuffleBucket>/<shuffle-dir> \ --conf spark.driver.extraClassPath=<Path to plugin jar> \ --conf spark.executor.extraClassPath=<Path to plugin jar> \ --class <your test class name> s3://<ShuffleBucket>/<Your application jar> \

可选配置

这些是控制 Amazon S3 随机播放行为的可选配置。

  • spark.shuffle.storage.s3.enableServerSideEncryption:为随机播放和溢出文件启用/禁用 S3 SSE。默认值为 true

  • spark.shuffle.storage.s3.serverSideEncryption.algorithm:要使用的 SSE 算法。默认值为 AES256

  • spark.shuffle.storage.s3.serverSideEncryption.kms.key:启用 SSE aws:kms 时的 KMS 密钥 ARN。

除了这些配置之外,您可能还需要设置配置(例如 spark.hadoop.fs.s3.enableServerSideEncryption其他特定于环境的配置),以确保为您的用例应用适当的加密。

插件版本

与每个 Amazon Glue 版本关联的 Spark 版本都支持此插件。下表显示了插件的软件二进制文件的 Amazon Glue 版本、Spark 版本和关联的插件版本以及 Amazon S3 的位置。

Amazon Glue 版本 Spark 版本 插件版本 Amazon S3 位置
3.0 3.1 3.1-amzn-LATEST

s3://aws-glue-etl-artifacts/release/com/amazonaws/chopper-plugin/3.1-amzn-0/chopper-plugin-3.1-amzn-LATEST.jar

4.0 3.3 3.3-amzn-LATEST

s3://aws-glue-etl-artifacts/release/com/amazonaws/chopper-plugin/3.3-amzn-0/chopper-plugin-3.3-amzn-LATEST.jar

许可证

此插件的软件二进制文件已根据 Apache-2.0 许可证获得许可。