Cloud Shuffle Storage Plugin for Apache Spark
Cloud Shuffle ストレージプラグインは ShuffleDataIO APIjoin、reduceByKey、groupByKey、および repartition などの変換によってトリガーされることが多い、大規模なシャッフル操作用のローカルディスクストレージ容量を補充または置換できます。このため、サーバーレスデータ分析ジョブやパイプラインでの、一般的な障害やコスト対パフォーマンスの不整合を軽減するのに役立ちます。
AWS Glue
AWS Glue バージョン 3.0 と 4.0 には、このプラグインが事前インストールされており、特別な手順なしで Amazon S3 でシャッフルが利用可能になります。Spark アプリケーションでこの機能を有効にする方法については、「AWS Glue シャッフルマネージャーと Amazon S3 」を参照してください。
その他の 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 コアクラスの 1 つを上書きします。そのため、プラグインの jar ファイルは、Spark jar に先行してロードする必要があります。プラグインを AWS Glue の外部で使用する場合は、オンプレミスの YARN 環境で userClassPathFirst を使用して、この処理を実行できます。
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-submit の例
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: 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 License の下でライセンスされています。