Udostępnij za pośrednictwem


Tworzenie klastrów usługi HDInsight za pomocą usługi Azure Data Lake Storage Gen1 jako domyślnego magazynu przy użyciu programu PowerShell

Dowiedz się, jak używać programu Azure PowerShell do konfigurowania klastrów usługi Azure HDInsight za pomocą usługi Azure Data Lake Storage Gen1 jako magazynu domyślnego. Aby uzyskać instrukcje dotyczące tworzenia klastra usługi HDInsight z usługą Data Lake Storage Gen1 jako dodatkowego magazynu, zobacz Tworzenie klastra usługi HDInsight przy użyciu usługi Data Lake Storage Gen1 jako dodatkowego magazynu.

Poniżej przedstawiono kilka ważnych zagadnień dotyczących używania usługi HDInsight z usługą Data Lake Storage Gen1:

  • Opcja tworzenia klastrów usługi HDInsight z dostępem do usługi Data Lake Storage Gen1 jako domyślnego magazynu jest dostępna dla usługi HDInsight w wersji 3.5 i 3.6.

  • Opcja tworzenia klastrów usługi HDInsight z dostępem do usługi Data Lake Storage Gen1 jako magazyn domyślny nie jest dostępna dla klastrów usługi HDInsight Premium.

Aby skonfigurować usługę HDInsight do pracy z usługą Data Lake Storage Gen1 przy użyciu programu PowerShell, postępuj zgodnie z instrukcjami w kolejnych pięciu sekcjach.

Wymagania wstępne

Uwaga

Zalecamy korzystanie z modułu Azure Az programu PowerShell do interakcji z platformą Azure. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Przed rozpoczęciem tego samouczka upewnij się, że spełnisz następujące wymagania:

  • Subskrypcja platformy Azure: przejdź do sekcji Uzyskiwanie bezpłatnej wersji próbnej platformy Azure.

  • Program Azure PowerShell w wersji 1.0 lub nowszej: zobacz Jak zainstalować i skonfigurować program PowerShell.

  • Windows Software Development Kit (SDK): aby zainstalować zestaw Windows SDK, przejdź do pozycji Pliki do pobrania i narzędzia dla systemu Windows 10. Zestaw SDK służy do tworzenia certyfikatu zabezpieczeń.

  • Główny obiekt usługi Microsoft Entra: w tym samouczku opisano sposób tworzenia głównego obiektu usługi w Microsoft Entra ID. Jednak aby utworzyć główną jednostkę usługi, musisz być administratorem Microsoft Entra. Jeśli jesteś administratorem, możesz pominąć to wymaganie wstępne i przejść do samouczka.

    Uwaga

    Jednostkę usługi można utworzyć tylko wtedy, gdy jesteś administratorem firmy Microsoft Entra. Administrator firmy Microsoft Entra musi utworzyć jednostkę usługi przed utworzeniem klastra usługi HDInsight za pomocą usługi Data Lake Storage Gen1. Jednostka usługi musi zostać utworzona przy użyciu certyfikatu, zgodnie z opisem w temacie Tworzenie jednostki usługi z certyfikatem.

Tworzenie konta usługi Azure Data Lake Storage Gen1

Aby utworzyć konto usługi Data Lake Storage Gen1, wykonaj następujące czynności:

  1. Na pulpicie otwórz okno programu PowerShell, a następnie wprowadź poniższe fragmenty kodu. Po wyświetleniu monitu o zalogowanie się zaloguj się jako jeden z administratorów subskrypcji lub właścicieli.

    # Sign in to your Azure account
    Connect-AzAccount
    
    # List all the subscriptions associated to your account
    Get-AzSubscription
    
    # Select a subscription
    Set-AzContext -SubscriptionId <subscription ID>
    
    # Register for Data Lake Storage Gen1
    Register-AzResourceProvider -ProviderNamespace "Microsoft.DataLakeStore"
    

    Uwaga

    Jeśli zarejestrujesz dostawcę zasobów usługi Data Lake Storage Gen1 i wystąpi błąd podobny do Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid, twoja subskrypcja może nie zostać zatwierdzona dla usługi Data Lake Storage Gen1. Aby włączyć subskrypcję platformy Azure dla usługi Data Lake Storage Gen1, postępuj zgodnie z instrukcjami w temacie Rozpoczynanie pracy z usługą Azure Data Lake Storage Gen1 przy użyciu witryny Azure Portal.

  2. Konto usługi Data Lake Storage Gen1 jest skojarzone z grupą zasobów platformy Azure. Zacznij od utworzenia grupy zasobów.

    $resourceGroupName = "<your new resource group name>"
    New-AzResourceGroup -Name $resourceGroupName -Location "East US 2"
    

    Powinny zostać wyświetlone dane wyjściowe podobne do następujących:

    ResourceGroupName : hdiadlgrp
    Location          : eastus2
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
    
  3. Utwórz konto usługi Data Lake Storage Gen1. Określona nazwa konta musi zawierać tylko małe litery i cyfry.

    $dataLakeStorageGen1Name = "<your new Data Lake Storage Gen1 name>"
    New-AzDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $dataLakeStorageGen1Name -Location "East US 2"
    

    Powinny pojawić się dane wyjściowe podobne do następujących:

    ...
    ProvisioningState           : Succeeded
    State                       : Active
    CreationTime                : 5/5/2017 10:53:56 PM
    EncryptionState             : Enabled
    ...
    LastModifiedTime            : 5/5/2017 10:53:56 PM
    Endpoint                    : hdiadlstore.azuredatalakestore.net
    DefaultGroup                :
    Id                          : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp/providers/Microsoft.DataLakeStore/accounts/hdiadlstore
    Name                        : hdiadlstore
    Type                        : Microsoft.DataLakeStore/accounts
    Location                    : East US 2
    Tags                        : {}
    
  4. Użycie usługi Data Lake Storage Gen1 jako magazynu domyślnego wymaga określenia ścieżki głównej, do której pliki specyficzne dla klastra są kopiowane podczas tworzenia klastra. Aby utworzyć ścieżkę główną , czyli /clusters/hdiadlcluster we fragmencie kodu, użyj następujących poleceń cmdlet:

    $myrootdir = "/"
    New-AzDataLakeStoreItem -Folder -AccountName $dataLakeStorageGen1Name -Path $myrootdir/clusters/hdiadlcluster
    

Konfigurowanie uwierzytelniania na potrzeby dostępu opartego na rolach do usługi Data Lake Storage Gen1

Każda subskrypcja platformy Azure jest skojarzona z jednostką Entra firmy Microsoft. Użytkownicy i usługi, które uzyskują dostęp do zasobów subskrypcji przy użyciu witryny Azure Portal lub interfejsu API usługi Azure Resource Manager, muszą najpierw uwierzytelniać się przy użyciu identyfikatora Entra firmy Microsoft. Dostęp jest udzielany subskrypcjom i usługom platformy Azure, przypisując im odpowiednią rolę w zasobie platformy Azure. W przypadku usług jednostka usługi identyfikuje usługę w identyfikatorze Entra firmy Microsoft.

W tej sekcji pokazano, jak udzielić usłudze aplikacji, takiej jak HDInsight, dostępu do zasobu platformy Azure (utworzonego wcześniej konta usługi Data Lake Storage Gen1). W tym celu należy utworzyć jednostkę usługi dla aplikacji i przypisać do niej role za pomocą programu PowerShell.

Aby skonfigurować uwierzytelnianie usługi Active Directory dla usługi Data Lake Storage Gen1, wykonaj zadania opisane w poniższych dwóch sekcjach.

Tworzenie certyfikatu z podpisem własnym

Przed wykonaniem kroków opisanych w tej sekcji upewnij się, że masz zainstalowany zestaw Windows SDK . Musisz również utworzyć katalog, taki jak C:\mycertdir, w którym tworzysz certyfikat.

  1. W oknie programu PowerShell przejdź do lokalizacji, w której zainstalowano zestaw Windows SDK (zazwyczaj C:\Program Files (x86)\Windows Kits\10\bin\x86) i użyj narzędzia MakeCert , aby utworzyć certyfikat z podpisem własnym i klucz prywatny. Użyj następujących poleceń:

    $certificateFileDir = "<my certificate directory>"
    cd $certificateFileDir
    
    makecert -sv mykey.pvk -n "cn=HDI-ADL-SP" CertFile.cer -r -len 2048
    

    Zostanie wyświetlony monit o wprowadzenie hasła klucza prywatnego. Po pomyślnym wykonaniu polecenia powinny zostać wyświetlone CertFile.cer i mykey.pvk w określonym katalogu certyfikatów.

  2. Użyj narzędzia Pvk2Pfx, aby przekonwertować pliki pvk i .cer utworzone przez aplikację MakeCert na plik pfx. Uruchom następujące polecenie:

    pvk2pfx -pvk mykey.pvk -spc CertFile.cer -pfx CertFile.pfx -po <password>
    

    Po wyświetleniu monitu wprowadź podane wcześniej hasło klucza prywatnego. Wartość określona dla parametru -po to hasło skojarzone z plikiem pfx. Po pomyślnym ukończeniu polecenia w określonym katalogu certyfikatów powinien zostać również wyświetlony plik CertFile.pfx .

Utwórz Microsoft Entra ID i nazwę główną usługi

W tej sekcji utworzysz jednostkę usługi dla aplikacji Microsoft Entra, przypiszesz jej rolę i uwierzytelnisz się jako jednostka usługi, podając certyfikat. Aby utworzyć aplikację w usłudze Microsoft Entra ID, uruchom następujące polecenia:

  1. Wklej następujące polecenia cmdlet w oknie konsoli programu PowerShell. Upewnij się, że wartość określona dla właściwości -DisplayName jest unikatowa. Wartości -HomePage i -IdentiferUris są wartościami zastępczymi i nie są weryfikowane.

    $certificateFilePath = "$certificateFileDir\CertFile.pfx"
    
    $password = Read-Host -Prompt "Enter the password" # This is the password you specified for the .pfx file
    
    $certificatePFX = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certificateFilePath, $password)
    
    $rawCertificateData = $certificatePFX.GetRawCertData()
    
    $credential = [System.Convert]::ToBase64String($rawCertificateData)
    
    $application = New-AzADApplication `
        -DisplayName "HDIADL" `
        -HomePage "https://contoso.com" `
        -IdentifierUris "https://contoso.com" `
        -CertValue $credential  `
        -StartDate $certificatePFX.NotBefore  `
        -EndDate $certificatePFX.NotAfter
    
    $applicationId = $application.ApplicationId
    
  2. Utwórz jednostkę usługi przy użyciu identyfikatora aplikacji.

    $servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor
    
    $objectId = $servicePrincipal.Id
    
  3. Udziel jednostce usługi dostępu do katalogu głównego usługi Data Lake Storage Gen1 i wszystkich folderów w określonej wcześniej ścieżce głównej. Użyj następujących poleceń cmdlet:

    Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path / -AceType User -Id $objectId -Permissions All
    Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path /clusters -AceType User -Id $objectId -Permissions All
    Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path /clusters/hdiadlcluster -AceType User -Id $objectId -Permissions All
    

Tworzenie klastra usługi HDInsight z systemem Linux przy użyciu usługi Data Lake Storage Gen1 jako magazynu domyślnego

W tej sekcji utworzysz klaster usługi HDInsight Hadoop Linux z usługą Data Lake Storage Gen1 jako magazyn domyślny. W tej wersji klaster usługi HDInsight i usługa Data Lake Storage Gen1 muszą znajdować się w tej samej lokalizacji.

  1. Pobierz identyfikator dzierżawy subskrypcji i zapisz go, aby móc użyć później.

    $tenantID = (Get-AzContext).Tenant.TenantId
    
  2. Utwórz klaster usługi HDInsight przy użyciu następujących poleceń cmdlet:

    # Set these variables
    
    $location = "East US 2"
    $storageAccountName = $dataLakeStorageGen1Name    # Data Lake Storage Gen1 account name
        $storageRootPath = "<Storage root path you specified earlier>"     # e.g. /clusters/hdiadlcluster
        $clusterName = "<unique cluster name>"
    $clusterNodes = <ClusterSizeInNodes>            # The number of nodes in the HDInsight cluster
    $httpCredentials = Get-Credential
    $sshCredentials = Get-Credential
    
    New-AzHDInsightCluster `
           -ClusterType Hadoop `
           -OSType Linux `
           -ClusterSizeInNodes $clusterNodes `
           -ResourceGroupName $resourceGroupName `
           -ClusterName $clusterName `
           -HttpCredential $httpCredentials `
           -Location $location `
           -DefaultStorageAccountType AzureDataLakeStore `
           -DefaultStorageAccountName "$storageAccountName.azuredatalakestore.net" `
           -DefaultStorageRootPath $storageRootPath `
           -Version "3.6" `
           -SshCredential $sshCredentials `
           -AadTenantId $tenantId `
           -ObjectId $objectId `
           -CertificateFilePath $certificateFilePath `
           -CertificatePassword $password
    

    Po pomyślnym ukończeniu polecenia cmdlet powinny zostać wyświetlone dane wyjściowe zawierające szczegóły klastra.

Uruchamianie zadań testowych w klastrze usługi HDInsight w celu korzystania z usługi Data Lake Storage Gen1

Po skonfigurowaniu klastra usługi HDInsight można uruchamiać na nim zadania testowe, aby mieć pewność, że będzie on mógł uzyskać dostęp do usługi Data Lake Storage Gen1. W tym celu uruchom przykładowe zadanie hive, aby utworzyć tabelę, która używa przykładowych danych, które są już dostępne w usłudze Data Lake Storage Gen1 w katalogu <głównym>/przykładowym/danych/sample.log.

W tej sekcji utworzysz połączenie protokołu Secure Shell (SSH) z utworzonym klastrem usługi HDInsight Linux, a następnie uruchomisz przykładowe zapytanie programu Hive.

  1. Po nawiązaniu połączenia uruchom interfejs wiersza polecenia programu Hive przy użyciu następującego polecenia:

    hive
    
  2. Użyj interfejsu wiersza polecenia, aby wprowadzić następujące instrukcje, aby utworzyć nową tabelę o nazwie vehicles przy użyciu przykładowych danych w usłudze Data Lake Storage Gen1:

    DROP TABLE log4jLogs;
        CREATE EXTERNAL TABLE log4jLogs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string)
        ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
        STORED AS TEXTFILE LOCATION 'adl:///example/data/';
        SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;
    

Dane wyjściowe zapytania powinny być widoczne w konsoli SSH.

Uwaga

Ścieżka do przykładowych danych w poprzednim poleceniu CREATE TABLE to adl:///example/data/, gdzie adl:/// jest głównym katalogiem klastra. Wzorem głównego katalogu klastra, określonego w tym samouczku, poleceniem jest adl://hdiadlstore.azuredatalakestore.net/clusters/hdiadlcluster. Możesz użyć krótszej alternatywy lub podać pełną ścieżkę do katalogu głównego klastra.

Uzyskiwanie dostępu do usługi Data Lake Storage Gen1 przy użyciu poleceń systemu plików HDFS

Po skonfigurowaniu klastra HDInsight do korzystania z usługi Data Lake Storage Gen1 można użyć poleceń powłoki systemu plików Hadoop Distributed File System (HDFS) w celu uzyskania dostępu do magazynu.

W tej sekcji utworzysz połączenie SSH z utworzonym klastrem systemu Linux usługi HDInsight, a następnie uruchomisz polecenia hdFS.

Po nawiązaniu połączenia wyświetl listę plików w usłudze Data Lake Storage Gen1 przy użyciu następującego polecenia systemu plików HDFS.

hdfs dfs -ls adl:///

Możesz również użyć hdfs dfs -put polecenia , aby przekazać niektóre pliki do usługi Data Lake Storage Gen1, a następnie użyć polecenia hdfs dfs -ls , aby sprawdzić, czy pliki zostały pomyślnie przekazane.

Zobacz też