Azure Data Factory, DevOps 및 기계 학습을 사용하여 데이터 파이프라인 빌드

Azure DevOps Services

데이터 수집, 데이터 변환 및 모델 학습을 사용하여 데이터 파이프라인 빌드를 시작합니다.

CSV(쉼표로 구분된 값) 파일에서 데이터를 가져와서 Azure Blob Storage에 저장하는 방법을 알아봅니다. 데이터를 변환하고 준비 영역에 저장합니다. 그런 다음, 변환된 데이터를 사용하여 기계 학습 모델을 학습시킵니다. 모델을 Blob Storage에 Python 피클 파일로 씁니다.

필수 조건

시작하기 전에 다음이 필요합니다.

Azure 리소스 프로비전

  1. Azure Portal에 로그인합니다.

  2. 메뉴에서 Cloud Shell 단추를 선택합니다. 프롬프트가 표시되면 Bash 환경을 선택합니다.

    Screenshot showing where to select Cloud Shell from the menu.

    참고 항목

    Azure Cloud Shell에서 만든 모든 파일을 유지하려면 Azure Storage 리소스가 필요합니다. Cloud Shell을 처음 열면 리소스 그룹, 스토리지 계정 및 Azure Files 공유를 만들라는 프롬프트가 표시됩니다. 해당 설정은 이후의 모든 Cloud Shell 세션에 자동으로 사용됩니다.

Azure 지역 선택

‘지역’은 지리적 위치 내에 있는 하나 이상의 Azure 데이터 센터입니다. 미국 동부, 미국 서부, 북유럽이 그 예입니다. App Service 인스턴스를 비롯한 모든 Azure 리소스에는 지역이 할당됩니다.

명령을 더 간편하게 실행하려면 먼저 기본 지역을 선택합니다. 기본 지역을 지정하면 다른 지역을 지정하지 않는 한 이후의 명령은 해당 지역을 사용합니다.

  1. Cloud Shell에서 다음 az account list-locations 명령을 실행하여 Azure 구독에서 사용할 수 있는 지역을 나열합니다.

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. 출력의 Name 열에서, 가까운 지역을 선택합니다. 예를 들어 asiapacific 또는 westus2를 선택합니다.

  3. az config를 실행하여 기본 지역을 설정합니다. 다음 예제에서는 선택한 지역의 이름으로 바꿉 <REGION> 습니다.

    az config set defaults.location=<REGION>
    

    다음 예제에서는 기본 지역으로 설정합니다 westus2 .

    az config set defaults.location=westus2
    

Bash 변수 만들기

  1. Cloud Shell에서 난수를 생성합니다. 이 번호를 사용하여 다음 단계에서 특정 서비스에 대한 전역적으로 고유한 이름을 만듭니다.

    resourceSuffix=$RANDOM
    
  2. 스토리지 계정 및 키 자격 증명 모음에 대한 전역적으로 고유한 이름을 만듭니다. 다음 명령은 큰따옴표를 사용하여 인라인 구문을 사용하여 변수를 보간하도록 Bash에 지시합니다.

    storageName="datacicd${resourceSuffix}"
    keyVault="keyvault${resourceSuffix}"
    
  3. 리소스 그룹의 이름과 지역을 저장할 Bash 변수를 하나 더 만듭니다. 다음 예제에서는 기본 지역에 대해 선택한 지역으로 바꿉 <REGION> 습니다.

    rgName='data-pipeline-cicd-rg'
    region='<REGION>'
    
  4. Azure Data Factory 및 Azure Databricks 인스턴스에 대한 변수 이름을 만듭니다.

    datafactorydev='data-factory-cicd-dev'
    datafactorytest='data-factory-cicd-test'
    databricksname='databricks-cicd-ws'
    

Azure 리소스 만들기

  1. 다음 az group create 명령을 실행하여 .를 사용하여 rgName리소스 그룹을 만듭니다.

    az group create --name $rgName
    
  2. 다음 az storage account create 명령을 실행하여 새 스토리지 계정을 만듭니다.

    az storage account create \
        --name $storageName \
        --resource-group $rgName \
        --sku Standard_RAGRS \
        --kind StorageV2
    
  3. 다음 az storage container create 명령을 실행하여 두 개의 컨테이너를 만듭니다.prepareddatarawdata

    az storage container create -n rawdata --account-name $storageName 
    az storage container create -n prepareddata --account-name $storageName 
    
  4. 다음 az keyvault create 명령을 실행하여 새 키 자격 증명 모음을 만듭니다.

    az keyvault create \
        --name $keyVault \
        --resource-group $rgName
    
  5. 포털 UI 또는 Azure CLI를 사용하여 새 데이터 팩터 리를 만듭니다.

    • 이름: data-factory-cicd-dev
    • Version: V2
    • 리소스 그룹: data-pipeline-cicd-rg
    • 위치: 가장 가까운 위치
    • Git 사용 의 선택을 취소합니다.
    1. Azure Data Factory 확장을 추가합니다.

      az extension add --name datafactory
      
    2. 다음 az datafactory create 명령을 실행하여 새 데이터 팩터리를 만듭니다.

       az datafactory create \
           --name data-factory-cicd-dev \
           --resource-group $rgName
      
    3. 구독 ID를 복사합니다. 데이터 팩터리는 나중에 이 ID를 사용합니다.

  6. 포털 UI 또는 Azure CLI를 사용하여 두 번째 데이터 팩터 리를 만듭니다. 이 데이터 팩터리를 테스트에 사용합니다.

    • 이름: data-factory-cicd-test
    • Version: V2
    • 리소스 그룹: data-pipeline-cicd-rg
    • 위치: 가장 가까운 위치
    • GIT 사용 선택 영역의 선택을 취소합니다.
    1. 다음 az datafactory create 명령을 실행하여 테스트할 새 데이터 팩터리를 만듭니다.

       az datafactory create \
           --name data-factory-cicd-test \
           --resource-group $rgName
      
    2. 구독 ID를 복사합니다. 데이터 팩터리는 나중에 이 ID를 사용합니다.

  7. 새 Azure Databricks 서비스를 추가합니다.

    • 리소스 그룹: data-pipeline-cicd-rg
    • 작업 영역 이름: databricks-cicd-ws
    • 위치: 가장 가까운 위치
    1. 아직 설치되지 않은 경우 Azure Databricks 확장을 추가합니다.

       az extension add --name databricks
      
    2. 다음 az databricks workspace create 명령을 실행하여 새 작업 영역을 만듭니다.

      az databricks workspace create \
          --resource-group $rgName \
          --name databricks-cicd-ws  \
          --location eastus2  \
          --sku trial
      
    3. 구독 ID를 복사합니다. Databricks 서비스는 나중에 이 ID를 사용합니다.

스토리지 컨테이너에 데이터 업로드

  1. Azure Portal에서 리소스 그룹에서 스토리지 계정을 data-pipeline-cicd-rg 엽니다.
  2. Blob Service>컨테이너이동합니다.
  3. 컨테이너를 prepareddata 엽니다.
  4. sample.csv 파일을 업로드합니다.

주요 자격 증명 모음 설정

Azure Key Vault를 사용하여 Azure 서비스에 대한 모든 연결 정보를 저장합니다.

Databricks 개인용 액세스 토큰 만들기

  1. Azure Portal에서 Databricks로 이동한 다음 작업 영역을 엽니다.
  2. Azure Databricks UI 에서 개인 액세스 토큰을 만들고 복사합니다.

스토리지 계정에 대한 계정 키 및 연결 문자열 복사

  1. 스토리지 계정으로 이동합니다.
  2. 선택키를 엽니다.
  3. 첫 번째 키를 복사하고 연결 문자열.

Key Vault에 값 저장

  1. 세 가지 비밀을 만듭니다.

    • databricks-token: your-databricks-pat
    • StorageKey: your-storage-key
    • 스토리지커넥트 문자열:your-storage-connection
  2. 다음 az keyvault secret set 명령을 실행하여 키 자격 증명 모음에 비밀을 추가합니다.

    az keyvault secret set --vault-name "$keyVault" --name "databricks-token" --value "your-databricks-pat"
    az keyvault secret set --vault-name "$keyVault" --name "StorageKey" --value "your-storage-key"
    az keyvault secret set --vault-name "$keyVault" --name "StorageConnectString" --value "your-storage-connection"
    

데이터 파이프라인 솔루션 가져오기

  1. Azure DevOps 조직에 로그인한 다음, 프로젝트로 이동합니다.
  2. 리포지토리로 이동한 다음 분기된 버전의 GitHub 리포지토리를 가져옵니다. 자세한 내용은 프로젝트에 Git 리포지토리 가져오기를 참조하세요.

Azure Resource Manager 서비스 연결 추가

  1. Azure Resource Manager 서비스 연결을 만듭니다.
  2. 서비스 주체(자동)를 선택합니다.
  3. data-pipeline-cicd-rg 리소스 그룹을 선택합니다.
  4. 서비스 연결 azure_rm_connection이름을 지정합니다.
  5. 모든 파이프라인에 액세스 권한 부여를 선택합니다. 이 옵션을 선택하려면 서비스 커넥트ions 관리istrator 역할이 있어야 합니다.

파이프라인 변수 추가

  1. 라는 새 변수 그룹을 만듭니다 datapipeline-vg.

  2. 아직 설치되지 않은 경우 Azure DevOps 확장을 추가합니다.

    az extension add --name azure-devops 
    
  3. Azure DevOps 조직에 로그인합니다.

    az devops login --org https://dev.azure.com/<yourorganizationname>
    
    az pipelines variable-group create --name datapipeline-vg -p <yourazuredevopsprojectname> --variables \
                                        "LOCATION=$region" \
                                        "RESOURCE_GROUP=$rgName" \
                                        "DATA_FACTORY_NAME=$datafactorydev" \
                                        "DATA_FACTORY_DEV_NAME=$datafactorydev" \
                                        "DATA_FACTORY_TEST_NAME=$datafactorytest" \
                                        "ADF_PIPELINE_NAME=DataPipeline" \
                                        "DATABRICKS_NAME=$databricksname" \
                                        "AZURE_RM_CONNECTION=azure_rm_connection" \
                                        "DATABRICKS_URL=<URL copied from Databricks in Azure portal>" \
                                        "STORAGE_ACCOUNT_NAME=$storageName" \
                                        "STORAGE_CONTAINER_NAME=rawdata"
    
  4. 라는 두 번째 변수 그룹을 만듭니다 keys-vg. 이 그룹은 Key Vault에서 데이터 변수를 가져옵니다.

  5. Azure Key Vault에서 비밀 연결을 변수로 선택합니다. 자세한 내용은 Azure Key Vault의 비밀 링크를 참조 하세요.

  6. Azure 구독에 권한을 부여합니다.

  7. 변수로 추가할 사용 가능한 비밀을 모두 선택합니다(databricks-token,StorageConnectString,StorageKey).

Azure Databricks 및 Azure Data Factory 구성

다음 섹션의 단계에 따라 Azure Databricks 및 Azure Data Factory를 설정합니다.

Azure Databricks에서 테스트 범위 만들기

  1. Azure Portal에서 Key Vault>속성으로 이동합니다.
  2. DNS 이름리소스 ID복사합니다.
  3. Azure Databricks 작업 영역에서 이름이 비밀 testscope범위를 만듭니다.

Azure Databricks에서 새 클러스터 추가

  1. Azure Databricks 작업 영역에서 클러스터이동합니다.
  2. 클러스터 만들기를 선택합니다.
  3. 새 클러스터의 이름을 지정하고 저장합니다.
  4. 새 클러스터 이름을 선택합니다.
  5. URL 문자열에서 콘텐츠를 복사 /clusters/ 합니다./configuration 예를 들어 문자열 clusters/0306-152107-daft561/configuration에서 .를 복사 0306-152107-daft561합니다.
  6. 나중에 사용할 수 있도록 이 문자열을 저장합니다.

Azure Data Factory에서 코드 리포지토리 설정

  1. Azure Data Factory에서 작성자 및 모니터이동합니다. 자세한 내용은 데이터 팩터리 만들기를 참조하세요.
  2. 코드 리포지토리 설정을 선택한 다음 리포지 토리를 연결합니다.
    • 리포지토리 유형: Azure DevOps Git
    • Azure DevOps 조직: 활성 계정
    • 프로젝트 이름: Azure DevOps 데이터 파이프라인 프로젝트
    • Git 리포지토리 이름: 기존 리포지토리를 사용합니다.
      • 공동 작업을 위해 기본 분기를 선택합니다.
      • /azure-data-pipeline/factorydata를 루트 폴더로 설정합니다.
    • 리소스를 가져올 분기: 기존기본 사용을 선택합니다.
  1. Azure Portal UI에서 키 자격 증명 모음을 엽니다.
  2. 액세스 정책을 선택합니다.
  3. 액세스 정책 추가 선택.
  4. 템플릿에서 구성하려면 키 및 비밀 관리를 선택합니다.
  5. 보안 주체 선택에서 개발 데이터 팩터리의 이름을 검색하고 추가합니다.
  6. 추가를 선택하여 액세스 정책을 추가합니다.
  7. 테스트 데이터 팩터리에 대한 액세스 정책을 추가하려면 다음 단계를 반복합니다.

Azure Data Factory에서 키 자격 증명 모음 연결된 서비스 업데이트

  1. 연결된 서비스 관리>이동합니다.
  2. 구독에 연결하도록 Azure Key Vault를 업데이트합니다.

Azure Data Factory에서 스토리지 연결된 서비스 업데이트

  1. 연결된 서비스 관리>이동합니다.
  2. 구독에 연결하도록 Azure Blob Storage 값을 업데이트합니다.

Azure Data Factory에서 Azure Databricks 연결된 서비스 업데이트

  1. 연결된 서비스 관리>이동합니다.
  2. 구독에 연결하도록 Azure Databricks 값을 업데이트합니다.
  3. 기존 클러스터 ID경우 이전에 저장한 클러스터 값을 입력합니다.

데이터 팩터리 테스트 및 게시

  1. Azure Data Factory에서 편집으로 이동합니다.
  2. DataPipeline을(를) 여십시오.
  3. 변수를 선택합니다.
  4. Azure Portal에서 storage_account_name 스토리지 계정을 참조하는지 확인합니다. 필요한 경우 기본값을 업데이트합니다. 변경 내용을 저장합니다.
  5. 유효성 검사를 선택하여 확인DataPipeline합니다.
  6. 게시를 선택하여 데이터 팩터리 자산을 adf_publish 리포지토리의 분기에 게시합니다.

CI/CD 파이프라인 실행

다음 단계에 따라 CI/CD(연속 통합 및 지속적인 업데이트) 파이프라인을 실행합니다.

  1. 파이프라인 페이지로 이동합니다. 그런 다음 새 파이프라인을 만드는 작업을 선택합니다.
  2. 소스 코드의 위치로 Azure Repos Git을 선택합니다.
  3. 리포지토리 목록이 표시되면 리포지토리를 선택합니다.
  4. 파이프라인을 설정할 때 기존 Azure Pipelines YAML 파일을 선택합니다. YAML 파일 /azure-data-pipeline/data_pipeline_ci_cd.yml을 선택합니다.
  5. 파이프라인을 실행합니다. 파이프라인이 이전에 실행되지 않은 경우 실행하는 동안 리소스에 액세스할 수 있는 권한을 부여해야 할 수 있습니다.

리소스 정리

이 애플리케이션을 계속 사용하지 않려면 다음 단계에 따라 데이터 파이프라인을 삭제합니다.

  1. 리소스 그룹을 삭제합니다 data-pipeline-cicd-rg .
  2. Azure DevOps 프로젝트를 삭제합니다.

다음 단계