Apache Spark Streamingジョブ用にSparkを調整
調整パラメーターのデフォルト値で十分なパフォーマンスを得られない場合は、Sparkジョブの[Run] (実行)ビューの[Spark configuration] (Spark設定)タブで調整パラメーターを調整して、ジョブのパフォーマンスを上げることができます。
Sparkは通常、小さいタスクを大量に処理するよりも、大きいタスクを少量処理する方が優れたパフォーマンスを発揮します。
このセクションの情報は、Talend Real Time Big Data PlatformおよびTalend Data Fabricにのみ適用されます。
手順
- このジョブの実行に使われるリソースの割り当てを最適化するには、[Set Tuning properties] (チューニングプロパティを設定)チェックボックスをオンにします。ジョブを正しく実行する上でこれらのプロパティは必須ではありませんが、クラスターのCPU、帯域幅、またはメモリなどのリソースの問題でSparkの動作が妨げられている場合に役立ちます。
-
調整の手始めとして、初期リソース割り当てを計算します。
この計算の一般的な式は次のとおりです。
-
実行プログラムの数 = (クラスターのコアの総数) / 2
-
実行プログラムあたりのコア数 = 2
-
実行プログラムあたりのメモリ容量 = (最大でクラスターのメモリ容量合計) / (実行プログラムの数)
-
-
各パラメーターを定義し、満足できるパフォーマンスを得られるまで必要に応じて修正します。
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シリアライザーをインポートする必要がある場合は、このチェックボックスをオンにし、フィールドが表示されたら、使用するシリアライザーの完全修飾クラス名を入力します。
-
[Activate backpressure] (バックプレッシャーを有効化): Sparkのパックプレッシャーを有効にするには、このチェックボックスを選択します。バックプレッシャー機能はSparkバージョン1.5以上で利用できます。バックプレッシャーを有効にすると、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シリアライザーをインポートする必要がある場合は、このチェックボックスをオンにし、フィールドが表示されたら、使用するシリアライザーの完全修飾クラス名を入力します。
-
[Activate backpressure] (バックプレッシャーを有効化): Sparkのパックプレッシャーを有効にするには、このチェックボックスを選択します。バックプレッシャー機能はSparkバージョン1.5以上で利用できます。バックプレッシャーを有効にすると、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シリアライザーをインポートする必要がある場合は、このチェックボックスをオンにし、フィールドが表示されたら、使用するシリアライザーの完全修飾クラス名を入力します。
-
[Activate backpressure] (バックプレッシャーを有効化): Sparkのパックプレッシャーを有効にするには、このチェックボックスを選択します。バックプレッシャー機能はSparkバージョン1.5以上で利用できます。バックプレッシャーを有効にすると、Sparkによって最適な受信速度が自動的に検出され、あくまでも処理可能な速度に合わせてデータを受信できるように、現在のバッチスケジューリングの待機時間と処理時間を基に速度が動的に変更されます。
-