このトピックでは、バッチタスクまたはストリーミングタスクを開発する際の設定項目と手順を説明します。
前提条件
ワークスペースが作成されている必要があります。詳細については、「ワークスペースの管理」をご参照ください。
手順
データ開発ページに移動します。
E-MapReduce コンソールにログインします。
ナビゲーションペインで、 を選択します。
Spark ページで、対象のワークスペース名をクリックします。
EMR Serverless Spark ページのナビゲーションペインで、[Development] をクリックします。
タスクを作成します。
[開発] タブで、
アイコンをクリックします。ダイアログボックスで、Name を入力し、バッチまたはストリーミングタスクタイプを選択し、OK をクリックします。
右上隅で、リソースキューを 1 つ選択します。
新しいタスクのエディターで、タスクタイプに基づいてパラメーターを編集します。
JAR
パラメーター
説明
[Main JAR Resource]
タスクの実行に必要なメイン JAR パッケージ。
[Workspace]:以前 Artifacts ページにアップロードしたファイルです。
OSS:Alibaba Cloud Object Storage Service (OSS) に保存されているファイル。
Engine Version
Spark のバージョン。詳細については、「エンジンバージョン」をご参照ください。
メインクラス
Spark タスクの送信時に指定するメインクラス。
[Execution Parameters]
タスクの実行時に必要な設定項目、またはメインクラスに渡すカスタムパラメーター。複数のパラメーターはスペースで区切ります。
[Timeout]
タスクの完了に許容される最大時間です。タスクの実行時間がこのしきい値を超えると、システムが自動的にタスクを停止します。デフォルト値は空で、タイムアウト制限が設定されていないことを示します。
Network Connection
既存のネットワーク接続を選択して、VPC 内のデータソースまたは外部サービスにアクセスします。ネットワーク接続の作成方法の詳細については、「EMR Serverless Spark と他の VPC 間のネットワーク接続」をご参照ください。
[Mount Integrated File Directory]
この機能はデフォルトで無効です。この機能を使用するには、Artifacts ページの Integrated File Directory タブでファイルディレクトリを追加します。詳細については、「Manage the integrated file directory」をご参照ください。
この機能を有効にすると、管理対象のファイルディレクトリがアプリケーションにマウントされ、ディレクトリ内のファイルを直接読み書きできるようになります。
マウント操作はドライバーの計算リソースを消費します。消費されるリソース量は、以下の 2 つの値のうち大きい方です。
固定リソース:0.3 vCPU + 1 GB メモリ。
動的リソース:
spark.driverリソースの 10%(つまり、spark.driverのコア数とメモリ量のそれぞれ 10%)。
たとえば、
spark.driverが 4 コア、8 GB メモリに設定されている場合、動的リソースは 0.4 vCPU + 0.8 GB メモリとなります。この場合、実際に消費されるリソースはmax(0.3 vCPU + 1 GB, 0.4 vCPU + 0.8 GB)、つまり 0.4 vCPU + 1 GB メモリです。説明マウント範囲:デフォルトでは、ファイルディレクトリはドライバーにのみマウントされます。エグゼキュータにもマウントするには、Mount to Executor を有効にしてください。
複数ディレクトリ:複数の統合ファイルディレクトリをマウントできます。ただし、CPFS ディレクトリは他の種類と併用できません。たとえば、複数の OSS および NAS ディレクトリを同時にマウントできますが、CPFS と OSS または NAS ディレクトリを同時にマウントすることはできません。
ネットワーク要件:NAS または CPFS ファイルディレクトリをマウントする場合は、ネットワーク接続を設定する必要があります。ネットワーク接続の VPC は、NAS または CPFS マウントポイントの VPC と同一である必要があります。
Mount to Executor
この機能を有効にすると、管理対象のファイルディレクトリがアプリケーションのエグゼキューターにマウントされ、ディレクトリ内のファイルを直接読み書きできるようになります。
このマウント操作はエグゼキューターリソースを消費します。消費されるリソースの量は、マウントされたファイルの使用状況によって異なります。
[File Resources]
タスクの送信時に、
--filesパラメーターで指定されたファイルがエグゼキューターの作業ディレクトリにコピーされます。これにより、Spark タスクが実行時にこれらのファイルにアクセスできます。Workspace または OSS からファイルを選択できます。
[Archive Resources]
タスクの送信時に、
--archivesパラメーターで指定されたファイルが解凍され、エグゼキューター上のアーカイブオブジェクトに配布されます。Workspace または OSS からアーカイブを選択できます。
[JAR Resources]
タスクの送信時に、
--jarsパラメーターを使用して必要な JAR 依存ファイルを指定します。Workspace または OSS から JAR を選択できます。
spark.driver.cores
Spark アプリケーションのドライバーが使用する CPU コア数。
spark.driver.memory
Spark アプリケーションのドライバーが使用できるメモリ量。
spark.executor.cores
Spark アプリケーションの各エグゼキューターが使用する仮想 CPU コア数。
spark.executor.memory
Spark アプリケーションの各エグゼキューターが使用できるメモリ量。
spark.executor.instances
Spark によって割り当てられるエグゼキューター数。
Dynamic Resource Allocation
デフォルトで無効です。有効にした場合、以下のパラメーターを設定します。
Minimum Number of Executors:デフォルト値は 2 です。
Maximum Number of Executors:spark.executor.instances が設定されていない場合、デフォルト値は 10 です。
[More Memory Configurations]
spark.driver.memoryOverhead:ドライバーで使用可能な非ヒープメモリです。このパラメーターが設定されていない場合、Spark はデフォルトに基づき自動的に値を割り当てます。その値は
max(384 MB, 10% * spark.driver.memory)です。spark.executor.memoryOverhead:各エグゼキュータで使用可能な非ヒープメモリです。このパラメーターが設定されていない場合、Spark はデフォルトに基づき自動的に値を割り当てます。その値は
max(384 MB, 10% * spark.executor.memory)です。spark.memory.offHeap.size:Spark で使用可能なオフヒープメモリ量です。デフォルト値は 1 GB です。
このパラメーターは、
spark.memory.offHeap.enabledがtrueに設定されている場合にのみ有効です。Fusion エンジンを使用する場合、この機能はデフォルトで有効になり、1 GB のオフヒープメモリが割り当てられます。
[Spark Configuration]
Spark の設定情報を入力します。キーと値のペアはスペースで区切ってください。例:
key value[Tags]
タグのキーと値のペアを入力します。タグを使用すると、タスクをより便利かつ正確に管理できます。
PySpark
パラメーター
説明
[Main Python Resources]
タスクの実行に必要なメイン Python ファイル。
[Workspace]:Artifacts ページでアップロードしたファイルです。
OSS:Alibaba Cloud Object Storage Service (OSS) に保存されているファイル。
Engine Version
Spark のバージョン。詳細については、「エンジンバージョン」をご参照ください。
[Execution Parameters]
タスクの実行時に必要な設定項目、またはメインクラスに渡すカスタムパラメーター。
[Timeout]
タスクの完了に許容される最大時間です。タスクの実行時間がこのしきい値を超えると、システムが自動的にタスクを停止します。デフォルト値は空で、タイムアウト制限が設定されていないことを示します。
[Environment]
選択した環境に基づいて、タスクの実行に必要なリソースが事前に設定されます。
Network Connection
既存のネットワーク接続を選択して、VPC 内のデータソースまたは外部サービスにアクセスします。ネットワーク接続の作成方法の詳細については、「EMR Serverless Spark と他の VPC 間のネットワーク接続」をご参照ください。
[Mount Integrated File Directory]
この機能はデフォルトで無効です。この機能を使用するには、Artifacts ページの Integrated File Directory タブでファイルディレクトリを追加します。詳細については、「Manage the integrated file directory」をご参照ください。
この機能を有効にすると、管理対象のファイルディレクトリがアプリケーションにマウントされ、ディレクトリ内のファイルを直接読み書きできるようになります。
マウント操作はドライバーの計算リソースを消費します。消費されるリソース量は、以下の 2 つの値のうち大きい方です。
固定リソース:0.3 vCPU + 1 GB メモリ。
動的リソース:
spark.driverリソースの 10%(つまり、spark.driverのコア数とメモリ量のそれぞれ 10%)。
たとえば、
spark.driverが 4 コア、8 GB メモリに設定されている場合、動的リソースは 0.4 vCPU + 0.8 GB メモリとなります。この場合、実際に消費されるリソースはmax(0.3 vCPU + 1 GB, 0.4 vCPU + 0.8 GB)、つまり 0.4 vCPU + 1 GB メモリです。説明マウント範囲:デフォルトでは、ファイルディレクトリはドライバーにのみマウントされます。エグゼキュータにもマウントするには、Mount to Executor を有効にしてください。
複数ディレクトリ:複数の統合ファイルディレクトリをマウントできます。ただし、CPFS ディレクトリは他の種類と併用できません。たとえば、複数の OSS および NAS ディレクトリを同時にマウントできますが、CPFS と OSS または NAS ディレクトリを同時にマウントすることはできません。
ネットワーク要件:NAS または CPFS ファイルディレクトリをマウントする場合は、ネットワーク接続を設定する必要があります。ネットワーク接続の VPC は、NAS または CPFS マウントポイントの VPC と同一である必要があります。
Mount to Executor
この機能を有効にすると、管理対象のファイルディレクトリがアプリケーションのエグゼキューターにマウントされ、ディレクトリ内のファイルを直接読み書きできるようになります。
このマウント操作はエグゼキューターリソースを消費します。消費されるリソースの量は、マウントされたファイルの使用状況によって異なります。
[File Resources]
クラスター内のすべての executor ノードに配布されるファイルの一覧。
リソースタイプでは、Workspace または OSS を選択できます。
[Pyfiles Resources]
タスクの送信時に、
--py-filesパラメーターで指定されたファイルが Python 依存ファイルとして配布されます。リソースタイプには、Workspace または OSS を選択できます。
[Archive Resources]
タスクの送信時に、
--archivesパラメーターで指定されたファイルが解凍され、エグゼキューター上のアーカイブオブジェクトに配布されます。リソースタイプには、Workspace または OSS を選択できます。
[JAR Resources]
タスクの送信時に、
--jarsパラメーターを使用して必要な JAR 依存ファイルを指定します。リソースタイプには、Workspace または OSS を選択できます。
spark.driver.cores
Spark アプリケーションのドライバーが使用する CPU コア数。
spark.driver.memory
Spark アプリケーションのドライバーが使用できるメモリ量。
spark.executor.cores
Spark アプリケーションの各エグゼキューターが使用する仮想 CPU コア数。
spark.executor.memory
Spark アプリケーションの各エグゼキューターが使用できるメモリ量。
spark.executor.instances
Spark によって割り当てられるエグゼキューター数。
Dynamic Resource Allocation
デフォルトで無効です。有効にした場合、以下のパラメーターを設定します。
Minimum Number of Executors:デフォルト値は 2 です。
Maximum Number of Executors:spark.executor.instances が設定されていない場合、デフォルト値は 10 です。
[More Memory Configurations]
spark.driver.memoryOverhead:ドライバーで使用可能な非ヒープメモリです。このパラメーターが設定されていない場合、Spark はデフォルトに基づき自動的に値を割り当てます。その値は
max(384 MB, 10% * spark.driver.memory)です。spark.executor.memoryOverhead:各エグゼキュータで使用可能な非ヒープメモリです。このパラメーターが設定されていない場合、Spark はデフォルトに基づき自動的に値を割り当てます。その値は
max(384 MB, 10% * spark.executor.memory)です。spark.memory.offHeap.size:Spark で使用可能なオフヒープメモリ量です。デフォルト値は 1 GB です。
このパラメーターは、
spark.memory.offHeap.enabledがtrueに設定されている場合にのみ有効です。Fusion エンジンを使用する場合、この機能はデフォルトで有効になり、1 GB のオフヒープメモリが割り当てられます。
[Spark Configuration]
Spark の設定情報を入力します。キーと値のペアはスペースで区切ってください。例:
key value[Tags]
タグのキーと値のペアを入力します。タグを使用すると、タスクをより便利かつ正確に管理できます。
SQL
パラメーター
説明
[SQL File]
タスクの送信時に必要なファイル。
Workspace: [アーティファクト] ページのファイル。
OSS:Alibaba Cloud Object Storage Service (OSS) に保存されているファイル。
[ステートメントの実行]:ファイルをアップロードせずに SQL ステートメントを直接実行します。
Engine Version
Spark のバージョン。詳細については、「エンジンバージョン」をご参照ください。
[Timeout]
タスクの完了に許容される最大時間です。タスクの実行時間がこのしきい値を超えると、システムが自動的にタスクを停止します。デフォルト値は空で、タイムアウト制限が設定されていないことを示します。
Network Connection
既存のネットワーク接続を選択して、VPC 内のデータソースまたは外部サービスにアクセスします。ネットワーク接続の作成方法の詳細については、「EMR Serverless Spark と他の VPC 間のネットワーク接続」をご参照ください。
[Mount Integrated File Directory]
この機能はデフォルトで無効です。この機能を使用するには、Artifacts ページの Integrated File Directory タブでファイルディレクトリを追加します。詳細については、「Manage the integrated file directory」をご参照ください。
この機能を有効にすると、管理対象のファイルディレクトリがアプリケーションにマウントされ、ディレクトリ内のファイルを直接読み書きできるようになります。
マウント操作はドライバーの計算リソースを消費します。消費されるリソース量は、以下の 2 つの値のうち大きい方です。
固定リソース:0.3 vCPU + 1 GB メモリ。
動的リソース:
spark.driverリソースの 10%(つまり、spark.driverのコア数とメモリ量のそれぞれ 10%)。
たとえば、
spark.driverが 4 コア、8 GB メモリに設定されている場合、動的リソースは 0.4 vCPU + 0.8 GB メモリとなります。この場合、実際に消費されるリソースはmax(0.3 vCPU + 1 GB, 0.4 vCPU + 0.8 GB)、つまり 0.4 vCPU + 1 GB メモリです。説明マウント範囲:デフォルトでは、ファイルディレクトリはドライバーにのみマウントされます。エグゼキュータにもマウントするには、Mount to Executor を有効にしてください。
複数ディレクトリ:複数の統合ファイルディレクトリをマウントできます。ただし、CPFS ディレクトリは他の種類と併用できません。たとえば、複数の OSS および NAS ディレクトリを同時にマウントできますが、CPFS と OSS または NAS ディレクトリを同時にマウントすることはできません。
ネットワーク要件:NAS または CPFS ファイルディレクトリをマウントする場合は、ネットワーク接続を設定する必要があります。ネットワーク接続の VPC は、NAS または CPFS マウントポイントの VPC と同一である必要があります。
Mount to Executor
この機能を有効にすると、管理対象のファイルディレクトリがアプリケーションのエグゼキューターにマウントされ、ディレクトリ内のファイルを直接読み書きできるようになります。
このマウント操作はエグゼキューターリソースを消費します。消費されるリソースの量は、マウントされたファイルの使用状況によって異なります。
spark.driver.cores
Spark アプリケーションのドライバーが使用する CPU コア数。
spark.driver.memory
Spark アプリケーションのドライバーが使用できるメモリ量。
spark.executor.cores
Spark アプリケーションの各エグゼキューターが使用する仮想 CPU コア数。
spark.executor.memory
Spark アプリケーションの各エグゼキューターが使用できるメモリ量。
spark.executor.instances
Spark によって割り当てられるエグゼキューター数。
Dynamic Resource Allocation
デフォルトで無効です。有効にした場合、以下のパラメーターを設定します。
Minimum Number of Executors:デフォルト値は 2 です。
Maximum Number of Executors:spark.executor.instances が設定されていない場合、デフォルト値は 10 です。
[More Memory Configurations]
spark.driver.memoryOverhead:ドライバーで使用可能な非ヒープメモリです。このパラメーターが設定されていない場合、Spark はデフォルトに基づき自動的に値を割り当てます。その値は
max(384 MB, 10% * spark.driver.memory)です。spark.executor.memoryOverhead:各エグゼキュータで使用可能な非ヒープメモリです。このパラメーターが設定されていない場合、Spark はデフォルトに基づき自動的に値を割り当てます。その値は
max(384 MB, 10% * spark.executor.memory)です。spark.memory.offHeap.size:Spark で使用可能なオフヒープメモリ量です。デフォルト値は 1 GB です。
このパラメーターは、
spark.memory.offHeap.enabledがtrueに設定されている場合にのみ有効です。Fusion エンジンを使用する場合、この機能はデフォルトで有効になり、1 GB のオフヒープメモリが割り当てられます。
[Spark Configuration]
Spark の設定情報を入力します。キーと値のペアはスペースで区切ってください。例:
key value[Tags]
タグのキーと値のペアを入力します。タグを使用すると、タスクをより便利かつ正確に管理できます。
Spark Submit
パラメーター
説明
Engine Version
Spark のバージョン。詳細については、「エンジンバージョン」をご参照ください。
[Script]
Spark Submit スクリプトを入力します。
次のコードは例を示しています。
--class org.apache.spark.examples.SparkPi \ --conf spark.executor.memory=2g \ oss://<YourBucket>/spark-examples_2.12-3.5.2.jar[Timeout]
タスクの完了に許容される最大時間です。タスクの実行時間がこのしきい値を超えると、システムが自動的にタスクを停止します。デフォルト値は空で、タイムアウト制限が設定されていないことを示します。
Network Connection
既存のネットワーク接続を選択して、VPC 内のデータソースまたは外部サービスにアクセスします。ネットワーク接続の作成方法の詳細については、「EMR Serverless Spark と他の VPC 間のネットワーク接続」をご参照ください。
[Mount Integrated File Directory]
この機能はデフォルトで無効です。この機能を使用するには、Artifacts ページの Integrated File Directory タブでファイルディレクトリを追加します。詳細については、「Manage the integrated file directory」をご参照ください。
この機能を有効にすると、管理対象のファイルディレクトリがアプリケーションにマウントされ、ディレクトリ内のファイルを直接読み書きできるようになります。
マウント操作はドライバーの計算リソースを消費します。消費されるリソース量は、以下の 2 つの値のうち大きい方です。
固定リソース:0.3 vCPU + 1 GB メモリ。
動的リソース:
spark.driverリソースの 10%(つまり、spark.driverのコア数とメモリ量のそれぞれ 10%)。
たとえば、
spark.driverが 4 コア、8 GB メモリに設定されている場合、動的リソースは 0.4 vCPU + 0.8 GB メモリとなります。この場合、実際に消費されるリソースはmax(0.3 vCPU + 1 GB, 0.4 vCPU + 0.8 GB)、つまり 0.4 vCPU + 1 GB メモリです。説明マウント範囲:デフォルトでは、ファイルディレクトリはドライバーにのみマウントされます。エグゼキュータにもマウントするには、Mount to Executor を有効にしてください。
複数ディレクトリ:複数の統合ファイルディレクトリをマウントできます。ただし、CPFS ディレクトリは他の種類と併用できません。たとえば、複数の OSS および NAS ディレクトリを同時にマウントできますが、CPFS と OSS または NAS ディレクトリを同時にマウントすることはできません。
ネットワーク要件:NAS または CPFS ファイルディレクトリをマウントする場合は、ネットワーク接続を設定する必要があります。ネットワーク接続の VPC は、NAS または CPFS マウントポイントの VPC と同一である必要があります。
Mount to Executor
この機能を有効にすると、管理対象のファイルディレクトリがアプリケーションのエグゼキューターにマウントされ、ディレクトリ内のファイルを直接読み書きできるようになります。
このマウント操作はエグゼキューターリソースを消費します。消費されるリソースの量は、マウントされたファイルの使用状況によって異なります。
spark.driver.cores
Spark アプリケーションのドライバーが使用する CPU コア数。
spark.driver.memory
Spark アプリケーションのドライバーが使用できるメモリ量。
spark.executor.cores
Spark アプリケーションの各エグゼキューターが使用する仮想 CPU コア数。
spark.executor.memory
Spark アプリケーションの各エグゼキューターが使用できるメモリ量。
spark.executor.instances
Spark によって割り当てられるエグゼキューター数。
Dynamic Resource Allocation
デフォルトで無効です。有効にした場合、以下のパラメーターを設定します。
Minimum Number of Executors:デフォルト値は 2 です。
Maximum Number of Executors:spark.executor.instances が設定されていない場合、デフォルト値は 10 です。
[More Memory Configurations]
spark.driver.memoryOverhead:ドライバーで使用可能な非ヒープメモリです。このパラメーターが設定されていない場合、Spark はデフォルトに基づき自動的に値を割り当てます。その値は
max(384 MB, 10% * spark.driver.memory)です。spark.executor.memoryOverhead:各エグゼキュータで使用可能な非ヒープメモリです。このパラメーターが設定されていない場合、Spark はデフォルトに基づき自動的に値を割り当てます。その値は
max(384 MB, 10% * spark.executor.memory)です。spark.memory.offHeap.size:Spark で使用可能なオフヒープメモリ量です。デフォルト値は 1 GB です。
このパラメーターは、
spark.memory.offHeap.enabledがtrueに設定されている場合にのみ有効です。Fusion エンジンを使用する場合、この機能はデフォルトで有効になり、1 GB のオフヒープメモリが割り当てられます。
[Spark Configuration]
Spark の設定情報を入力します。キーと値のペアはスペースで区切ってください。例:
key value[Tags]
タグのキーと値のペアを入力します。タグを使用すると、タスクをより便利かつ正確に管理できます。
(任意) タスク開発ページの右側で、Version Information タブをクリックして、バージョンを表示または比較します。
タスクを実行して公開します。
Run をクリックします。
タスクの詳細を表示するには、タスクの実行後、下部にあるExecution Recordsエリアに移動し、[アクション]列のDetailsをクリックします。
右上隅で、Publish をクリックします。
Publish ダイアログボックスで、Remarks を入力し、OK をクリックします。
関連ドキュメント
よくある質問
Q1:失敗したジョブに対して自動リトライポリシーを設定するにはどうすればよいですか?
ストリーミングタスクのフォールトトレランスを向上させるために、次の 2 つの Spark 設定項目を使用して自動リトライポリシーを設定できます。
spark.emr.serverless.streaming.fail.retry.interval 60 # 再試行間隔:60 秒
spark.emr.serverless.streaming.fail.retry.time 3 # 最大再試行回数:3Q2:StartJobRun API を呼び出したときに「ApplicationConfigs is empty」というエラーが返された場合はどうすればよいですか?
このエラーは、リクエストパラメーター内の ApplicationConfigs フィールドが空、または形式が正しくない場合に発生します。この問題を解決するには、Python SDK を使用して Spark ジョブを開始するサンプルコードを参照し、リクエストの ApplicationConfigs パラメーターが空ではなく、正しく設定されていることを確認してください。
キーワード: StartJobRun、ApplicationConfigs、SDK、API エラー。
Q3:リソース不足によりコンテナ起動時にジョブがクラッシュする場合はどうすればよいですか?
この問題は通常、リソース不足が原因で発生し、コンテナが起動直後にクラッシュします。この問題を解決するには、EMR Serverless Spark コンソールに移動し、該当する計算リソースを見つけて、ジョブレベルのリソース設定でエグゼキューターコア数 (spark.executor.cores) とエグゼキューターメモリサイズ (spark.executor.memory) を増やします。その後、ジョブを再送信し、問題が解決したことを確認してください。
キーワード: コンテナクラッシュ、リソース不足、エグゼキューターコア、エグゼキューターメモリサイズ、OOM。