AnalyticDB for MySQL の Spark 構成パラメーターは、Apache Spark のものと似ています。このトピックでは、Apache Spark とは異なる AnalyticDB for MySQL の構成パラメーターについて説明します。
注意事項
Spark アプリケーションの構成パラメーターは、Spark アプリケーションの動作とパフォーマンスを構成および調整するために使用されます。これらのパラメーターのフォーマットは、使用する Spark 開発ツールによって異なります。
開発ツール | 構成パラメーターのフォーマット | 構成例 |
SQL エディター | set key=value; |
|
Spark Jar エディター | "key": "value" |
|
Notebook エディター | "key": "value" |
|
spark-submit コマンドラインインターフェイス | key=value |
|
Driver と Executor のリソース指定
パラメーター | 必須 | デフォルト値 | 説明 | Apache Spark の対応パラメーター |
spark.adb.acuPerApp | いいえ | なし | 単一の Spark ジョブで使用される ACU 数。有効値:[2, ジョブリソースグループの最大コンピューティングリソース]。 このパラメーターを構成すると、システムは Spark ドライバーの仕様、Spark エグゼキュータの仕様、および Spark エグゼキュータノードの数を自動的に計算して構成します。 | N/A |
spark.driver.resourceSpec | はい | medium | Spark ドライバーのリソース仕様。各タイプは異なる仕様に対応します。詳細については、このトピックの「Spark のリソース仕様」表の「タイプ」列をご参照ください。 重要 Spark アプリケーションを送信する場合、Apache Spark パラメーターを使用し、このトピックの「Spark のリソース仕様」表に記載されているコアとメモリの値に基づいてパラメーターを構成できます。 例: | spark.driver.cores および spark.driver.memory |
spark.executor.resourceSpec | はい | medium | 各 Spark エグゼキュータのリソース仕様。各タイプは異なる仕様に対応します。詳細については、このトピックの「Spark のリソース仕様」表の「タイプ」列をご参照ください。 重要 Spark アプリケーションを送信する場合、Apache Spark パラメーターを使用し、このトピックの「Spark のリソース仕様」表に記載されているコアとメモリの値に基づいてパラメーターを構成できます。 例: | spark.executor.cores および spark.executor.memory |
spark.executor.instances | いいえ | ジョブリソースグループの最大コンピューティングリソース/5 | 起動される Spark エグゼキュータの数。 | spark.executor.instances |
spark.adb.driverDiskSize | いいえ | なし | 大容量のディスクストレージ要件を満たすために Spark ドライバーにマウントされる追加のディスクストレージのサイズ。デフォルトでは、追加のディスクストレージは /user_data_dir ディレクトリにマウントされます。 単位:GiB。有効値:(0,100]。例:spark.adb.driverDiskSize=50Gi。この例では、Spark ドライバーにマウントされる追加のディスクストレージは 50 GiB に設定されます。 | N/A |
spark.adb.executorDiskSize | いいえ | なし | シャッフル操作の要件を満たすために Spark エグゼキュータにマウントされる追加のディスクストレージのサイズ。デフォルトでは、追加のディスクストレージは /shuffle_volume ディレクトリにマウントされます。 単位:GiB。有効値:(0,100]。例:spark.adb.executorDiskSize=50Gi。この例では、Spark エグゼキュータにマウントされる追加のディスクストレージは 50 GiB に設定されます。 | N/A |
Spark のリソース仕様
予約済みリソースまたは弾性リソースを使用して Spark ジョブを実行できます。ジョブリソースグループのオンデマンドの弾性リソースを使用して Spark ジョブを実行する場合、システムは Spark のリソース仕様と CPU とメモリの比率に基づいて、次の数式を使用して使用される AnalyticDB 計算ユニット (ACU) の数を計算します:
CPU とメモリの比率が 1:2:使用 ACU 数 = CPU コア数 × 0.8。
CPU とメモリの比率が 1:4:使用 ACU 数 = CPU コア数 × 1。
CPU とメモリの比率が 1:8:使用 ACU 数 = CPU コア数 × 1.5。
オンデマンドの弾性リソースの価格については、「Data Lakehouse Edition の課金」をご参照ください。
表 1. Spark のリソース仕様
タイプ | 仕様 | 使用 ACU | ||
CPU コア | メモリ (GB) | ディスクストレージ1 (GB) | ||
c.small | 1 | 2 | 20 | 0.8 |
small | 1 | 4 | 20 | 1 |
m.small | 1 | 8 | 20 | 1.5 |
c.medium | 2 | 4 | 20 | 1.6 |
medium | 2 | 8 | 20 | 2 |
m.medium | 2 | 16 | 20 | 3 |
c.large | 4 | 8 | 20 | 3.2 |
large | 4 | 16 | 20 | 4 |
m.large | 4 | 32 | 20 | 6 |
c.xlarge | 8 | 16 | 20 | 6.4 |
xlarge | 8 | 32 | 20 | 8 |
m.xlarge | 8 | 64 | 20 | 12 |
c.2xlarge | 16 | 32 | 20 | 12.8 |
2xlarge | 16 | 64 | 20 | 16 |
m.2xlarge | 16 | 128 | 20 | 24 |
m.4xlarge | 32 | 256 | 20 | 48 |
m.8xlarge | 64 | 512 | 20 | 96 |
1ディスクストレージ:システムがディスクストレージの約 1% を占有することが想定されます。実際に利用可能なディスクストレージは 20 GB 未満になる場合があります。
例
Spark ジョブに 32 個の Executor を割り当て、各 Executor の仕様を medium (2 コア 8 GB)、各 Driver の仕様を small (1 コア 4 GB) とします。この場合、ジョブ全体で合計 65 ACU のコンピューティングリソースを割り当てることができます。
{
"spark.driver.resourceSpec":"small",
"spark.executor.resourceSpec":"medium",
"spark.executor.instances":"32",
"spark.adb.executorDiskSize":"100Gi"
}Spark ジョブの優先度指定
パラメーター | 必須 | デフォルト値 | 説明 |
spark.adb.priority | いいえ | NORMAL | Spark ジョブの優先度。リソースが不足して送信されたすべての Spark ジョブを実行できない場合、優先度の高いキュー内のジョブが最初に実行されます。有効値:
重要 ストリーミング Spark ジョブ (長時間実行されるストリームジョブ) には、このパラメーターを HIGH に設定することを推奨します。 |
メタデータへのアクセス
パラメーター | 必須 | デフォルト値 | 説明 |
spark.sql.catalogImplementation | いいえ |
| アクセスするメタデータのタイプ。有効値:
|
spark.sql.hive.metastore.version | いいえ |
| メタストアサービスのバージョン。有効値:
説明
|
例
AnalyticDB for MySQL のメタデータにアクセスするには、次の設定を構成します:
spark.sql.hive.metastore.version=adb;Apache Spark の組み込み Hive メタストアのメタデータにアクセスするには、次の設定を構成します:
spark.sql.catalogImplementation=hive; spark.sql.hive.metastore.version=2.1.3;一時ディレクトリのメタデータにアクセスするには、次の設定を構成します:
spark.sql.catalogImplementation=in-memory;
Spark UI の構成
パラメーター | 必須 | デフォルト値 | 説明 |
spark.app.log.rootPath | いいえ |
| AnalyticDB for MySQL の Spark ジョブログと Linux オペレーティングシステムの出力データが格納されるディレクトリ。 デフォルトでは、Spark アプリケーション ID という名前のフォルダに次の内容が含まれます:
|
spark.adb.event.logUploadDuration | いいえ | false | イベントログのアップロード期間を記録するかどうかを指定します。 |
spark.adb.buffer.maxNumEvents | いいえ | 1000 | ドライバーによってキャッシュされるイベントの最大数。 |
spark.adb.payload.maxNumEvents | いいえ | 10000 | 一度に Object Storage Service (OSS) にアップロードできるイベントの最大数。 |
spark.adb.event.pollingIntervalSecs | いいえ | 0.5 | OSS へのイベントの 2 回のアップロードの間隔。単位:秒。たとえば、値 0.5 は、イベントが 0.5 秒ごとにアップロードされることを示します。 |
spark.adb.event.maxPollingIntervalSecs | いいえ | 60 | OSS へのイベントアップロードが失敗した場合の最大リトライ間隔。単位:秒。失敗したアップロードとアップロードリトライの間隔は、 |
spark.adb.event.maxWaitOnEndSecs | いいえ | 10 | OSS へのイベントアップロードの最大待機時間。単位:秒。最大待機時間は、アップロードの開始から完了までの間隔です。アップロードが最大待機時間内に完了しない場合、アップロードはリトライされます。 |
spark.adb.event.waitForPendingPayloadsSleepIntervalSecs | いいえ | 1 |
|
spark.adb.eventLog.rolling.maxFileSize | いいえ | 209715200 | OSS 内のイベントログの最大ファイルサイズ。単位:バイト。イベントログは、Eventlog.0 や Eventlog.1 などの複数のファイルの形式で OSS に保存されます。ファイルサイズを指定できます。 |
RAM ユーザーへの権限付与
パラメーター | 必須 | デフォルト値 | 説明 |
spark.adb.roleArn | いいえ | N/A | Spark アプリケーションを送信する権限を RAM ユーザーに付与するために、RAM コンソールで RAM ユーザーにアタッチする Resource Access Management (RAM) ロールの Alibaba Cloud リソース名 (ARN)。詳細については、「RAM ロールの概要」をご参照ください。RAM ユーザーとして Spark アプリケーションを送信する場合は、このパラメーターを指定する必要があります。Alibaba Cloud アカウントで Spark アプリケーションを送信する場合は、このパラメーターを指定する必要はありません。 説明 RAM コンソールで RAM ユーザーに権限を付与している場合は、このパラメーターを指定する必要はありません。詳細については、「アカウントの権限付与」をご参照ください。 |
組み込みデータソースコネクタの有効化
パラメーター | 必須 | デフォルト値 | 説明 |
spark.adb.connectors | いいえ | N/A | 有効にする AnalyticDB for MySQL Spark の組み込みコネクタの名前。複数の名前はカンマ (,) で区切ります。有効値:oss、hudi、delta、adb、odps、external_hive、jindo、および default。 |
spark.hadoop.io.compression.codec.snappy.native | いいえ | false | Snappy ファイルが標準の Snappy フォーマットであるかどうかを指定します。デフォルトでは、Hadoop は Hadoop で編集された Snappy ファイルを認識します。このパラメーターを true に設定すると、標準の Snappy ライブラリが展開に使用されます。このパラメーターを false に設定すると、Hadoop のデフォルトの Snappy ライブラリが展開に使用されます。 |
VPC アクセスとデータソースアクセスの有効化
パラメーター | 必須 | デフォルト値 | 説明 |
spark.adb.eni.enabled | いいえ | false | Elastic Network Interface (ENI) を有効にするかどうかを指定します。 外部テーブルを使用して他の外部データソースにアクセスする場合は、ENI を有効にする必要があります。有効値:
|
spark.adb.eni.vswitchId | いいえ | N/A | ENI に関連付けられている vSwitch の ID。 Virtual Private Cloud (VPC) 経由で Elastic Compute Service (ECS) インスタンスから AnalyticDB for MySQL に接続する場合は、VPC の vSwitch ID を指定する必要があります。 説明 VPC アクセスを有効にしている場合は、spark.adb.eni.enabled パラメーターを true に設定する必要があります。 |
spark.adb.eni.securityGroupId | いいえ | N/A | ENI に関連付けられているセキュリティグループの ID。 VPC 経由で ECS インスタンスから AnalyticDB for MySQL に接続する場合は、セキュリティグループ ID を指定する必要があります。 説明 VPC アクセスを有効にしている場合は、spark.adb.eni.enabled パラメーターを true に設定する必要があります。 |
spark.adb.eni.extraHosts | いいえ | N/A | IP アドレスとホスト名の間のマッピング。このパラメーターにより、Spark はデータソースのホスト名を解決できます。セルフマネージドの Hive データソースにアクセスする場合は、このパラメーターを指定する必要があります。 説明
|
spark.adb.eni.adbHostAlias.enabled | いいえ | false | AnalyticDB for MySQL が必要とするドメイン名の名前解決情報をドメイン名と IP アドレスのマッピングテーブルに自動的に書き込むかどうかを指定します。有効値:
ENI を使用して EMR Hive からデータを読み書きする場合は、このパラメーターを true に設定する必要があります。 |
アプリケーションリトライの構成
パラメーター | 必須 | デフォルト値 | 説明 |
spark.adb.maxAttempts | いいえ | 1 | アプリケーションの実行が許可される最大試行回数。デフォルト値は 1 で、リトライは許可されないことを指定します。 Spark アプリケーションにこのパラメーターを 3 に設定すると、システムはスライドウィンドウ内で最大 3 回アプリケーションを実行しようとします。 |
spark.adb.attemptFailuresValidityInterval | いいえ | Integer.MAX | システムがアプリケーションの再実行を試みるスライドウィンドウの期間。単位:秒。 たとえば、Spark アプリケーションにこのパラメーターを 6000 に設定すると、システムは失敗した実行後、最後の 6,000 秒以内の試行回数をカウントします。試行回数が maxAttempts パラメーターの値より少ない場合、システムはアプリケーションの実行をリトライします。 |
Spark ジョブのランタイム環境の指定
次の表は、仮想環境テクノロジーを使用して Python 環境をパッケージ化し、Spark ジョブを送信する際に必要な構成パラメーターについて説明します。
パラメーター | 必須 | デフォルト値 | 説明 |
spark.pyspark.python | いいえ | N/A | オンプレミスデバイス上の Python インタープリターのパス。 |
Spark バージョンの指定
パラメーター | 必須 | デフォルト値 | 説明 |
spark.adb.version | いいえ | 3.2 | Spark バージョン。有効値:
|
高性能なベクトル化実行エンジン
パラメーター | 必須 | デフォルト値 | 説明 |
spark.adb.native.enabled | いいえ | false | ジョブを実行するために高性能なベクトル化実行エンジンを有効にするかどうかを指定します。このエンジンは AnalyticDB for MySQL Spark に組み込まれており、オープンソースの Spark と完全に互換性があります。既存のコードを変更することなく有効にできます。 |
レイクストレージアクセラレーション
パラメーター | 必須 | デフォルト値 | 説明 |
spark.adb.lakecache.enabled | いいえ | false | LakeCache (レイクストレージアクセラレーション) を有効にするかどうかを指定します。 |
AnalyticDB for MySQL でサポートされていない構成パラメーター
AnalyticDB for MySQL Spark は、Apache Spark の次の構成パラメーターをサポートしていません。これらのパラメーターは AnalyticDB for MySQL Spark では効果がありません。
無効なオプション (これらのオプションは無視されます):
--deploy-mode
--master
--packages, please use `--jars` instead
--exclude-packages
--proxy-user
--repositories
--keytab
--principal
--queue
--total-executor-cores
--driver-library-path
--driver-class-path
--supervise
-S,--silent
-i <filename>