Synapse 実装成功の技法: Spark プールの設計を評価する
注意
この記事は、「設計による Azure Synapse 実装の成功」シリーズの記事の一部です。 このシリーズの概要については、設計による Azure Synapse 実装の成功に関するページを参照してください。
Apache Spark プールの問題を特定し、ガイドラインと要件を満たしていることを検証するためには、その設計を評価する必要があります。 ''ソリューション開発を開始する前に'' 設計を評価することで、ブロッカーや予期しない設計変更を回避できます。 このようにして、プロジェクトのタイムラインと予算を保護します。
Synapse の Apache Spark により、Azure Synapse Analytics に Apache Spark の並列データ処理が提供されます。 この評価では、Azure Synapse の Apache Spark がワークロードに適している (またはそうでない) 場合のガイダンスが提供されます。 Spark プールを組み込んだソリューション設計要素を評価する際に考慮すべき点が示されます。
フィット ギャップ分析
Azure Synapse での Spark プールの実装を計画する場合は、まず、それらがワークロードに最適であることを確めます。
次の点を考慮してください。
- ワークロードにはデータ エンジニアリングまたはデータ準備が必要ですか?
- Apache Spark は、以下を必要とするワークロードに最適です。
- データ クリーニング。
- XML などの半構造化データのリレーショナルへの変換。
- あいまい一致や自然言語処理 (NLP) などの複雑な自由テキスト変換。
- 機械学習 (ML) 用データの準備。
- Apache Spark は、以下を必要とするワークロードに最適です。
- データ エンジニアリングやデータ準備のワークロードには、複雑または単純な変換が含まれますか? また、少量のコードやコードなしのアプローチをお探しですか?
- 列の削除、列データ型の変更、データセットの結合などの単純な変換の場合は、データ フロー アクティビティを使用して Azure Synapse パイプラインを作成することを検討してください。
- データ フロー アクティビティでは、データを準備するための少量のコードやコードなしのアプローチが提供されます。
- ワークロードではビッグ データに対して ML が必要ですか?
- Apache Spark は、ML に使用される大規模なデータセットに適しています。 小規模なデータセットを使用している場合は、コンピューティング サービスとして Azure Machine Learning を使用することを検討してください。
- ビッグ データに対してデータ探索またはアドホック クエリ分析を実行する予定はありますか?
- Azure Synapse の Apache Spark では、Python、Scala、SQL、.NET ベースのデータ探索が提供されます。 しかし、完全な Transact-SQL (T-SQL) エクスペリエンスが必要な場合は、サーバーレス SQL プールの使用を検討してください。
- 現在の Spark または Hadoop ワークロードがありますか? また、統合されたビッグ データ プラットフォームが必要ですか?
- Azure Synapse では、ビッグ データを操作するための統合された分析プラットフォームが提供されます。 アドホック クエリ用の Spark および SQL サーバーレス プールと、データの報告と提供用の専用 SQL プールがあります。
- オンプレミス (または別のクラウド環境) の Spark または Hadoop ワークロードから移行するには、考慮すべき何らかのリファクタリングが必要な場合があります。
- オンプレミスからクラウドへの Apache ビッグ データ環境のリフト アンド シフト アプローチを探していて、厳格なデータ エンジニアリング サービス レベル アグリーメント (SLA) を満たす必要がある場合は、Azure HDInsight の使用を検討してください。
アーキテクチャの考慮事項
Apache Spark プールがオペレーショナル エクセレンス、パフォーマンス、信頼性、およびセキュリティの要件を満たしていることを確めるために、アーキテクチャで検証する重要な領域があります。
オペレーショナル エクセレンス
オペレーショナル エクセレンスについては、次の点を評価します。
- 環境: 環境を構成するときは、自動スケーリングや動的割り当てなどの機能を利用するように Spark プールを設計します。 また、コストを削減するために、自動一時停止機能を有効にすることを検討してください。
- パッケージ管理: 必要な Apache Spark ライブラリをワークスペース、プール、またはセッション レベルで使用するかどうかを決定します。 詳細については、「Azure Synapse Analytics で Apache Spark 用のライブラリを管理する」を参照してください。
- 監視: Azure Synapse の Apache Spark では、各 Spark セッションの作成時の Spark プールとアプリケーション の組み込みの監視が提供されます。 メトリックとログを視覚化するために使用できる Azure Log Analytics または Prometheus と Grafana でのアプリケーション監視を実装することも検討してください。
パフォーマンス効率
パフォーマンス効率については、次の点を評価します。
- ファイル サイズとファイルの種類: ファイル サイズとファイルの数は、パフォーマンスに影響します。 ファイルの種類が Apache Spark でのネイティブ インジェストに確実に役立つように、アーキテクチャを設計します。 また、多数の小さなファイルを使用するのではなく、大きなファイルがより少なくなるようにします。
- パーティション分割: フォルダーまたはファイル レベルでパーティション分割をワークロードに実装するかどうかを特定します。 ''フォルダー パーティション'' では、検索と読み取りを行うデータの量が制限されます。 ''ファイル パーティション'' では、ファイル内で検索するデータの量が減りますが、初期アーキテクチャで考慮する必要がある特定のファイル形式にのみ適用されます。
[信頼性]
信頼性については、次の点を評価します。
- 可用性: Spark プールを起動するには 3 分から 4 分かかります。 インストールするライブラリが多数ある場合は、さらに時間がかかる可能性があります。 バッチとストリーミング ワークロードを設計する場合は、評価情報からジョブを実行するための SLA を特定し、ニーズに最適なアーキテクチャを決定します。 また、各ジョブの実行で新しい Spark プール クラスターが作成されることを考慮してください。
- チェックポイント処理: Apache Spark ストリーミングには、組み込みのチェックポイント処理メカニズムがあります。 チェックポイント処理を使用すると、プール内のノードで障害が発生した場合に、最後に処理されたエントリからストリームを回復できます。
セキュリティ
セキュリティについては、次の点を評価します。
- データ アクセス: Synapse ワークスペースにアタッチされている Azure Data Lake Storage (ADLS) アカウントのデータ アクセスを考慮する必要があります。 さらに、Azure Synapse 環境内にないデータにアクセスするために必要なセキュリティ レベルを決定します。 評価段階で収集した情報を参照してください。
- ネットワーク: 評価中に収集されたネットワーク情報と要件を確認します。 設計に Azure Synapse を使用したマネージド仮想ネットワークが含まれる場合は、この要件が Azure Synapse の Apache Spark に与える影響を考慮してください。 影響の 1 つは、データへのアクセス中に Spark SQL を使用できないことです。
次の手順
''Azure Synapse の設計上の成功'' シリーズの次の記事では、プロジェクトを開始する前に最新のデータ ウェアハウス プロジェクト計画を評価する方法について学習します。
ベスト プラクティスの詳細については、Apache Spark for Azure Synapse ガイダンスを参照してください。