다음을 통해 공유


자습서: Azure Data Factory를 사용하여 HDInsight에서 주문형 Apache Hadoop 클러스터 만들기

이 자습서에서는 Azure Data Factory를 사용하여 Azure HDInsight에서 요청 시 Apache Hadoop 클러스터를 만드는 방법을 알아봅니다. 그런 다음 Azure Data Factory의 데이터 파이프라인을 사용하여 Hive 작업을 실행하고 클러스터를 삭제합니다. 이 자습서를 마치면 클러스터 만들기, 작업 실행 및 클러스터 삭제가 일정에 따라 수행되는 빅 데이터 작업을 실행하는 방법을 operationalize 알아봅니다.

이 자습서에서 다루는 작업은 다음과 같습니다.

  • Azure Storage 계정 만들기
  • Azure Data Factory 작업 이해
  • Azure Portal을 사용하여 데이터 팩터리 만들기
  • 연결된 서비스 만들기
  • 파이프라인 만들기
  • 파이프라인 트리거
  • 파이프라인 모니터링
  • 출력 확인

Azure 구독이 없는 경우, 시작하기 전에 무료 계정을 만드십시오.

필수 조건

  • 설치된 PowerShell Az 모듈 입니다.

  • Microsoft Entra 서비스 주체입니다. 서비스 주체를 만든 후에는 연결된 문서의 지침을 사용하여 애플리케이션 ID인증 키를 검색해야 합니다. 이 자습서의 뒷부분에서 이러한 값이 필요합니다. 또한 서비스 주체가 구독의 기여자 역할 또는 클러스터가 만들어진 리소스 그룹의 구성원인지 확인합니다. 필요한 값을 검색하고 올바른 역할을 할당하는 지침은 Microsoft Entra 서비스 주체 만들기를 참조하세요.

예비 Azure 개체 만들기

이 섹션에서는 주문형으로 만드는 HDInsight 클러스터에 사용할 다양한 개체를 만듭니다. 생성된 스토리지 계정에는 클러스터에서 실행되는 샘플 Apache Hive 작업을 시뮬레이션하는 데 사용하는 샘플 HiveQL 스크립트 partitionweblogs.hql가 포함됩니다.

이 섹션에서는 Azure PowerShell 스크립트를 사용하여 스토리지 계정을 만들고 스토리지 계정 내에서 필요한 파일을 복사합니다. 이 섹션의 Azure PowerShell 샘플 스크립트는 다음 작업을 수행합니다.

  1. Azure에 로그인합니다.
  2. Azure 리소스 그룹을 만듭니다.
  3. Azure Storage 계정을 만듭니다.
  4. 스토리지 계정에 Blob 컨테이너를 만듭니다.
  5. 샘플 HiveQL 스크립트(partitionweblogs.hql)를 Blob 컨테이너에 복사합니다. 샘플 스크립트는 이미 다른 공용 Blob 컨테이너에서 사용할 수 있습니다. 아래 PowerShell 스크립트는 이러한 파일의 복사본을 만든 Azure Storage 계정에 만듭니다.

스토리지 계정 만들기 및 파일 복사

중요합니다

스크립트에서 만들 Azure 리소스 그룹 및 Azure Storage 계정의 이름을 지정합니다. 스크립트에서 출력한 리소스 그룹 이름, 스토리지 계정 이름스토리지 계정 키를 적어 씁니다. 다음 섹션에서 필요합니다.

$resourceGroupName = "<Azure Resource Group Name>"
$storageAccountName = "<Azure Storage Account Name>"
$location = "East US"

$sourceStorageAccountName = "hditutorialdata"  
$sourceContainerName = "adfv2hiveactivity"

$destStorageAccountName = $storageAccountName
$destContainerName = "adfgetstarted" # don't change this value.

####################################
# Connect to Azure
####################################
#region - Connect to Azure subscription
Write-Host "`nConnecting to your Azure subscription ..." -ForegroundColor Green
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
    Connect-AzAccount
}

# If you have multiple subscriptions, set the one to use
# Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"

#endregion

####################################
# Create a resource group, storage, and container
####################################

#region - create Azure resources
Write-Host "`nCreating resource group, storage account and blob container ..." -ForegroundColor Green

New-AzResourceGroup `
    -Name $resourceGroupName `
    -Location $location

New-AzStorageAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $destStorageAccountName `
    -Kind StorageV2 `
    -Location $location `
    -SkuName Standard_LRS `
    -EnableHttpsTrafficOnly 1

$destStorageAccountKey = (Get-AzStorageAccountKey `
    -ResourceGroupName $resourceGroupName `
    -Name $destStorageAccountName)[0].Value

$sourceContext = New-AzStorageContext `
    -StorageAccountName $sourceStorageAccountName `
    -Anonymous

$destContext = New-AzStorageContext `
    -StorageAccountName $destStorageAccountName `
    -StorageAccountKey $destStorageAccountKey

New-AzStorageContainer `
    -Name $destContainerName `
    -Context $destContext
#endregion

####################################
# Copy files
####################################
#region - copy files
Write-Host "`nCopying files ..." -ForegroundColor Green

$blobs = Get-AzStorageBlob `
    -Context $sourceContext `
    -Container $sourceContainerName `
    -Blob "hivescripts\hivescript.hql"

$blobs|Start-AzStorageBlobCopy `
    -DestContext $destContext `
    -DestContainer $destContainerName `
    -DestBlob "hivescripts\partitionweblogs.hql"

Write-Host "`nCopied files ..." -ForegroundColor Green
Get-AzStorageBlob `
    -Context $destContext `
    -Container $destContainerName
#endregion

Write-host "`nYou will use the following values:" -ForegroundColor Green
write-host "`nResource group name: $resourceGroupName"
Write-host "Storage Account Name: $destStorageAccountName"
write-host "Storage Account Key: $destStorageAccountKey"

Write-host "`nScript completed" -ForegroundColor Green

스토리지 계정 확인

  1. Azure Portal에 로그온 합니다.
  2. 왼쪽에서 모든 서비스>일반>리소스 그룹으로 이동합니다.
  3. PowerShell 스크립트에서 만든 리소스 그룹 이름을 선택합니다. 나열된 리소스 그룹이 너무 많은 경우 필터를 사용합니다.
  4. 개요 보기에서 리소스 그룹을 다른 프로젝트와 공유하지 않는 한 하나의 리소스가 나열됩니다. 해당 리소스는 이전에 지정한 이름의 스토리지 계정입니다. 스토리지 계정 이름을 선택합니다.
  5. 컨테이너 타일 선택합니다.
  6. adfgetstarted 컨테이너를 선택합니다. 라는 hivescripts폴더가 표시됩니다.
  7. 폴더를 열고 샘플 스크립트 파일인 partitionweblogs.hql이 포함되어 있는지 확인합니다.

Azure Data Factory 작업 이해

Azure Data Factory 는 데이터의 이동 및 변환을 오케스트레이션하고 자동화합니다. Azure Data Factory는 HDInsight Hadoop 클러스터 Just-In-Time을 만들어 입력 데이터 조각을 처리하고 처리가 완료되면 클러스터를 삭제할 수 있습니다.

Azure Data Factory에서 데이터 팩터리에는 하나 이상의 데이터 파이프라인이 있을 수 있습니다. 데이터 파이프라인에는 하나 이상의 활동이 있습니다. 다음과 같은 두 가지 유형의 활동이 있습니다.

  • 데이터 이동 활동. 데이터 이동 활동을 사용하여 원본 데이터 저장소에서 대상 데이터 저장소로 데이터를 이동합니다.
  • 데이터 변환 활동. 데이터 변환 작업을 사용하여 데이터를 변환/처리합니다. HDInsight Hive 활동은 Data Factory에서 지원하는 변환 작업 중 하나입니다. 이 자습서에서는 Hive 변환 작업을 사용합니다.

이 문서에서는 주문형 HDInsight Hadoop 클러스터를 만들도록 Hive 작업을 구성합니다. 작업을 실행하여 데이터를 처리하는 경우 다음과 같은 작업이 수행됩니다.

  1. 조각을 처리할 수 있도록 즉시 HDInsight Hadoop 클러스터가 자동으로 생성됩니다.

  2. 입력 데이터는 클러스터에서 HiveQL 스크립트를 실행하여 처리됩니다. 이 자습서에서는 Hive 활동과 연결된 HiveQL 스크립트에서 다음 작업을 수행합니다.

    • 기존 테이블(hivesampletable)을 사용하여 다른 테이블 HiveSampleOut을 만듭니다.
    • HiveSampleOut 테이블을 원래 hivesampletable의 특정 열로만 채웁니다.
  3. HDInsight Hadoop 클러스터는 처리가 완료된 후 삭제되고 클러스터는 구성된 시간(timeToLive 설정)에 대해 유휴 상태입니다. 이 시간ToLive 유휴 시간에 다음 데이터 조각을 처리할 수 있는 경우 조각을 처리하는 데 동일한 클러스터가 사용됩니다.

데이터 팩터리 만들기

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

  2. 왼쪽 메뉴에서 + Create a resource>Data Factory로 > 이동합니다.

    포털의 Azure Data Factory.

  3. 새 데이터 팩터리 타일에 대해 다음 값을 입력하거나 선택합니다.

    재산 가치
    이름 데이터 팩터리의 이름을 입력합니다. 이 이름은 전역적으로 고유해야 합니다.
    버전 V2에 둡니다.
    Subscription Azure 구독을 선택합니다.
    리소스 그룹 PowerShell 스크립트를 사용하여 만든 리소스 그룹을 선택합니다.
    위치 위치는 이전에 리소스 그룹을 만드는 동안 지정한 위치로 자동으로 설정됩니다. 이 자습서에서는 위치가 미국 동부로 설정됩니다.
    GIT 사용 이 상자의 선택을 취소합니다.

    Azure Portal을 사용하여 Azure Data Factory를 만듭니다.

  4. 선택하고생성합니다. 데이터 팩터리를 만드는 데 2~4분이 걸릴 수 있습니다.

  5. 데이터 팩터리를 만들면 리소스로 이동 단추가 있는 배포 성공 알림이 표시됩니다. 리소스로 이동을 선택하여 Data Factory 기본 보기를 엽니다.

  6. 작성자 및 모니터를 선택하여 Azure Data Factory 작성 및 모니터링 포털을 시작합니다.

    Azure Data Factory 포털 개요.

연결된 서비스 만들기

이 섹션에서는 데이터 팩터리 내에서 두 개의 연결된 서비스를 작성합니다.

  • Azure Storage 계정을 데이터 팩터리에 연결하는 Azure Storage 연결된 서비스. 이 스토리지는 주문형 HDInsight 클러스터에서 사용됩니다. 클러스터에서 실행되는 Hive 스크립트도 포함됩니다.
  • 주문형 HDInsight 연결된 서비스. Azure Data Factory는 자동으로 HDInsight 클러스터를 만들고 Hive 스크립트를 실행합니다. 그런 다음 클러스터가 미리 구성된 시간 동안 유휴 상태를 유지하면 HDInsight 클러스터를 삭제합니다.

Azure Storage 연결된 서비스 만들기

  1. 시작 페이지의 왼쪽 창에서 작성자 아이콘을 선택합니다.

    Azure Data Factory 연결된 서비스를 만듭니다.

  2. 창의 왼쪽 아래 모서리에서 연결을 선택한 다음 +새로 만들기를 선택합니다.

    Azure Data Factory에서 연결을 만듭니다.

  3. 새 연결된 서비스 대화 상자에서 Azure Blob Storage를 선택한 다음, 계속을 선택합니다.

    Data Factory에 대한 Azure Storage 연결된 서비스를 만듭니다.

  4. 스토리지 연결된 서비스에 대해 다음 값을 제공합니다.

    재산 가치
    이름 HDIStorageLinkedService를 입력합니다.
    Azure 구독 드롭다운 목록에서 구독을 선택합니다.
    스토리지 계정 이름 PowerShell 스크립트의 일부로 만든 Azure Storage 계정을 선택합니다.

    연결 테스트를 선택하고 성공하면 만들기를 선택합니다.

    Azure Storage 연결된 서비스의 이름을 제공합니다.

주문형 HDInsight 연결된 서비스 만들기

  1. + 새로 만들기 단추를 다시 선택하여 또 하나의 연결된 서비스를 만듭니다.

  2. 새 연결된 서비스 창에서 컴퓨팅 탭을 선택합니다.

  3. Azure HDInsight를 선택한 다음 계속을 선택합니다.

    Azure Data Factory에 대한 HDInsight 연결된 서비스를 만듭니다.

  4. 새 연결된 서비스 창에서 다음 값을 입력하고 나머지는 기본값으로 둡니다.

    재산 가치
    이름 HDInsightLinkedService를 입력합니다.
    유형 주문형 HDInsight를 선택합니다.
    Azure Storage 연결된 서비스 HDIStorageLinkedService(을)를 선택합니다.
    클러스터 유형 hadoop 선택
    생존 시간 자동으로 삭제되기 전에 HDInsight 클러스터를 사용할 수 있는 기간을 제공합니다.
    서비스 주체 ID 필수 구성 요소의 일부로 만든 Microsoft Entra 서비스 주체의 애플리케이션 ID를 제공합니다.
    서비스 주체 키 Microsoft Entra 서비스 주체에 대한 인증 키를 제공합니다.
    클러스터 이름 접두사 데이터 팩터리에서 만든 모든 클러스터 유형에 접두사로 사용할 값을 제공합니다.
    Subscription 드롭다운 목록에서 구독을 선택합니다.
    리소스 그룹 선택 이전에 사용한 PowerShell 스크립트의 일부로 만든 리소스 그룹을 선택합니다.
    OS 유형/클러스터 SSH 사용자 이름 일반적으로 SSH 사용자 이름을 입력합니다 sshuser.
    OS 유형/클러스터 SSH 암호 SSH 사용자에 대한 암호 제공
    OS 유형/클러스터 사용자 이름 일반적으로 클러스터 사용자 이름을 입력합니다 admin.
    OS 유형/클러스터 암호 클러스터 사용자에 대한 암호를 제공합니다.

    그런 다음 만들기를 선택합니다.

    HDInsight 연결된 서비스에 대한 값을 제공합니다.

파이프라인 만들기

  1. + (더하기) 단추를 선택한 다음..., 파이프라인을 선택합니다.

    Azure Data Factory에서 파이프라인을 만듭니다.

  2. 활동 도구 상자에서 HDInsight를 확장하고 Hive 작업을 파이프라인 디자이너 화면으로 끕니다. 일반 탭에서 활동의 이름을 입력합니다.

    Data Factory 파이프라인에 활동을 추가합니다.

  3. Hive 작업이 선택되어 있는지 확인하고 HDI 클러스터 탭을 선택합니다. HDInsight 연결된 서비스 드롭다운 목록에서 HDInsight 에 대해 이전에 만든 연결된 서비스인 HDInsightLinkedService를 선택합니다.

    파이프라인에 대한 HDInsight 클러스터 세부 정보를 제공합니다.

  4. 스크립트 탭을 선택하고 다음 단계를 완료합니다.

    1. 스크립트 연결된 서비스의 경우 드롭다운 목록에서 HDIStorageLinkedService를 선택합니다. 이 값은 이전에 만든 스토리지 연결된 서비스입니다.

    2. 파일 경로의 경우 스토리지 찾아보기를 선택하고 샘플 Hive 스크립트를 사용할 수 있는 위치로 이동합니다. 이전에 PowerShell 스크립트를 실행한 경우 이 위치는 adfgetstarted/hivescripts/partitionweblogs.hql다음과 같습니다.

      파이프라인에 대한 Hive 스크립트 세부 정보를 제공합니다.

    3. 고급>매개 변수에서 .를 선택합니다Auto-fill from script. 이 옵션은 Hive 스크립트에서 런타임 시 값이 필요한 매개 변수를 찾습니다.

    4. 텍스트 상자에서 기존 폴더를 형식wasbs://adfgetstarted@<StorageAccount>.blob.core.windows.net/outputfolder/으로 추가합니다. 경로는 대/소문자를 구분합니다. 이 경로는 스크립트의 출력이 저장되는 위치입니다. wasbs 이제 스토리지 계정에 보안 전송이 기본적으로 사용하도록 설정되어 있으므로 스키마가 필요합니다.

      Hive 스크립트에 대한 매개 변수를 제공합니다.

  5. 유효성 검사를 선택하여 파이프라인의 유효성을 검사합니다. >>(오른쪽 화살표) 단추를 선택하여 유효성 검사 창을 닫습니다.

    Azure Data Factory 파이프라인의 유효성을 검사합니다.

  6. 마지막으로 모두 게시하기를 선택하여 Azure Data Factory에 아티팩트를 게시합니다.

    Azure Data Factory 파이프라인을 게시합니다.

파이프라인 트리거

  1. 디자이너 화면의 도구 모음에서트리거>지금 추가를 선택합니다.

    Azure Data Factory 파이프라인을 트리거합니다.

  2. 팝업 사이드바에서 확인을 선택합니다.

파이프라인 모니터링

  1. 왼쪽의 모니터 탭으로 전환합니다. 파이프라인 실행 목록에 파이프라인 실행이 표시됩니다. 상태 열 아래의 실행 상태를 확인합니다.

    Azure Data Factory 파이프라인을 모니터링합니다.

  2. 새로 고침을 선택하여 상태를 새로 고칩니다.

  3. 활동 실행 보기 아이콘을 선택하여 파이프라인과 연결된 활동 실행을 확인할 수도 있습니다. 아래 스크린샷에는 만든 파이프라인에 하나의 활동만 있기 때문에 하나의 활동 실행만 표시됩니다. 이전 보기로 다시 전환하려면 페이지 위쪽에 있는 파이프라인 을 선택합니다.

    Azure Data Factory 파이프라인 작업을 모니터링합니다.

출력 확인

  1. 출력을 확인하려면 Azure Portal에서 이 자습서에 사용한 스토리지 계정으로 이동합니다. 다음 폴더 또는 컨테이너가 표시됩니다.

    • 파이프라인의 일부로 실행된 Hive 스크립트의 출력을 포함하는 adfgerstarted/outputfolder 가 표시됩니다.

    • adfhdidatafactory-<linked-service-name>-<timestamp> 컨테이너가 표시됩니다. 이 컨테이너는 파이프라인 실행의 일부로 생성된 HDInsight 클러스터의 기본 스토리지 위치입니다.

    • Azure Data Factory 작업 로그가 있는 adfjobs 컨테이너가 표시됩니다.

      Azure Data Factory 파이프라인 출력을 확인합니다.

자원을 정리하세요

주문형 HDInsight 클러스터를 만들 때 HDInsight 클러스터를 명시적으로 삭제할 필요가 없습니다. 클러스터는 파이프라인을 만드는 동안 제공한 구성에 따라 삭제됩니다. 클러스터가 삭제된 후에도 클러스터와 연결된 스토리지 계정이 계속 존재합니다. 이 동작은 데이터를 그대로 유지할 수 있도록 설계되었습니다. 그러나 데이터를 유지하지 않으려면 만든 스토리지 계정을 삭제할 수 있습니다.

또는 이 자습서에서 만든 전체 리소스 그룹을 삭제할 수 있습니다. 이 프로세스는 만든 스토리지 계정 및 Azure Data Factory를 삭제합니다.

리소스 그룹 삭제

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

  2. 왼쪽 창에서 리소스 그룹을 선택합니다.

  3. PowerShell 스크립트에서 만든 리소스 그룹 이름을 선택합니다. 나열된 리소스 그룹이 너무 많은 경우 필터를 사용합니다. 리소스 그룹이 열립니다.

  4. 리소스 타일에서 다른 프로젝트와 리소스 그룹을 공유하지 않는 한 기본 스토리지 계정 및 데이터 팩터리를 나열해야 합니다.

  5. 리소스 그룹 삭제를 선택합니다. 이렇게 하면 스토리지 계정 및 스토리지 계정에 저장된 데이터가 삭제됩니다.

    Azure Portal에서 리소스 그룹을 삭제합니다.

  6. 리소스 그룹 이름을 입력하여 삭제를 확인한 다음 삭제를 선택합니다.

다음 단계

이 문서에서는 Azure Data Factory를 사용하여 주문형 HDInsight 클러스터를 만들고 Apache Hive 작업을 실행하는 방법을 알아보았습니다. 다음 문서로 이동하여 사용자 지정 구성을 사용하여 HDInsight 클러스터를 만드는 방법을 알아봅니다.