Spark は、その高いパフォーマンス、使いやすさ、幅広い適用性で知られる汎用のビッグデータ分析エンジンです。複雑なインメモリコンピューティングをサポートしており、大規模で低レイテンシーのデータ分析アプリケーションの構築に最適です。DataWorks は、EMR Serverless Spark クラスター 上で Spark タスクを開発し、定期的にスケジュールできる Serverless Spark バッチノードを提供します。
前提条件
-
計算リソースの制限:EMR Serverless Spark リソースの関連付けのみがサポートされています。リソースグループと計算リソースがネットワーク経由で接続されていることを確認してください。
-
リソースグループの制約:このタスクは Serverless リソースグループ でのみ実行されます。
(オプション、RAM ユーザーに必要) タスク開発を担当する Resource Access Management (RAM) ユーザーをワークスペースに追加し、[Developer] または [Workspace Administrator] ロールを割り当てます。Workspace Administrator ロールは広範な権限を持つため、慎重に付与してください。メンバーの追加の詳細については、「ワークスペースにメンバーを追加」をご参照ください。
Alibaba Cloud アカウントを使用している場合は、このステップをスキップできます。
ノードの作成
手順については、「ノードの作成」をご参照ください。
ノードの開発
Serverless Spark バッチタスクを開発する前に、まず E-MapReduce (EMR) で Spark タスクコードを開発し、JAR パッケージにコンパイルする必要があります。Spark 開発のガイダンスについては、「Sparkチュートリアル」をご参照ください。
ユースケースに最も適したアプローチを選択してください:
オプション 1:EMR JAR のアップロードと参照
DataWorks では、ローカルコンピューターから Data Studio にリソースをアップロードして参照できます。Serverless Spark バッチタスクをコンパイルすると、コンパイル済みの JAR パッケージを取得できます。JAR パッケージのサイズに基づいてストレージ方法を選択します。JAR パッケージが 500 MB 未満の場合は、ローカルコンピューターから DataWorks のEMR JAR リソースとしてアップロードできます。
-
EMR JAR リソースの作成
-
左側メニューで、
アイコンをクリックしてResource Management ページに移動します。 -
Resource Management ページで、
アイコンをクリックし、 を選択し、リソースにspark-examples_2.11-2.4.0.jarという名前を付けます。 -
Click Upload をクリックし、spark-examples_2.11-2.4.0.jarファイルをアップロードします。
-
Storage Path、Data Sources、Resource Group を選択します。
重要データソースには、関連付けられている EMR Serverless Spark クラスターを選択する必要があります。
-
Save をクリックします。
-
-
EMR JAR リソースの参照
-
作成した[Serverless Spark Batch]ノードを開き、コードエディターページを表示したままにします。
-
左側の[リソース管理]ペインで、使用するリソースを見つけて右クリックし、Insert Resource Path を選択します。
-
[Serverless Spark Batch]ノードのコードエディターに以下のコードが自動的に追加されると、リソースの参照は完了です:
##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-examples_2.11-2.4.0.jar上記のコードで、spark-examples_2.11-2.4.0.jarはアップロードした EMR JAR リソースの名前です。
-
spark-submit コマンドを追加して、ノードコードを修正します。次の例は、修正されたコードを示しています。
重要-
タスクコードは、例に示されているとおりに正確に修正してください。コメントを追加するとノードが失敗するため、追加しないでください。
-
EMR Serverless Spark の場合、
spark-submitコマンドのdeploy-modeパラメーターを設定する必要はありません。クラスターモードのみがサポートされています。
##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-submit --class org.apache.spark.examples.SparkPi spark-examples_2.11-2.4.0.jar 100コマンド
説明
classJAR ファイル内のアプリケーションのメインクラス。この例では、値は
org.apache.spark.examples.SparkPiです。説明パラメーターの詳細については、「spark-submitを使用したジョブの送信」をご参照ください。
-
-
オプション 2:OSS リソースの参照
Object Storage Service (OSS) に保存されているリソースを直接参照できます。ノードを実行すると、DataWorks は指定された OSS リソースを自動的にロードしてローカルで使用します。このアプローチは通常、EMR タスクが JAR 依存関係を必要とする場合や、スクリプトに依存する場合に使用します。
-
JAR リソースの開発:このトピックでは、SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jarを例として使用します。
-
JAR リソースのアップロード
-
OSSコンソールにログインします。左側メニューで、[バケット] をクリックします。
-
対象のバケットの名前をクリックして、ファイル管理ページに移動します。
-
Create Directory をクリックして、JAR リソースを格納するディレクトリを作成します。
-
ディレクトリに移動し、
SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jarファイルをバケットにアップロードします。
-
-
JAR リソースの参照
-
作成した Serverless Spark バッチノードのコードエディターで、JAR リソースを参照するコードを記述します。
重要次のコードでは、OSS バケット名は
mybucketで、ディレクトリはemrです。これらを実際の値に置き換えてください。spark-submit --class com.aliyun.emr.example.spark.SparkMaxComputeDemo oss://mybucket/emr/SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jarパラメーターの説明:
パラメーター
説明
class実行するメインクラスの完全修飾名。
ossファイルパス形式は
oss://{bucket}/{object}です。-
bucket:OSS でオブジェクトを格納するコンテナーです。バケットには一意の名前が付けられます。 OSSコンソールにログインすると、現在のアカウント配下にあるすべてのバケットを表示できます。
-
object:バケットに格納されている特定のファイルまたはパスです。
説明パラメーターの詳細については、「spark-submitを使用したジョブの送信」をご参照ください。
-
-
ノードのデバッグ
-
Run Configuration ペインで、[計算リソース] や[リソースグループ] などの設定を行います。
パラメーター
説明
計算リソース
関連付けられているEMR Serverless Spark 計算リソースを選択します。利用可能な計算リソースがない場合は、ドロップダウンリストから[計算リソースの作成] を選択できます。
リソースグループ
ワークスペースに関連付けられているリソースグループを選択します。
スクリプトパラメーター
${パラメーター名}形式を使用して、ノードのコードで変数を定義できます。その後、Script Parameters セクションで[Parameter name]と[Parameter Value]を定義する必要があります。実行時に、DataWorks はこれらの変数を指定された値に置き換えます。詳細については、「スケジューリングパラメーター」をご参照ください。Serverless Spark ノードパラメーター
Spark プログラムの実行時パラメーター。次のタイプがサポートされています:
-
DataWorks のカスタム実行時パラメーター。詳細については、「付録:DataWorks パラメーター」をご参照ください。
-
Spark の組み込みプロパティ。詳細については、「オープンソースのSparkプロパティ」および「カスタムSpark Confパラメーター」をご参照ください。
設定形式は次のとおりです:
"spark.eventLog.enabled": false。DataWorks は、この設定を--conf key=value形式で Serverless Spark に送信するコードに自動的に追加します。説明DataWorks では、ワークスペースレベルでグローバル Spark パラメーターを設定できます。グローバル Spark パラメーターを、特定のモジュール内で設定されたパラメーターより優先するかどうかを指定できます。詳細については、「グローバルSparkパラメーターの設定」をご参照ください。
-
-
ノードエディターの上部にあるツールバーで、Run をクリックします。
重要公開する前に、Run Configuration の[Serverless Spark ノードパラメーター]をScheduling Settings の[Serverless Spark ノードパラメーター]に同期する必要があります。
次のステップ
ノードスケジューリングを設定する: ノードを定期的に実行する必要がある場合は、右側のScheduling SettingsパネルでScheduling Policyを設定します。
ノードの公開:タスクを本番環境で実行するには、
アイコンをクリックしてノードを公開します。ノードは、本番環境に公開された後にのみスケジュールどおりに実行されます。タスクの O&M:タスクが公開された後、オペレーションセンターで定期的な実行ステータスをモニターできます。詳細については、「オペレーションセンター入門」をご参照ください。
関連ドキュメント
付録:DataWorks パラメーター
|
パラメーター |
説明 |
|
SERVERLESS_QUEUE_NAME |
タスクが送信されるリソースキューを指定します。デフォルトでは、タスクは管理センター のクラスター管理 でクラスターに設定されている[デフォルトのリソースキュー]に送信されます。リソースを分離して管理する必要がある場合は、キューを追加できます。詳細については、「リソースキューの管理」をご参照ください。 設定方法:
|