MaxComputeのSparkは、ローカル、クラスター、およびDataWorksの実行モードをサポートしています。
ローカルモード
MaxComputeのSparkを使用すると、ネイティブSparkで使用されるローカルモードでジョブをデバッグできます。
ローカルモードは、YARNクラスターモードに似ています。 ローカルモードを使用するには、次の準備をする必要があります。
MaxComputeプロジェクトを作成し、MaxComputeプロジェクトへのアクセスに使用できるアカウントのAccessKey IDとAccessKey secretを取得します。
SparkをMaxComputeクライアントでダウンロードします。
環境変数を準備します。
spark-defaults.confファイルを設定します。
デモプロジェクトテンプレートをダウンロードしてコンパイルします。
詳細については、「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依存関係を設定するには、次の手順を参照してください。
IntelliJ IDEAのメインメニューバーで、 を選択します。
[プロジェクト構造] ページで、左側のナビゲーションウィンドウから [モジュール] をクリックします。 表示されるタブで、[spark-examples_2.11] をクリックします。 表示されるパネルで、[依存関係] タブをクリックします。 次に、左下隅の
アイコンをクリックし、JARSまたはディレクトリを選択します。
jarsフォルダーで、MaxComputeパッケージのSparkの必要なバージョン> jars > 必要なJARファイルを選択し、右下隅の [開く] をクリックします。
[OK] をクリックします。
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.jarDataWorks モード
DataWorksのクラスターモードでMaxComputeのSparkのオフラインジョブを実行して、他のタイプのノードを統合してスケジュールすることができます。
以下の手順を実行します。
DataWorksワークフローで必要なリソースをアップロードし、[送信] アイコンをクリックします。
作成したワークフローで、[データ分析] から [ODPS Spark] を選択します。
ワークフローでODPS Sparkノードをダブルクリックし、Sparkジョブのパラメーターを設定します。
ODPS Sparkノードの場合、Spark Versionパラメーターには3つのオプションがあり、Languageパラメーターには2つのオプションがあります。 設定する必要があるその他のパラメーターは、Languageパラメーターによって異なります。 プロンプトに従ってパラメーターを設定できます。 詳細については、「MaxCompute Sparkタスクの開発」をご参照ください。 ここで:
Main JAR Resource: ジョブで使用されるリソースファイル。 この操作を実行する前に、リソースファイルをDataWorksにアップロードする必要があります。
設定項目: ジョブの送信に必要な設定項目。
spark.hadoop.odps.access.id、spark.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_NAMEArguments
[アプリ引数]JARリソース
-- 瓶ジャーPythonリソース
-- py-files PY_ファイルファイルリソース
-- filesファイルアーカイブリソース
-アーカイブアーカイブ
ODPS Sparkノードを実行してジョブの操作ログを表示し、ログからLogviewとJobviewの両方のURLを取得して、さらなる分析と診断を行います。
Sparkジョブを定義した後、ワークフローでさまざまなタイプのサービスを調整してスケジュールすることができます。