azdata distcp を使用して、SQL Server ビッグ データ クラスター間のデータ移動を実行する

適用対象: SQL Server 2019 (15.x)

重要

Microsoft SQL Server 2019 ビッグ データ クラスターのアドオンは廃止されます。 SQL Server 2019 ビッグ データ クラスターのサポートは、2025 年 2 月 28 日に終了します。 ソフトウェア アシュアランス付きの SQL Server 2019 を使用する既存の全ユーザーはプラットフォームで完全にサポートされ、ソフトウェアはその時点まで SQL Server の累積更新プログラムによって引き続きメンテナンスされます。 詳細については、お知らせのブログ記事と「Microsoft SQL Server プラットフォームのビッグ データ オプション」を参照してください。

この記事では、azdata を使用して、SQL Server ビッグ データ クラスター 間で高パフォーマンスの分散データ コピーを実行する方法について説明します。

前提条件

  • Azure Data Studio
  • azdata バージョン 20.3.8 以降
  • SQL Server ビッグ データ クラスター CU13 以降が 2 つ

SQL Server ビッグ データ クラスターでの分散データ コピーの概要

Hadoop HDFS DistCP は、HDFS クラスター間でのファイルおよびフォルダーの分散並列コピーを実行するために使用されるコマンドライン ツールです。 分散並列コピーを使用すると、2 つの異なるクラスター間で Data Lake スケール ファイルとフォルダーを高速に転送でき、移行、セグメント化された環境の作成、高可用性、ディザスター リカバリーのシナリオが可能になります。

Hadoop HDFS DistCP では内部 MapReduce ジョブを使用して、ファイルとディレクトリの一覧を複数のマップ タスクへの入力に展開し、各タスクでは、ソース一覧で指定されたファイルのパーティションをターゲットにコピーします。 これにより、ソース クラスター内の複数のデータ ノードから、ターゲット クラスター内の複数のデータ ノードに直接データを送信し、完全な分散並列コピー シナリオを作成できます。

SQL Server ビッグ データ クラスターCU13 以上では、分散コピー機能は製品に統合されており、azdata bdc hdfs distcp コマンドを使用して公開されています。 コマンドは非同期操作であり、コピー ジョブがバックグラウンドで実行されている間にすぐに制御を戻します。 azdata または提供されている監視ユーザー インターフェイスを使用して、コピー ジョブを監視します。

サポートされるのは、SQL Server ビッグ データ クラスター のソースとターゲットのみです。

クラスターは Active Directory 対応モードと基本セキュリティ モードの両方でデプロイできます。 コピーは、任意の組み合わせのセキュリティ モード間で実行できます。 Active Directory 対応クラスターの場合、それらが同じドメイン内に存在する必要があります。

このガイドでは、次のデータ コピー シナリオについて説明します。

  • Active Directory 対応クラスターから Active Directory 対応クラスターへ
  • 基本セキュリティ クラスターから Active Directory 対応クラスターへ
  • 基本セキュリティ クラスターから基本セキュリティ クラスターへ

すべてのシナリオに必要な手順

ソースとターゲットのクラスター間に信頼関係を作成するには、証明書が必要です。 これらの手順は、ソースとターゲットのクラスターの組み合わせごとに 1 回だけ必要です。

重要

基本認証 (非 AD) の SQL Server ビッグ データ クラスターを CU13 以上に直接アップグレードすると、distcp 機能のアクティブ化が必要になります。 (これは、基本認証の新しい CU13+ クラスターのデプロイには影響しません。)

このシナリオで distcp 機能を有効にするには、次の追加手順を 1 回実行します。

kubectl -n $CLUSTER_NAME exec -it nmnode-0-0 -- bash
export HADOOP_USER_NAME=hdfs
hadoop fs -mkdir -p /tmp/hadoop-yarn/staging/history
hadoop fs -chown yarn /tmp/hadoop-yarn
hadoop fs -chown yarn /tmp/hadoop-yarn/staging
hadoop fs -chown yarn /tmp/hadoop-yarn/staging/history
hadoop fs -chmod 733 /tmp/hadoop-yarn
hadoop fs -chmod 733 /tmp/hadoop-yarn/staging
hadoop fs -chmod 733 /tmp/hadoop-yarn/staging/history

次の手順で必要となるノートブックは、SQL Server ビッグ データ クラスター の運用ノートブックの一部です。 ノートブックをインストールして使用する方法の詳細については、運用ノートブックに関するページを参照してください

手順 1 - 証明書の作成とインストール

Azure Data Studio を使用して、ソース クラスターに接続します。 これがファイルのコピー元となります。 次の手順に従います。

  1. ノートブック cer001-create-root-ca.ipynb を使用して、新しいクラスター ルート証明書をソース クラスターに作成します

  2. cer002-download-existing-root-ca.ipynb を使用して、新しいクラスター ルート証明書をコンピューターにダウンロードします

  3. cer005-install-existing-root-ca.ipynb を使用して、新しいルート証明書をソース クラスターにインストールします。 この手順には 10 分から 15 分かかります。

  4. cer021-create-knox-cert.ipynb を使用して、新しい knox 証明書をソース クラスターで生成します

  5. cer031-sign-knox-generated-cert.ipynb を使用して、新しいルート証明書で新しい knox 証明書に署名します

  6. cer041-install-knox-cert.ipynb を使用して、新しい knox 証明書をソース クラスターにインストールします

    重要

    証明書生成コマンドを実行すると、ルート CA ファイル (cluster-ca-certificate.crt) と Knox 証明書ファイル (cacert.pem) が Windows 上の "C:\Users\{Username}\AppData\Local\Temp\1\mssql-cluster-root-ca\" および Unix 上の "/tmp/mssql-cluster-root-ca/ に作成されます。

手順 2 - ターゲットへの証明書のインストール

Azure Data Studio を使用して、ターゲット クラスターに接続します。 これがファイルのコピー先となります。 次の手順に従います。

警告

このタスクを実行するために異なるコンピューターで Azure Data Studio を使用している場合は、次の手順でノートブックを実行する前に、手順 1 で生成された cluster-ca-certificate.crt および cacert.pem ファイルを一方のコンピューターの適切な場所にコピーします。

  1. cer005-install-existing-root-ca.ipynb を使用して、ソース クラスターからターゲット クラスターに新しいルート証明書をインストールします。 この手順には 10 分から 15 分かかります。

手順 3 - keytab ファイルの作成

いずれかのクラスターが Active Directory 対応である場合は、keytab ファイルを作成する必要があります。 そのファイルで認証を行い、コピーを実行できるようにします。

ktutil を使用して、keytab ファイルを作成します。 以下に例を示します。 必ず環境変数 DOMAIN_SERVICE_ACCOUNT_USERNAMEDOMAIN_SERVICE_ACCOUNT_PASSWORD、および REALM を定義するか、適切な値に置き換えてください。

ktutil
> add_entry -password -p $DOMAIN_SERVICE_ACCOUNT_USERNAME@$REALM -k 1 -e arcfour-hmac-md5
$DOMAIN_SERVICE_ACCOUNT_PASSWORD
> add_entry -password -p $DOMAIN_SERVICE_ACCOUNT_USERNAME@$REALM -k 1 -e aes256-cts
$DOMAIN_SERVICE_ACCOUNT_PASSWORD
> add_entry -password -p $DOMAIN_SERVICE_ACCOUNT_USERNAME@$REALM -k 1 -e aes256-cts-hmac-sha1-96
$DOMAIN_SERVICE_ACCOUNT_PASSWORD
> wkt /tmp/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab
> exit

手順 4 - keytab を HDFS の場所にコピーする

この手順が必要なのは、いずれかのクラスターが Active Directory 対応である場合のみです。

必ず環境変数 DOMAIN_SERVICE_ACCOUNT_USERNAME を定義するか、適切な値に置き換えてください。

keytab をターゲット (セキュリティで保護されたクラスター) にアップロードします。

azdata bdc hdfs mkdir -p /user/$DOMAIN_SERVICE_ACCOUNT_USERNAME
azdata bdc hdfs cp -f /tmp/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab -t /user/$DOMAIN_SERVICE_ACCOUNT_USERNAME/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab

データ コピーのシナリオ

シナリオ 1 - Active Directory 対応クラスターから Active Directory 対応クラスターへ

  1. 必要な環境変数 DISTCP_KRB5KEYTAB をエクスポートします。

    export DISTCP_KRB5KEYTAB=/user/$DOMAIN_SERVICE_ACCOUNT_USERNAME/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab
    
  2. CLUSTER_CONTROLLERDESTINATION_CLUSTER_NAMESPACE、および PRINCIPAL 変数を定義するか、適切な値に置き換えます。 その後、azdata を使用して、ターゲット クラスターに対する認証を行います。

    azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
    
  3. 分散データ コピーを実行します。

    azdata bdc hdfs distcp submit -f https://knox.$CLUSTER_NAME.$DOMAIN:30443/file.txt -t  /file.txt
    

シナリオ 2 - 基本セキュリティ クラスターから Active Directory 対応クラスターへ

  1. 必要な環境変数 DISTCP_KRB5KEYTABDISTCP_AZDATA_USERNAME、および DISTCP_AZDATA_PASSWORD をエクスポートします。

    export DISTCP_KRB5KEYTAB=/user/$DOMAIN_SERVICE_ACCOUNT_USERNAME/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab
    export DISTCP_AZDATA_USERNAME=<your basic security bdc username> 
    export DISTCP_AZDATA_PASSWORD=<your basic security bdc password>
    
  2. CLUSTER_CONTROLLERDESTINATION_CLUSTER_NAMESPACE、および PRINCIPAL 変数を定義するか、適切な値に置き換えます。 その後、azdata を使用して、ターゲット クラスターに対する認証を行います。

    azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
    
  3. 分散データ コピーを実行します

    azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/file.txt --to-path /file.txt
    

シナリオ 3 - 基本セキュリティ クラスターから基本セキュリティ クラスターへ

  1. 必要な環境変数 DISTCP_AZDATA_USERNAME および DISTCP_AZDATA_PASSWORD をエクスポートします。

    export DISTCP_AZDATA_USERNAME=<your basic security bdc username> 
    export DISTCP_AZDATA_PASSWORD=<your basic security bdc password>
    
  2. azdata を使用して、ターゲット クラスターに対する認証を行います

  3. 分散データ コピーを実行します

    azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/file.txt --to-path /file.txt
    

分散コピー ジョブの監視

azdata bdc hdfs distcp submit コマンドは非同期操作であり、コピー ジョブがバックグラウンドで実行されている間にすぐに制御を戻します。 azdata または提供されている監視ユーザー インターフェイスを使用して、コピー ジョブを監視します。

すべての分散コピー ジョブを一覧表示する

azdata bdc hdfs distcp list

追跡するジョブの job-id をメモしておきます。他のすべてのコマンドはそれに依存します。

分散コピー ジョブの状態を取得する

azdata bdc hdfs distcp state [--job-id | -i] <JOB_ID>

分散コピー ジョブの完全な状態を取得する

azdata bdc hdfs distcp status [--job-id | -i] <JOB_ID>

分散コピー ジョブのログを取得する

azdata bdc hdfs distcp log [--job-id | -i] <JOB_ID>

分散コピーのヒント

  1. ディレクトリ全体とその内容をコピーするには、パス引数が '/' のないディレクトリで終わるようにします。 次の例では、sourceDirectories ディレクトリ全体をルート HDFS ターゲットにコピーします。

    azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/sourceDirectories --to-path /
    
  2. コマンドには、--overwrite--preserve--update、および --delete 修飾子をサポートするオプションを含めることができます。 修飾子は、以下のように submit キーワードの直後に配置する必要があります。

    azdata bdc hdfs distcp submit {options} --from-path https://$SOURCE_CLUSTER_IP:30443/sourceDirectories --to-path /
    

次のステップ

詳細については、「SQL Server ビッグ データ クラスターの概要」を参照してください。

新しいコマンドの完全なリファレンスについては、azdata bdc hdfs distcp に関するページを参照してください。