本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 Apache Spark 的 Cloud Shuffle 存储插件
Cloud Shuffle 存储插件是一款与 ShuffleDataIO
APIjoin
、reduceByKey
、groupByKey
和 repartition
等转换触发,从而减少无服务器数据分析任务和管道的常见故障或性价比/性能失调。
AWS Glue
AWS Glue 版本 3.0 和 4.0 预装了插件,无需任何额外步骤即可在 Amazon S3 上进行重组。有关更多信息,请参阅 AWS 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。如果在 AWS 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>
您也可以直接从 AWS 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
和其他特定于环境的配置),以确保为您的用例应用适当的加密。
插件版本
与每个 AWS Glue 版本关联的 Spark 版本都支持此插件。下表显示了插件的软件二进制文件的 AWS Glue 版本、Spark 版本和关联的插件版本以及 Amazon S3 的位置。
AWS 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 许可证获得许可。