AnalyticDB for MySQLは、spark-submitコマンドラインツールを提供します。 クライアントを使用してSpark開発用AnalyticDB for MySQLクラスターに接続する場合、spark-submitコマンドラインツールを使用してSparkアプリケーションを送信できます。 このトピックでは、AnalyticDB for MySQLのspark-submitコマンドラインツールを使用してSparkアプリケーションを開発する方法について説明します。
前提条件
AnalyticDB for MySQL Data Lakehouse Editionクラスターが作成されます。
AnalyticDB for MySQLクラスターのジョブリソースグループが作成されます。 詳細については、「リソースグループの作成」をご参照ください。
Object Storage Service (OSS) バケットは、AnalyticDB for MySQLクラスターと同じリージョンに作成されます。
Java Development Kit (JDK) 1.8以降がインストールされています。
使用上の注意
spark-submitコマンドラインツールを使用してジョブを開発する場合、Spark JARアプリケーションのみを送信できます。 Spark SQLアプリケーションは送信できません。
spark-submitコマンドラインツールのダウンロードとインストール
次のコマンドを実行して、
adb-spark-toolkit-submit-0.0.1.tar.gz
という名前のspark-submitコマンドラインツールのインストールパッケージをダウンロードします。wget https://dla003.oss-cn-hangzhou.aliyuncs.com/adb-spark-toolkit-submit-0.0.1.tar.gz
次のコマンドを実行して、インストールパッケージを解凍し、spark-submitコマンドラインツールをインストールします。
tar zxvf adb-spark-toolkit-submit-0.0.1.tar.gz
Sparkアプリケーション設定パラメーター
spark-submitコマンドラインツールのインストールパッケージを解凍した後、adb-spark-toolkit-submit/conf
ディレクトリに移動し、vim spark-defaults.conf
コマンドを実行してspark-defaults.confファイルの設定パラメーターを変更します。 spark-submitスクリプトは、設定ファイルを自動的に読み取ります。 設定パラメーターは、すべてのSparkアプリケーションで有効になります。
次の表に、Sparkアプリケーションの設定パラメーターを示します。
パラメーター | 必須 | 説明 | 例 |
keyId | はい | AnalyticDB for MySQLリソースにアクセスする権限を持つAlibaba CloudアカウントまたはRAM (Resource Access Management) ユーザーのAccessKey ID。 AccessKey IDとAccessKeyシークレットの取得方法については、「アカウントと権限」をご参照ください。 | LTAI5tFosFYFgrt3NzBX **** |
secretId | はい | AnalyticDB for MySQLリソースへのアクセス権限を持つAlibaba CloudアカウントまたはRAMユーザーのAccessKeyシークレット。 AccessKey IDとAccessKeyシークレットの取得方法については、「アカウントと権限」をご参照ください。 | 1BvoSGRT4FV7GB07VVgrRGUty **** |
regionId | はい | AnalyticDB for MySQLクラスターのリージョンID。 | cn-hangzhou |
clusterId | はい | AnalyticDB for MySQLクラスターのID。 | amv-bp1908350u5 **** |
rgName | はい | Sparkアプリケーションの実行に使用されるジョブリソースグループの名前。 | test |
ossKeyId | いいえ | Spark JARアプリケーションに必要なJARパッケージがオンプレミスのデバイスに保存されている場合は、ossKeyId、ossSecretId、およびossUploadPathパラメーターを指定する必要があります。
| LTAI5tFosFYFgrt3NzBX **** |
ossSecretId | いいえ | 1BvoSGRT4FV7GB07VVgrRGUty **** | |
ossUploadPath | いいえ | oss:// testBucketname/jars/test1.jar | |
confパラメータ | いいえ | Sparkアプリケーションに必要な設定パラメーター。Apache Sparkのものと同様です。 パラメーターは |
Sparkアプリケーションの送信
Sparkアプリケーションに必要なJARパッケージをOSSにアップロードします。 詳細は、「簡易アップロード (Simple upload)」をご参照ください。
次のコマンドを実行して、spark-submitコマンドラインツールのディレクトリに移動します。
cd adb-spark-toolkit-submit
Sparkアプリケーションを次の形式で送信します。
./bin/spark-submit \ --class com.aliyun.spark.oss.SparkReadOss \ --verbose \ --name Job1 \ --jars oss://testBucketname/jars/test.jar,oss://testBucketname/jars/search.jar\ --conf spark.driver.resourceSpec=medium \ --conf spark.executor.instances=1 \ --conf spark.executor.resourceSpec=medium \ oss://testBucketname/jars/test1.jar args0 args1
説明Sparkアプリケーションを送信すると、次のいずれかのリターンコードが返されます。
255: アプリケーションの実行に失敗しました。
0: アプリケーションは正常に実行されます。
143: アプリケーションを終了します。
下表に、各パラメーターを説明します。
パラメーター
説明
-- class
JavaまたはScalaアプリケーションのエントリクラス。 Pythonアプリケーションにはエントリクラスは必要ありません。
-- verbose
Sparkアプリケーションの送信時に生成されるログを表示します。
-- name
Sparkアプリケーションの名前。
-- 瓶
Sparkアプリケーションに必要なJARパッケージの絶対パス。 複数のパスはコンマ (,) で区切ります。
オンプレミスパスを指定する場合は、次の項目に注意してください。
使用するRAMユーザーには、AliyunOSSFullAccess権限が必要です。
ossUploadPath
パラメーターがconf/spark-defaults.conf
ファイルで設定されていることを確認し、オンプレミスJARパッケージをアップロードするOSSパスを指定します。
オンプレミスJARパッケージのアップロード中に、メッセージダイジェスト5 (MD5) アルゴリズムを使用して生成されたハッシュ値に基づいてパッケージが検証されます。 指定されたOSSパスに同じ名前とMD5値を持つJARパッケージがすでに存在する場合、アップロードはキャンセルされます。
OSSパスでJARパッケージを手動で更新した場合、パッケージの対応するMD5ファイルを削除する必要があります。
-- conf
Sparkアプリケーションの設定パラメーター。
Sparkアプリケーションの設定パラメーターは、オープンソースのspark-submitコマンドラインツールの設定パラメーターと非常によく似ています。 オープンソースのspark-submitコマンドラインツールとは異なり、AnalyticDB for MySQLのspark-submitコマンドラインツールに固有の設定パラメーターについては、このトピックの「AnalyticDB for MySQL spark-submitとオープンソースspark-submitの違い」を参照してください。
説明次の形式で複数のパラメーターを指定します。-- conf key1=value1 -- conf key2=value2
oss:// testBucketname/jars/test1.jar args0 args1
Sparkアプリケーションのメインファイルの絶対パス。 メインファイルには、エントリクラスを含むJARパッケージ、またはPythonのエントリポイントとして機能する実行可能ファイルを使用できます。
説明SparkアプリケーションのメインファイルをOSSに保存する必要があります。
args
JARパッケージに必要な引数。 複数の引数をスペースで区切ります。
Sparkアプリケーションのリストの照会
./bin/spark-submit --list --clusterId <cluster_Id> --rgName <ResourceGroup_name> --pagenumber 1 --pagesize 3
パラメーター:
cluster_Id: AnalyticDB for MySQLクラスターのID。
ResourceGroup_name: Sparkアプリケーションの実行に使用されるジョブリソースグループの名前。
Sparkアプリケーションのステータスの照会
./bin/spark-submit --status <appId>
Sparkアプリケーションに関する情報から、アプリケーションのappIdを取得できます。 詳細については、このトピックの「Sparkアプリケーションの一覧の照会」を参照してください。
送信パラメーターとSparkアプリケーションのSpark UI URLの照会
./bin/spark-submit --detail <appId>
Sparkアプリケーションに関する情報から、アプリケーションのappIdを取得できます。 詳細については、このトピックの「Sparkアプリケーションの一覧の照会」を参照してください。
コマンド出力のSpark WEB UIパラメーターは、Spark UI URLを示します。
Sparkアプリケーションのログの照会
./bin/spark-submit --get-log <appId>
Sparkアプリケーションに関する情報から、アプリケーションのappIdを取得できます。 詳細については、このトピックの「Sparkアプリケーションの一覧の照会」を参照してください。
Sparkアプリケーションの終了
./bin/spark-submit --kill <appId>
Sparkアプリケーションに関する情報から、アプリケーションのappIdを取得できます。 詳細については、このトピックの「Sparkアプリケーションの一覧の照会」を参照してください。
AnalyticDB for MySQLのスパーク送信とオープンソースのスパーク送信の違い
AnalyticDB for MySQLに固有のパラメーターspark-submit
パラメーター | 説明 |
-- api-retry-times | AnalyticDB for MySQLのspark-submitコマンドラインツールがコマンドの実行に失敗した場合に許可される再試行の最大数。 デフォルト値: 3。 Sparkアプリケーションを送信するコマンドが再試行されない なぜなら、提出はべき等の操作ではないからです。 ネットワークのタイムアウトなどの理由で失敗した送信は、実際にバックグラウンドで成功した可能性があります。 この場合、アプリケーション送信コマンドを再試行すると、送信が重複する可能性があります。 アプリケーションが正常に送信されたかどうかを確認するには、 |
-- タイムアウト秒 | AnalyticDB for MySQLのspark-submitコマンドラインツールが失敗したコマンドを再試行するまでのタイムアウト期間。 単位は秒です。 デフォルト値は 10 です。 |
-- enable-inner-endpoint | 内部ネットワーク接続を有効にします。 ECS (Elastic Compute Service) インスタンスからSparkアプリケーションを送信する場合、このパラメーターを指定して、AnalyticDB for MySQLのspark-submitコマンドラインツールが仮想プライベートクラウド (VPC) 内のサービスにアクセスできるようにします。 |
-- リスト | アプリケーションのリストを照会します。 ほとんどの場合、このパラメーターは たとえば、最初のページで5つのアプリケーションをクエリする場合は、次のパラメーターを指定できます。
|
-- pagenumber | ページ番号。 デフォルト値は 1 です。 |
-- pagesize | 各ページで返すアプリケーションの最大数。 デフォルト値は 10 です。 |
-殺す | アプリケーションを終了します。 |
-- get-log | アプリケーションのログ。 |
-- status | アプリケーションに関する詳細。 |
オープンソースspark-submitに固有のパラメータ
AnalyticDB for MySQLのspark-submitコマンドラインツールは、オープンソースのspark-submitコマンドラインツールの特定の設定パラメーターをサポートしていません。 詳細については、「Sparkアプリケーション設定パラメーター」トピックの「AnalyticDB For MySQLでサポートされていない設定パラメーター」セクションをご参照ください。