Azure Synapse Analytics での Apache Spark プールの構成
Spark プールは、Spark インスタンスがインスタンス化されるときにコンピューティング リソースの要件および関連する動作特性を定義するメタデータのセットです。 これらの特性には、名前、ノード数、ノード サイズ、拡大縮小動作、有効期限が含まれますがこれらに限定されません。 Spark プール自体はリソースを使用しません。 Spark プールの作成に伴ってコストは発生しません。 料金は、Spark ジョブがターゲットの Spark プールで実行され、必要に応じて Spark インスタンスがインスタンス化された場合にのみ発生します。
Spark プールの作成方法とそのすべてのプロパティは、Synapse Analytics の Spark プールの概要に関するページでご覧いただけます。
分離コンピューティング
分離コンピューティング オプションでは、物理的なコンピューティング リソースをひとりの顧客の専用にすることによって、信頼されていないサービスから Spark コンピューティング リソースへの接触にセキュリティを強化します。 分離コンピューティング オプションは、コンプライアンスや規制上の要件を満たすなどの理由で、他の顧客のワークロードからの高いレベルの分離を必要とするワークロードに最適です。 分離コンピューティング オプションが利用できるのは、ノード サイズ XXXLarge (80 vCPU / 504 GB) と次のリージョンに限られます。 分離コンピューティング オプションはプールの作成後に有効または無効にできますが、インスタンスの再起動が必要になる場合があります。 将来、この機能を有効にする場合、分離コンピューティングがサポートされているリージョンで Synapse ワークスペースが確実に作成されるようにします。
- 米国東部
- 米国西部 2
- 米国中南部
- US Gov アリゾナ
- US Gov バージニア州
Nodes
Apache Spark プール インスタンスは、1 つのヘッド ノードと 2 つ以上のワーカー ノードで構成され、1 つの Spark インスタンスには最低 3 つのノードが必要となります。 ヘッド ノードは、Livy、Yarn Resource Manager、Zookeeper、Spark ドライバーなどの追加の管理サービスを実行します。 すべてのノードは、Node Agent や Yarn Node Manager などのサービスを実行します。 すべてのワーカー ノードは、Spark Executor サービスを実行します。
ノードのサイズ
Sparkプールは、4 vCoreと32 GB のメモリを搭載したSmallコンピューティングノードから、64 vCoreとノードあたり 432 GB のメモリを搭載した XXLarge コンピューティングノードまでの範囲のノードサイズで定義できます。 ノードのサイズはプールの作成後に変更できますが、インスタンスの再起動が必要になる場合があります。
サイズ | 仮想コア | メモリ |
---|---|---|
Small | 4 | 32 GB |
Medium | 8 | 64 GB |
Large | 16 | 128 GB |
XLarge | 32 | 256 GB |
XXLarge | 64 | 432 GB |
XXX Large (分離コンピューティング) | 80 | 504 GB |
自動スケール
Apache Spark プール用の自動スケーリングでは、アクティビティの量に基づいてコンピューティング リソースを自動的にスケールアップおよびスケールダウンすることができます。 自動スケーリング機能が有効になっている場合は、スケーリングするノードの最小数と最大数を設定します。 自動スケーリング機能が無効になっている場合には、設定されているノード数は固定されたままになります。 この設定はプールの作成後に変更できますが、インスタンスの再起動が必要になる場合があります。
エラスティック プール ストレージ
Apache Spark プールでは、エラスティック プール ストレージがサポートされるようになりました。 エラスティック プール ストレージを使うと、Spark エンジンはワーカー ノードの一時ストレージを監視し、必要に応じて追加のディスクをアタッチできます。 Apache Spark プールは、プールがインスタンス化されている間に一時ディスク ストレージを利用します。 Spark ジョブは、シャッフル マップ出力、シャッフル データ、あふれたデータをローカル VM ディスクに書き込みます。 ローカル ディスクを利用する操作の例としては、並べ替え、キャッシュ、永続化があります。 一時的な VM ディスク領域が不足すると、"ディスク領域の不足" エラー (java.io.IOException: デバイスに空き領域がありません) が原因で Spark ジョブが失敗する可能性があります。 "ディスク領域の不足" エラーが発生した場合、Spark ジョブ (パーティション数の調整など) またはクラスター (クラスターへのノードの追加など) を再構成するために、ジョブが失敗しないようにする負荷の多くは顧客に移ります。 これらのエラーは一貫していない可能性があり、ユーザーは実稼働ジョブを実行することで頻繁に実験を行うことになる可能性があります。 このプロセスは、次のような複数の側面でユーザーにとってコストがかかる場合があります。
- 無駄な時間。 顧客は、試行錯誤によるジョブ構成で頻繁に試す必要があり、Spark の内部メトリックを理解して正しい決定を下すことが求められます。
- 無駄なリソース。 実稼働ジョブはさまざまな量のデータを処理できるため、リソースが過剰にプロビジョニングされていない場合、Spark ジョブが非確定的に失敗する可能性があります。 たとえば、いくつかのノードで他のノードよりも多くのディスク領域が必要になるデータ スキューの問題を検討してください。 現在 Synapse では、クラスター内の各ノードは同じサイズのディスク領域を取得し、すべてのノード全体のディスク領域を増やすことは理想的なソリューションではなく、膨大な無駄につながります。
- ジョブ実行の速度低下。 ノードを自動スケーリングして問題を解決する架空のシナリオ (コストがエンド カスタマーの問題でないと仮定) では、ストレージの追加 (数秒かかる) ではなく、コンピューティング ノードの追加 (数分かかる) はコストがかかります。
必要な操作はありません。また、結果としてジョブの失敗が少なくなります。
注意
Azure Synapse のエラスティック プール ストレージは現在パブリック プレビュー段階です。 パブリック プレビュー期間中は、エラスティック プール ストレージを使っても料金はかかりません。
自動一時停止
自動一時停止機能は、設定されたアイドル時間後にリソースを解放し、Apache Spark プールの全体的なコストを削減します。 この機能を有効にすると、アイドル時間を分単位で設定できます。 自動一時停止機能は、自動スケーリング機能とは独立しています。 自動スケーリングが有効か無効かにかかわらず、リソースを一時停止できます。 この設定はプールの作成後に変更できますが、アクティブなセッションを再起動する必要があります。