Apache Spark Batchジョブ用にSparkを調整
調整パラメーターのデフォルト値で十分なパフォーマンスを得られない場合は、Sparkジョブの[Run] (実行)ビューの[Spark configuration] (Spark設定)タブで調整パラメーターを調整して、ジョブのパフォーマンスを上げることができます。
Sparkは通常、小さいタスクを大量に処理するよりも、大きいタスクを少量処理する方が優れたパフォーマンスを発揮します。
このセクションの情報は、Talend Data Fabric、またはビッグデータ関連のTalend製品のいずれかにサブスクライブしているユーザーのみが対象です。
手順
- このジョブの実行に使われるリソースの割り当てを最適化するには、[Set Tuning properties] (チューニングプロパティを設定)チェックボックスをオンにします。ジョブを正しく実行する上でこれらのプロパティは必須ではありませんが、クラスターのCPU、帯域幅、またはメモリなどのリソースの問題でSparkの動作が妨げられている場合に役立ちます。
-
調整の手始めとして、初期リソース割り当てを計算します。
この計算の一般的な式は次のとおりです。
-
実行プログラムの数 = (クラスターのコアの総数) / 2
-
実行プログラムあたりのコア数 = 2
-
実行プログラムあたりのメモリ容量 = (最大でクラスターのメモリ容量合計) / (実行プログラムの数)
-
-
各パラメーターを定義し、満足できるパフォーマンスを得られるまで必要に応じて修正します。
以下の表に、チューニングプロパティの包括的なリストを示します。[Spark configuration] (Spark設定)タブで使用できる実際のプロパティは、使用しているディストリビューションによって異なる場合があります。
Sparkスタンドアロンモード
-
Driver memory (ドライバーメモリ量)とDriver core (ドライバーコア): 現在のジョブのドライバーで使用するメモリの割り当て量とコア数を入力します。
-
[Executor memory] (エグゼキューターメモリ量): 各Spark実行プログラムによって使用されるメモリの割り当て量を入力します。
-
[Core per executor] (実行プログラムあたりのコア数): このチェックボックスを選択すると、フィールドが表示されるので、各実行プログラムで使用するコア数を入力します。このチェックボックスを解除したままにすると、Sparkによって定義されたデフォルトの割り当て数が使用されます。たとえば、スタンドアロンモードでは、使用可能なすべてのコアが1つの実行プログラムで使われます。
-
[Set Web UI port] (WEB UIポートを設定): Spark Web UIのデフォルトのポートを変更する必要がある場合は、このチェックボックスをオンにし、使用するポート番号を入力します。
-
Broadcast factory (ブロードキャストファクトリー): 各ワーカーマシンで変数をキャッシュするために使用するブロードキャスト実装を選択します。
-
[Customize Spark serializer] (カスタマイズSparkシリアライザー): 外部Sparkシリアライザーをインポートする必要がある場合は、このチェックボックスをオンにし、フィールドが表示されたら、使用するシリアライザーの完全修飾クラス名を入力します。
- [Job progress polling rate (in ms)] (ジョブ進行状況のポーリングレート (ミリ秒)): Spark V2.3以降を使用している場合は、StudioがSparkにジョブ実行の進行状況の表示を求める間隔(ミリ秒)を入力します。V2.3よりも前のバージョンでは、Sparkはアップデート時にこの情報をStudioに自動的に送信します。このパラメーターがデフォルト値(50ミリ秒)の場合、StudioはSpark V2.3以降とほぼ同じシナリオを再現します。
この間隔の設定が長すぎると、進行状況に関する情報が一部失われる可能性があります。短すぎると、Sparkに送るリクエストの回数が多くなりすぎて、進行状況の情報の有用性が失われる恐れがあります。
Spark Yarnクライアントモード
-
[Set application master tuning properties] (アプリケーションマスターチューニングプロパティを設定): このチェックボックスをオンにし、フィールドが表示されたら、クラスターのApplicationMasterサービスに割り当てるメモリの容量およびCPUの数を入力します。
クラスターでデフォルトの割り当てを使用する場合は、このチェックボックスを解除したままにしておきます。
-
[Executor memory] (エグゼキューターメモリ量): 各Spark実行プログラムによって使用されるメモリの割り当て量を入力します。
-
[Set executor memory overhead] (実行プログラムのメモリオーバーヘッドを設定): このチェックボックスをオンにし、フィールドが表示されたら、実行プログラムごとに割り当てるオフヒープメモリの容量(MB単位)を入力します。これは実質的にspark.yarn.executor.memoryOverheadプロパティです。
-
[Core per executor] (実行プログラムあたりのコア数): このチェックボックスを選択すると、フィールドが表示されるので、各実行プログラムで使用するコア数を入力します。このチェックボックスを解除したままにすると、Sparkによって定義されたデフォルトの割り当て数が使用されます。たとえば、スタンドアロンモードでは、使用可能なすべてのコアが1つの実行プログラムで使われます。
-
[Yarn resource allocation] (Yarnリソース割り当て): Yarnによる実行プログラムへのリソースの割り当て方法を選択します。
-
[Auto] (自動): 実行プログラムのデフォルトの数をYarnで使用します。デフォルト値は2です。
-
[Fixed] (固定): 表示された[Num executors] (エグゼキューター数)に、使用する実行プログラムの数を入力します。
-
[Dynamic] (ダイナミック): Yarnにより、ワークロードに合わせて実行プログラムの数が変更されます。このダイナミックな割り当ての規模を定義する必要があります。それには、実行プログラムの初期数を[Initial executors] (初期エグゼキューター数)フィールドで、最小数を[Min executors] (最小エグゼキューター数)フィールドで、最大数を[Max executors] (最大エグゼキューター数)フィールドで定義します。
-
-
[Set Web UI port] (WEB UIポートを設定): Spark Web UIのデフォルトのポートを変更する必要がある場合は、このチェックボックスをオンにし、使用するポート番号を入力します。
-
Broadcast factory (ブロードキャストファクトリー): 各ワーカーマシンで変数をキャッシュするために使用するブロードキャスト実装を選択します。
-
[Customize Spark serializer] (カスタマイズSparkシリアライザー): 外部Sparkシリアライザーをインポートする必要がある場合は、このチェックボックスをオンにし、フィールドが表示されたら、使用するシリアライザーの完全修飾クラス名を入力します。
- [Job progress polling rate (in ms)] (ジョブ進行状況のポーリングレート (ミリ秒)): Spark V2.3以降を使用している場合は、StudioがSparkにジョブ実行の進行状況の表示を求める間隔(ミリ秒)を入力します。V2.3よりも前のバージョンでは、Sparkはアップデート時にこの情報をStudioに自動的に送信します。このパラメーターがデフォルト値(50ミリ秒)の場合、StudioはSpark V2.3以降とほぼ同じシナリオを再現します。
この間隔の設定が長すぎると、進行状況に関する情報が一部失われる可能性があります。短すぎると、Sparkに送るリクエストの回数が多くなりすぎて、進行状況の情報の有用性が失われる恐れがあります。
Spark Yarnクラスターモード
-
Driver memory (ドライバーメモリ量)とDriver core (ドライバーコア): 現在のジョブのドライバーで使用するメモリの割り当て量とコア数を入力します。
-
[Executor memory] (エグゼキューターメモリ量): 各Spark実行プログラムによって使用されるメモリの割り当て量を入力します。
-
[Set executor memory overhead] (実行プログラムのメモリオーバーヘッドを設定): このチェックボックスをオンにし、フィールドが表示されたら、実行プログラムごとに割り当てるオフヒープメモリの容量(MB単位)を入力します。これは実質的にspark.yarn.executor.memoryOverheadプロパティです。
-
[Core per executor] (実行プログラムあたりのコア数): このチェックボックスを選択すると、フィールドが表示されるので、各実行プログラムで使用するコア数を入力します。このチェックボックスを解除したままにすると、Sparkによって定義されたデフォルトの割り当て数が使用されます。たとえば、スタンドアロンモードでは、使用可能なすべてのコアが1つの実行プログラムで使われます。
-
[Yarn resource allocation] (Yarnリソース割り当て): Yarnによる実行プログラムへのリソースの割り当て方法を選択します。
-
[Auto] (自動): 実行プログラムのデフォルトの数をYarnで使用します。デフォルト値は2です。
-
[Fixed] (固定): 表示された[Num executors] (エグゼキューター数)に、使用する実行プログラムの数を入力します。
-
[Dynamic] (ダイナミック): Yarnにより、ワークロードに合わせて実行プログラムの数が変更されます。このダイナミックな割り当ての規模を定義する必要があります。それには、実行プログラムの初期数を[Initial executors] (初期エグゼキューター数)フィールドで、最小数を[Min executors] (最小エグゼキューター数)フィールドで、最大数を[Max executors] (最大エグゼキューター数)フィールドで定義します。
-
-
[Set Web UI port] (WEB UIポートを設定): Spark Web UIのデフォルトのポートを変更する必要がある場合は、このチェックボックスをオンにし、使用するポート番号を入力します。
-
Broadcast factory (ブロードキャストファクトリー): 各ワーカーマシンで変数をキャッシュするために使用するブロードキャスト実装を選択します。
-
[Customize Spark serializer] (カスタマイズSparkシリアライザー): 外部Sparkシリアライザーをインポートする必要がある場合は、このチェックボックスをオンにし、フィールドが表示されたら、使用するシリアライザーの完全修飾クラス名を入力します。
- [Job progress polling rate (in ms)] (ジョブ進行状況のポーリングレート (ミリ秒)): Spark V2.3以降を使用している場合は、StudioがSparkにジョブ実行の進行状況の表示を求める間隔(ミリ秒)を入力します。V2.3よりも前のバージョンでは、Sparkはアップデート時にこの情報をStudioに自動的に送信します。このパラメーターがデフォルト値(50ミリ秒)の場合、StudioはSpark V2.3以降とほぼ同じシナリオを再現します。
この間隔の設定が長すぎると、進行状況に関する情報が一部失われる可能性があります。短すぎると、Sparkに送るリクエストの回数が多くなりすぎて、進行状況の情報の有用性が失われる恐れがあります。
-