使用 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 或更高版本
SQL Server 巨量資料叢集上的分散式資料複製簡介
Hadoop HDFS DistCP 是一種命令列工具,可用來在 HDFS 叢集之間執行檔案和資料夾的分散式平行複製。 分散式平行複製可讓您在兩個不同的叢集之間快速傳輸 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 的叢集
- 基本安全性叢集到基本安全性叢集
所有案例的必要步驟
需要有憑證才能在來源與目的地叢集之間建立信任關係。 每個來源/目的地叢集組合只需執行這些步驟一次。
重要
如果使用基本驗證 (非 AD) 的 SQL Server 巨量資料叢集直接升級至 CU13 或更高版本,則需要啟用 distcp 功能。 (這不會影響使用基本驗證的新 CU13 或更高版本的叢集部署。)
若要在此案例中啟用 distcp 功能,請執行下列額外步驟一次:
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 連線到您的來源叢集。 這是要從中複製檔案的位置。 執行下列步驟:
使用筆記本
cer001-create-root-ca.ipynb
在來源叢集中建立新的叢集根憑證使用
cer002-download-existing-root-ca.ipynb
將新的叢集根憑證下載到您的電腦使用
cer005-install-existing-root-ca.ipynb
將新的根憑證安裝到來源叢集。 這個步驟需要 10-15 分鐘。在來源叢集
cer021-create-knox-cert.ipynb
上產生新的 KNOX 憑證使用
cer031-sign-knox-generated-cert.ipynb
透過新的根憑證簽署新的 KNOX 憑證使用
cer041-install-knox-cert.ipynb
在來源叢集上安裝新的 KNOX 憑證重要
憑證產生命令會在 Windows 上的
"C:\Users\{Username}\AppData\Local\Temp\1\mssql-cluster-root-ca\"
和 UNIX 上的"/tmp/mssql-cluster-root-ca/
建立根 CA 檔案 (cluster-ca-certificate.crt
) 和 KNOX 憑證檔案 (cacert.pem
)。
步驟 2 - 在目的地上安裝憑證
使用 Azure Data Studio 連線到您的目的地叢集。 這是檔案將複製到其中的位置。 執行下列步驟:
警告
如果您在不同的電腦上使用 Azure Data Studio 來執行此工作,請在下一個步驟中執行筆記本之前,先將步驟 1 產生的 cluster-ca-certificate.crt
和 cacert.pem
檔案複製到其他電腦上的正確位置。
- 使用
cer005-install-existing-root-ca.ipynb
將新的根憑證從來源叢集安裝到目的地叢集。 這個步驟需要 10-15 分鐘。
步驟 3 - 建立金鑰表檔案
如果有任何叢集啟用了 Active Directory,您必須建立金鑰表檔案。 該檔案會執行驗證以啟用複製。
使用 ktutil
建立金鑰表檔案。 範例如下。 請務必使用適當的值來定義或取代環境變數 DOMAIN_SERVICE_ACCOUNT_USERNAME
、DOMAIN_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 - 將金鑰表複製到 HDFS 位置
只有當任何叢集啟用了 Active Directory 時,才需要執行此步驟。
請務必使用適當的值來定義或取代環境變數 DOMAIN_SERVICE_ACCOUNT_USERNAME
。
將金鑰表上傳至目的地 (安全叢集):
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 的叢集
匯出必要的環境變數
DISTCP_KRB5KEYTAB
:export DISTCP_KRB5KEYTAB=/user/$DOMAIN_SERVICE_ACCOUNT_USERNAME/$DOMAIN_SERVICE_ACCOUNT_USERNAME.keytab
使用適當的值定義或取代
CLUSTER_CONTROLLER
、DESTINATION_CLUSTER_NAMESPACE
和PRINCIPAL
變數。 然後使用azdata
向目的地叢集進行驗證:azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
執行分散式資料複製:
azdata bdc hdfs distcp submit -f https://knox.$CLUSTER_NAME.$DOMAIN:30443/file.txt -t /file.txt
案例 2 - 基本安全性叢集到已啟用 Active Directory 的叢集
匯出必要的環境變數
DISTCP_KRB5KEYTAB
、DISTCP_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>
使用適當的值定義或取代
CLUSTER_CONTROLLER
、DESTINATION_CLUSTER_NAMESPACE
和PRINCIPAL
變數。 然後使用azdata
向目的地叢集進行驗證:azdata login --auth ad --endpoint $CLUSTER_CONTROLLER --namespace $DESTINATION_CLUSTER_NAMESPACE --principal $PRINCIPAL
執行分散式資料複製
azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/file.txt --to-path /file.txt
案例 3 - 基本安全性叢集到基本安全性叢集
匯出必要的環境變數
DISTCP_AZDATA_USERNAME
和DISTCP_AZDATA_PASSWORD
:export DISTCP_AZDATA_USERNAME=<your basic security bdc username> export DISTCP_AZDATA_PASSWORD=<your basic security bdc password>
使用
azdata
向目的地叢集進行驗證執行分散式資料複製
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>
分散式複製提示
若要複製整個目錄及其內容,請使用不含 '/' 的目錄結束 path 引數。 下列範例會將整個
sourceDirectories
目錄複製到根 HDFS 目的地:azdata bdc hdfs distcp submit --from-path https://$SOURCE_CLUSTER_IP:30443/sourceDirectories --to-path /
此命令可能包含支援
--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。