Windows 上で PolyBase スケールアウト グループを構成する

適用対象: SQL Server - Windows のみ Azure SQL Managed Instance

この記事では、Windows 上で PolyBase スケールアウト グループを設定する方法について説明します。 これにより、Hadoop や Azure Blob Storage などの外部データ ソースからの大量のデータ セットを、クエリ パフォーマンスの向上のためにスケールアウト形式で処理するために、SQL Server インスタンス クラスターが作成されます。

重要

Microsoft SQL Server PolyBase スケールアウト グループは廃止されます。 SQL Server 2022 (16.x) では、スケールアウト グループ機能が製品から削除されます。 PolyBase データ仮想化は、SQL Server のスケールアップ機能として引き続き完全にサポートされます。 詳細については、「Microsoft SQL Server プラットフォームのビッグ データ オプション」を参照してください。

前提条件

プロセスの概要

次の手順は、PolyBase スケールアウト グループを作成するプロセスをまとめたものです。 次のセクションでは、各手順の詳細なチュートリアルを提供します。

  1. N 台のマシンに、同じバージョンの SQL Server と PolyBase をインストールします。

  2. 1 つの SQL Server インスタンスをヘッド ノードとして選択します。

  3. sp_polybase_join_groupを使用して、残りの SQL Server インスタンスをコンピューティング ノードとして追加します。

  4. sys.dm_exec_compute_nodes (Transact-SQL) を使用して、グループのノードを監視します。

  5. 省略可能。 sp_polybase_leave_group (Transact-SQL) を使用して、計算ノードを削除します。

サンプル チュートリアル

ここでは、次のものを使用して PolyBase グループを構成する手順について説明します。

  1. ドメイン PQTH4A 内の 2 つのマシン。マシン名は次のとおりです。

    • PQTH4A-CMP01

    • PQTH4A-CMP02

  2. ドメイン アカウント: PQTH4A\PolyBaseUser

すべてのマシンに、PolyBase を使用する SQL Server をインストールする

  1. setup.exe を実行します。

  2. [機能の選択] ページで、[外部データ用 PolyBase クエリ サービス] を選択します。

  3. [サーバーの構成] ページで、SQL Server PolyBase エンジンと SQL Server PolyBase Data Movement サービス用にドメイン アカウント PQTH4A\PolyBaseUser を使用します。

  4. [PolyBase の構成] ページで、 [PolyBase スケール アウト グループの一部として、SQL Server インスタンスを使用します]オプションを選択します。 これにより、PolyBase サービスへの着信接続を許可するようにファイアウォールが開かれます。 SQL Server インストール ウィザードにより、Windows Server ファイアウォールで次の TCP ポートが自動的に公開されます: 1433、16450-16453、17001。 ヘッド ノードが SQL Server 名前付きインスタンスの場合は、ヘッド ノードの Windows ファイアウォールに SQL Server ポートも手動で追加し、またヘッド ノードで SQL Browser を開始する必要があります。 ポートは、PolyBase スケールアウト グループ内のサーバーのファイアウォールでのみ許可する必要があります。

  5. セットアップが完了したら、 services.mscを実行します。 SQL Server、PolyBase エンジン、および PolyBase データ移動サービスが実行されていることを確認します。

    A screenshot from SQL Server Configuration Manager, showing the PolyBase services.

1 つの SQL Server をヘッド ノードとして選択する

セットアップが完了すると、両方のマシンが PolyBase グループのヘッド ノードとして機能できます。 この例では、PQTH4A-CMP01 上の "MSSQLSERVER" インスタンスをヘッド ノードとして選択します。

その他の SQL Server インスタンスをコンピューティング ノードとして追加する

  1. PQTH4A-CMP02 上の SQL Server に接続します。

  2. ストアド プロシージャ sp_polybase_join_groupを実行します。

    -- Enter head node details:
    -- head node machine name, head node dms control channel port, head node sql server name  
     EXEC sp_polybase_join_group 'PQTH4A-CMP01', 16450, 'MSSQLSERVER';
    
  3. コンピューティング ノード (PQTH4A-CMP02) で、services.msc を実行します。

  4. PolyBase エンジンをシャットダウンし、PolyBase データ移動サービスを再起動します。

Note

Polybase Engine サービスが再起動したか、ヘッド ノードで停止した場合、Data Movement Service (DMS) と PolyBase エンジン サービス (DW) の間で通信チャネルが閉じられた直後、DMS サービスが停止します。 DW エンジンが 2 回より多く再起動した場合、DMS は 90 分間沈黙します。次回の自動起動試行まで 90 分待機する必要があります。 そのような状況では、すべてのノードで、このサービスを手動で開始してください。

省略可能: コンピューティング ノードを削除する

  1. コンピューティング ノードの SQL Server (PQTH4A-CMP02) に接続します。

  2. sp_polybase_leave_group ストアド プロシージャを実行します。

    EXEC sp_polybase_leave_group;  
    
  3. 削除するコンピューティング ノード (PQTH4A-CMP02) で、services.msc を実行します。

  4. PolyBase エンジンを起動します。 PolyBase データ移動サービスを再起動します。

  5. PQTH4A-CMP01 で DMV sys.dm_exec_compute_nodes を実行して、ノードが削除されたことを確認します。 これで、PQTH4A-CMP02 はスタンドアロンのヘッド ノードとして機能するようになります。

制限事項

  • 既定の SQL Server インスタンスが、1433 以外の TCP ポートをリッスンするように構成されている場合、それを PolyBase スケールアウト グループのヘッド ノードとして使用できません。 sp_polybase_join_group の実行時に、"MSSQLSERVER" をインスタンス名として渡すと、SQL Server では、ポート 1433 がリスナー ポートであると想定するため、開始時にデータ移動サービスがヘッド ノードに接続できなくなります。

  • PolyBase スケールアウト グループは、Always On 可用性グループではサポートされていません。