すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:spark-submitを使用してSparkアプリケーションを開発する

最終更新日:Jun 13, 2024

このトピックでは、AnalyticDB for MySQL spark-submitを使用してSparkアプリケーションを開発する方法について説明します。 この例では、ECS (Elastic Compute Service) インスタンスがAnalyticDB for MySQLに接続されています。

背景情報

クライアントからAnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターに接続し、Sparkアプリケーションを開発する場合、sparkアプリケーションを送信するにはAnalyticDB for MySQL Spark-submitを使用する必要があります。

AnalyticDB for MySQL spark-submitは、Spark SQLアプリケーションではなく、Sparkバッチアプリケーションの送信に使用できます。

前提条件

Java Development Kit (JDK) V1.8以降がインストールされています。

AnalyticDB for MySQLをダウンロードしてインストールしますspark-submit

  1. 次のコマンドを実行して、AnalyticDB for MySQL spark-submitのインストールパッケージをダウンロードします。 ファイル名はadb-spark-toolkit-submit-0.0.1.tar.gzです。

    wget https://dla003.oss-cn-hangzhou.aliyuncs.com/adb-spark-toolkit-submit-0.0.1.tar.gz
  2. 次のコマンドを実行してパッケージを抽出し、AnalyticDB for MySQLspark-submit。

    tar zxvf adb-spark-toolkit-submit-0.0.1.tar.gz

パラメーターの設定

AnalyticDB for MySQL Sparkバッチアプリケーションの設定パラメーターは、conf/spark-defaults.confファイルで、またはコマンドを呼び出して変更できます。 conf/spark-defaults.confファイルで設定パラメーターを変更することを推奨します。 変更後、AnalyticDB for MySQL spark-submitは自動的に設定ファイルを読み取ります。 CLIを使用して設定パラメーターを変更する場合、設定ファイルのパラメーターは上書きされませんが、コマンドの設定が優先されます。

  1. AnalyticDB for MySQL spark-submitをインストールした後、次のコマンドを実行してadb-spark-toolkit-submit/conf/spark-defaults.confファイルを開きます。

    vim adb-spark-toolkit-submit/conf/spark-defaults.conf
  2. パラメーターをkey=value形式で設定します。 例:

    keyId = yourAkId
    secretId = yourAkSec
    regionId = cn-hangzhou
    clusterId = amv-bp15f9q95p ****
    rgName = sg-デフォルト
    ossUploadPath = oss://<bucket_name>/sparkjars /
    spark.driver.resourceSpec = medium
    spark.exe cutor.instances = 2
    spark.exe cutor.resourceSpec = medium
    spark.adb.roleArn = arn:1234567/adbsparkprocessrole
    spark.adb.eni.vswitchId = vsw-defaultswitch
    spark.adb.eni.securityGroupId = sg-defaultgroup
    spark.app.log.rootPath = oss://<bucket_name>/sparklogs/ 
    重要
    • サンプル値を実際の値に置き換える必要があります。

    • この例では、keyIdsecretIdregionIdclusterIdrgNameossKeyId、およびossUploadPathパラメーターは、Apache sparkではなくAnalyticDB for MySQL Spark-submitでのみサポートされます。 パラメーターの詳細については、このトピックの「パラメーター」を参照してください。

      Sparkジョブを -- key1 value1 -- key2 value2形式で送信するためのコマンドでパラメーターを設定できます。 AnalyticDB for MySQL SparkConfを使用してパラメーターを設定することもできます。 詳細については、このトピックの「構成の互換性」セクションを参照してください。

    • サンプルコードのその他のパラメーター、またはAnalyticDB For MySQL spark-submitでサポートされているすべての設定パラメーターについては、「Sparkアプリケーション設定パラメーター」をご参照ください。

    表 1 Parameters

    パラメーター

    説明

    必須

    keyId

    Sparkジョブの実行に使用されるAlibaba CloudアカウントまたはRAM (Resource Access Management) ユーザーのAccessKey ID。 AccessKey IDの表示方法については、「アカウントと権限」をご参照ください。

    secretId

    Sparkジョブの実行に使用されるAlibaba CloudアカウントまたはRAMユーザーのAccessKeyシークレット。

    regionId

    AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターが存在するリージョンのID。

    clusterId

    AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターのID。

    rgName

    AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターのリソースグループ。

    ossKeyId

    Object Storage Service (OSS) バケットの作成に使用されるAlibaba CloudアカウントまたはRAMユーザーのAccessKey ID。

    設定でOSSディレクトリを指定すると、オンプレミスストレージ内のJARパッケージをOSSディレクトリに自動的にアップロードできます。

    任意

    ossSecretId

    OSSバケットの作成に使用されるAlibaba CloudアカウントまたはRAMユーザーのAccessKeyシークレット。

    任意

    ossEndpoint

    OSSバケットの内部エンドポイント。 OSSリージョンとエンドポイント間のマッピングについては、「リージョンとエンドポイント」をご参照ください。

    任意

    ossUploadPath

    JARパッケージがアップロードされるOSSディレクトリ。

    任意

構成の互換性

オープンソースのspark-submitとの互換性を確保するために、keyIdsecretIdregionIdclusterIdrgNameossKeyId、およびossUploadPathパラメーターは、次の形式のAnalyticDB for MySQL SparkConfを使用して設定できます。

-- conf spark.adb.access.key.id=<value>
-- conf spark.adb.access.secret.id=<value>
-- conf spark.adb.regionId=<value>
-- conf spark.adb.clusterId=<value>
-- conf spark.adb.rgName=<value>
-- conf spark.adb.oss.akId=<value>
-- conf spark.adb.oss.akSec=<value>
-- conf spark.adb.oss.endpoint=<value>
-- conf spark.adb.oss.uploadPath=<value> 

Sparkジョブを送信する

  1. 次のコマンドを実行して、AnalyticDB for MySQL spark-submitのディレクトリを開きます。

    cd adb-spark-toolkit-submit
  2. 次の形式でジョブを送信します。

    . /bin/spark-submit \
    -- class com.aliyun.spark.oss.SparkReadOss \
    -- verbose \
    -- name <your_job_name> \
    -- jars oss://<bucket-name>/jars/xxx.jar,oss://<bucket-name>/jars/xxx.jar \
    -- conf spark.driver.resourceSpec=medium \
    -- conf spark.exe cutor.instances=1 \
    -- conf spark.exe cutor.resourceSpec=medium \
    oss://<bucket-name>/jars/xxx.jar args0 args1 
    説明

    Sparkジョブを送信すると、次のいずれかのレスポンスコードが返されます。

    • 255: ジョブが失敗しました。

    • 0: ジョブが正常に実行されました。

    • 143: ジョブが終了しました。

下表に、各パラメーターを説明します。

パラメーター

説明

-- class

<class_name>

JavaまたはScalaアプリケーションのエントリポイント。 Pythonアプリケーションにはエントリポイントは必要ありません。

-- verbose

なし

Sparkジョブの送信中に生成されたログを表示します。

-- name

<spark_name>

Sparkアプリケーションの名前。

-- 瓶

<jar_name>

Sparkアプリケーションに必要なJARパッケージの絶対パス。 複数のJARパッケージをコンマ (,) で区切ります。

  • JARパッケージがアップロードされるOSSディレクトリは、コマンドの -- oss-upload-pathパラメーター、またはconf/spark-defaults.confファイルのossUploadPathパラメーターで指定できます。

  • オンプレミスファイルがアップロードされると、システムはMD5値に基づいてファイルを検証します。 指定されたOSSディレクトリに同じ名前とMD5値を使用するファイルがすでに存在する場合、アップロードはキャンセルされます。

  • OSSディレクトリのJARパッケージを手動で更新した場合は、パッケージの対応するMD5ファイルを削除する必要があります。

説明

OSSディレクトリにアクセスする権限があることを確認してください。 RAMコンソールにログインし、[ユーザー] ページのRAMユーザーにAliyunOSSFullAccess権限を付与できます。

-- conf

<key=value>

Sparkアプリケーションの設定パラメーター。

AnalyticDB for MySQL spark-submitの設定は、オープンソースのspark-submitと非常によく似ています。 異なるパラメーターとAnalyticDB For MySQL spark-submitに固有のパラメーターについては、このトピックの「AnalyticDB for MySQL spark-submit」セクションおよびSparkアプリケーション設定パラメーターをご参照ください。

説明
  • 次の形式で複数のパラメーターを指定します。-- conf key1=value1 -- conf key2=value2

  • コマンドの設定は、設定ファイルの設定よりも優先されます。

oss:// <バケット名>/jars/xxx.jar

<oss_path>

Sparkアプリケーションのメインファイルの絶対パス。 メインファイルは、エントリポイントを含むJARパッケージ、またはPythonプログラムのエントリポイントとして機能する実行可能ファイルです。

説明

SparkアプリケーションのメインファイルをOSSに保存する必要があります。

args

<args0 args1>

JARパッケージに必要なパラメーター。 複数ある場合は、パラメーターをスペースで区切ります。

Sparkジョブのリストを照会する

. /bin/spark-submit -- list -- clusterId <cluster_Id> -- rgName <ResourceGroup_name> -- pagenumber 1 -- ページサイズ3

Sparkジョブのステータスの照会

. /bin/spark-submit -- status <appId>

Sparkジョブの一覧からジョブのappIdを取得できます。 詳細については、このトピックの「Sparkジョブの一覧の照会」を参照してください。

Sparkジョブのステータスの詳細については、「SparkAppInfo」をご参照ください。

送信されたジョブとSparkUIのパラメーターの照会

. /bin/spark-submit -- detail <appId>

Sparkジョブの一覧からジョブのappIdを取得できます。 詳細については、このトピックの「Sparkジョブの一覧の照会」を参照してください。

返された結果のSpark WEB UIフィールドは、Spark UIアドレスを示します。

Sparkジョブのログを照会します。

. /bin/spark-submit -- get-log <appId>

Sparkジョブの一覧からジョブのappIdを取得できます。 詳細については、このトピックの「Sparkジョブの一覧の照会」を参照してください。

Sparkジョブを終了する

. /spark-submit -- kill <appId>

Sparkジョブの一覧からジョブのappIdを取得できます。 詳細については、このトピックの「Sparkジョブの一覧の照会」を参照してください。

AnalyticDB for MySQL spark-submitとオープンソースのspark-submitの違い

AnalyticDB for MySQL sparkに固有のパラメーター-submit

表 2. AnalyticDB for MySQL spark-submitに固有のパラメーター

パラメーター

説明

-- api-retry-times

AnalyticDB for MySQL spark-submitがコマンドの実行に失敗した場合に許可される再試行の最大数。 Sparkジョブを送信するコマンドは再試行されません。 これは、ジョブの送信がべき等操作ではないためです。 ネットワークのタイムアウトなどの理由で失敗した送信は、実際にバックグラウンドで成功した可能性があります。 したがって、ジョブ送信コマンドを再試行すると、送信が重複する可能性があります。 ジョブが正常に送信されたかどうかを確認するには、-- listを使用して送信されたジョブのリストを取得する必要があります。 AnalyticDB for MySQL Sparkコンソールに移動し、ジョブリストの情報を確認することもできます。

-- タイムアウト秒

コマンドが再試行されるまでのAnalyticDB for MySQL spark-submitのタイムアウト期間。 単位は秒です。 デフォルト値は 10 です。

-- enable-inner-endpoint

ECSインスタンスからSparkジョブを送信するときに、このパラメーターを指定して、AnalyticDB for MySQL spark-submitが仮想プライベートクラウド (VPC) 内のサービスにアクセスできるようにします。

重要

VPC内のサービスアクセスをサポートするリージョンは、中国 (杭州) 、中国 (上海) 、中国 (深セン) のみです。

-- リスト

ジョブのリストを取得します。 ほとんどの場合、このパラメーターは -- pagenumberおよび -- pagesizeとともに使用されます。

たとえば、最初のページで5つのジョブを表示する場合は、次のようにパラメーターを設定できます。

-- list
-- pagenumber 1
-- pagesize 5 

-- pagenumber

ページ番号。 デフォルト値は 1 です。

-- pagesize

各ページで返すジョブの最大数。 デフォルト値は 10 です。

-殺す

ジョブを終了します。

-- get-log

アプリケーションのログ。

-- status

アプリケーションに関する詳細。

オープンソースsparkに固有のパラメータ-submit

AnalyticDB for MySQL spark-submitは、オープンソースのspark-submitの設定パラメーターをサポートしていません。 詳細については、Sparkアプリケーションの設定パラメータートピックの「AnalyticDB For MySQLでサポートされていない設定パラメーター」をご参照ください。