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

MaxCompute:ランニングモード

最終更新日:Jan 07, 2025

MaxComputeのSparkは、ローカル、クラスター、およびDataWorksの実行モードをサポートしています。

ローカルモード

MaxComputeのSparkを使用すると、ネイティブSparkで使用されるローカルモードでジョブをデバッグできます。

ローカルモードは、YARNクラスターモードに似ています。 ローカルモードを使用するには、次の準備をする必要があります。

  1. MaxComputeプロジェクトを作成し、MaxComputeプロジェクトへのアクセスに使用できるアカウントのAccessKey IDとAccessKey secretを取得します。

  2. SparkをMaxComputeクライアントでダウンロードします。

  3. 環境変数を準備します。

  4. spark-defaults.confファイルを設定します。

  5. デモプロジェクトテンプレートをダウンロードしてコンパイルします。

詳細については、「Linux開発環境の設定」をご参照ください。

ジョブを送信するには、spark on MaxComputeクライアントでSpark-submitスクリプトを実行します。 以下にコードの例を示します。

## Java/Scala
cd $SPARK_HOME
./bin/spark-submit --master local[4] --class com.aliyun.odps.spark.examples.SparkPi \
/path/to/odps-spark-examples/spark-examples/target/spark-examples-2.0.0-SNAPSHOT-shaded.jar
## PySpark
cd $SPARK_HOME
./bin/spark-submit --master local[4] \
/path/to/odps-spark-examples/spark-examples/src/main/python/odps_table_rw.py

注意事項

  • ローカルモードでは、Tunnelを使用してMaxComputeテーブルからデータを読み書きします。 その結果、ローカルモードの読み取りおよび書き込み操作は、YARNクラスタモードの場合よりも遅くなります。

  • ローカルモードでは、Spark on MaxComputeはオンプレミスマシンで実行されます。 したがって、仮想プライベートクラウド (VPC) を介してローカルモードで実行されるMaxComputeのSparkにアクセスできるが、VPCを介してYARNクラスターモードで実行されるMaxComputeのSparkにアクセスできないという状況が発生する可能性があります。

    ローカルモードでは、ネットワークは分離されません。 ただし、YARNクラスターモードでは、ネットワークは分離されているため、VPC経由でのアクセスに必要なパラメーターを設定する必要があります。

  • ローカルモードでは、パブリックエンドポイントを使用して、VPC経由でMaxComputeのSparkにアクセスする必要があります。 ただし、YARNクラスターモードでは、VPC経由でMaxComputeのSparkにアクセスするには、内部エンドポイントを使用する必要があります。 MaxComputeのエンドポイントの詳細については、「エンドポイント」をご参照ください。

  • ローカルモードでIntelliJ IDEAのMaxComputeでSparkを実行する場合は、コードで関連する設定を指定する必要があります。 ただし、YARNクラスターモードでIntelliJ IDEAでMaxComputeでSparkを実行する場合は、これらの設定をコードから削除する必要があります。

ローカルモードでIntelliJ IDEAのMaxComputeでSparkを実行

MaxComputeのSparkを使用すると、IntelliJ IDEAのコードをローカルモードで直接実行できます。 これにより、Spark on MaxComputeクライアントでコードを送信することができなくなります。 コードを実行するときは、次の項目に注意してください。

  • IntelliJ IDEAでローカルモードでコードを実行する場合は、main/resourceディレクトリのodps.confファイルで関連する設定を手動で指定する必要があります。 spark-defaults.confファイル内の設定を直接参照することはできません。 以下にコードの例を示します。

    説明

    Spark 2.4.5以降のodps.confファイルで設定項目を指定する必要があります。

    dops.access.id=""
    odps.access.key=""
    odps.end.point=""
    odps.project.name=""
  • IntelliJ IDEAのSpark on MaxComputeクライアントのjarsフォルダーに必要な依存関係を手動で追加する必要があります。 それ以外の場合、次のエラーが報告されます。

     the value of spark.sql.catalogimplementation should be one of hive in-memory but was odps

    依存関係を設定するには、次の手順を参照してください。

    1. IntelliJ IDEAのメインメニューバーで、[ファイル] > [プロジェクト構造] を選択します。项目设置

    2. [プロジェクト構造] ページで、左側のナビゲーションウィンドウから [モジュール] をクリックします。 表示されるタブで、[spark-examples_2.11] をクリックします。 表示されるパネルで、[依存関係] タブをクリックします。 次に、左下隅の增加アイコンをクリックし、JARSまたはディレクトリを選択します。选择

    3. jarsフォルダーで、MaxComputeパッケージのSparkの必要なバージョン> jars > 必要なJARファイルを選択し、右下隅の [開く] をクリックします。JAR

    4. [OK] をクリックします。open结果

    5. IntelliJ IDEAで設定を送信します。运行

クラスターモード

クラスターモードでは、カスタムアプリケーションのエントリポイントとしてMainメソッドを指定する必要があります。 Sparkジョブは、Mainが成功または失敗すると終了します。 このモードはオフラインジョブに適しています。 このモードのMaxComputeでSparkをDataWorksと一緒に使用して、ジョブをスケジュールできます。 次のコードは、コマンドラインを使用してこのモードでMaxComputeでSparkを実行する方法の例を示しています。

# /path/to/MaxCompute-Spark: the path where the compiled application JAR package is saved. 
cd $SPARK_HOME
bin/spark-submit --master yarn-cluster --class com.aliyun.odps.spark.examples.SparkPi \
/path/to/MaxCompute-Spark/spark-2.x/target/spark-examples_2.11-1.0.0-SNAPSHOT-shaded.jar

DataWorks モード

DataWorksのクラスターモードでMaxComputeのSparkのオフラインジョブを実行して、他のタイプのノードを統合してスケジュールすることができます。

以下の手順を実行します。

  1. DataWorksワークフローで必要なリソースをアップロードし、[送信] アイコンをクリックします。

  2. 作成したワークフローで、[データ分析] から [ODPS Spark] を選択します。

  3. ワークフローでODPS Sparkノードをダブルクリックし、Sparkジョブのパラメーターを設定します。

    ODPS Sparkノードの場合、Spark Versionパラメーターには3つのオプションがあり、Languageパラメーターには2つのオプションがあります。 設定する必要があるその他のパラメーターは、Languageパラメーターによって異なります。 プロンプトに従ってパラメーターを設定できます。 詳細については、「MaxCompute Sparkタスクの開発」をご参照ください。 ここで:

    • Main JAR Resource: ジョブで使用されるリソースファイル。 この操作を実行する前に、リソースファイルをDataWorksにアップロードする必要があります。

    • 設定項目: ジョブの送信に必要な設定項目。

      spark.hadoop.odps.access.idspark.hadoop.odps.access.key、およびspark.hadoop.odps.end.pointを設定する必要はありません。 デフォルトでは、これらの設定項目の値はMaxComputeプロジェクトの値と同じです。 これらの設定項目を明示的に指定して、デフォルト値を上書きすることもできます。

      spark-defaults.confファイルの設定をODPS Sparkノードの設定項目に1つずつ追加する必要があります。 設定には、エグゼキューターの数、メモリサイズ、spark.hadoop.odps.ru ntime.end.pointが含まれます。

      ODPS Sparkノードのリソースファイルと構成項目は、次の表に示すように、spark-submitコマンドのパラメーターと項目をマップします。 spark-defaults.confファイルをアップロードする必要はありません。 代わりに、spark-defaults.confファイルの設定をODPS Sparkノードの設定項目に1つずつ追加する必要があります。

      ODPS Sparkノード

      spark-submit

      メインJARリソースとメインPythonリソース

      アプリjarまたはpythonファイル

      構成アイテム

      -- conf PROP=VALUE

      メインクラス

      -- class CLASS_NAME

      Arguments

      [アプリ引数]

      JARリソース

      -- 瓶ジャー

      Pythonリソース

      -- py-files PY_ファイル

      ファイルリソース

      -- filesファイル

      アーカイブリソース

      -アーカイブアーカイブ

  4. ODPS Sparkノードを実行してジョブの操作ログを表示し、ログからLogviewとJobviewの両方のURLを取得して、さらなる分析と診断を行います。

    Sparkジョブを定義した後、ワークフローでさまざまなタイプのサービスを調整してスケジュールすることができます。