azdata distcp를 사용하여 SQL Server 빅 데이터 클러스터 간에 데이터 이동 수행

적용 대상: SQL Server 2019(15.x)

중요

Microsoft SQL Server 2019 빅 데이터 클러스터 추가 기능이 사용 중지됩니다. SQL Server 2019 빅 데이터 클러스터에 대한 지원은 2025년 2월 28일에 종료됩니다. Software Assurance를 사용하는 SQL Server 2019의 모든 기존 사용자는 플랫폼에서 완전히 지원되며, 소프트웨어는 지원 종료 시점까지 SQL Server 누적 업데이트를 통해 계속 유지 관리됩니다. 자세한 내용은 공지 블로그 게시물Microsoft SQL Server 플랫폼의 빅 데이터 옵션을 참조하세요.

이 문서에서는 azdata를 사용하여 SQL Server 빅 데이터 클러스터 간에 고성능 분산 데이터 복사를 수행하는 방법을 설명합니다.

필수 조건

SQL Server 빅 데이터 클러스터에 대한 분산 데이터 복사 소개

Hadoop HDFS DistCP는 한 HDFS 클러스터에서 다른 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 사용 클러스터로
  • 기본 보안 클러스터에서 기본 보안 클러스터로

모든 시나리오에 필요한 단계

원본 클러스터와 대상 클러스터 간에 신뢰할 수 있는 관계를 만들려면 인증서가 필요합니다. 이러한 단계는 원본/대상 클러스터 조합당 한 번만 필요합니다.

Important

기본 인증을 사용하는 SQL Server 빅 데이터 클러스터(비 AD)가 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

다음 단계에서 필요한 Notebook은 SQL Server 빅 데이터 클러스터용 운영 Notebook의 일부입니다. Notebook을 설치하고 사용하는 방법에 대한 자세한 내용은 운영 Notebook을 참조하세요

1단계 - 인증서 만들기 및 설치

Azure Data Studio를 사용하여 원본 클러스터에 연결합니다. 여기에서 파일이 복사됩니다. 다음 단계를 수행합니다.

  1. Notebook 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 인증서를 원본 클러스터에 설치합니다.

    Important

    인증서 생성 명령은 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를 사용하여 대상 클러스터에 연결합니다. 여기에 파일을 복사합니다. 다음 단계를 수행합니다.

Warning

다른 컴퓨터에서 Azure Data Studio를 사용하여 이 작업을 수행하는 경우, 1단계에서 생성된 cluster-ca-certificate.crtcacert.pem 파일을 다른 컴퓨터의 올바른 위치에 복사한 후 다음 단계에서 Notebook을 실행합니다.

  1. cer005-install-existing-root-ca.ipynb를 사용하여 원본 클러스터에서 대상 클러스터로 새 루트 인증서를 설치합니다. 이 단계는 10~15분 정도 걸립니다.

3단계 - Keytab 파일 만들기

클러스터 중 하나에서 ActiveDirectory를 사용하도록 설정된 경우 keytab 파일을 만들어야 합니다. 이 파일은 복사가 가능하도록 인증을 수행합니다.

ktutil을 사용하여 keytab 파일을 만듭니다. 예를 들면 다음과 같습니다. 환경 변수 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 위치에 keytab 복사

클러스터 중 하나에서 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_CONTROLLER, DESTINATION_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_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>
    
  2. CLUSTER_CONTROLLER, DESTINATION_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_USERNAMEDISTCP_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를 참조하세요.