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

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

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

  • Opcja tworzenia klastrów usługi HDInsight z dostępem do Data Lake Storage Gen1, ponieważ magazyn domyślny jest dostępny dla usługi HDInsight w wersji 3.5 i 3.6.

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

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

Wymagania wstępne

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. 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.

  • 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 Windows 10. Zestaw SDK służy do tworzenia certyfikatu zabezpieczeń.

  • Microsoft Entra jednostka usługi: w tym samouczku opisano sposób tworzenia jednostki usługi w Tożsamość Microsoft Entra. Jednak aby utworzyć 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 Microsoft Entra. Administrator Microsoft Entra musi utworzyć jednostkę usługi, zanim będzie można utworzyć klaster usługi HDInsight z 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 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 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 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 Data Lake Storage Gen1. Aby włączyć subskrypcję platformy Azure dla Data Lake Storage Gen1, postępuj zgodnie z instrukcjami w temacie Wprowadzenie do usługi Azure Data Lake Storage Gen1 przy użyciu Azure Portal.

  2. Konto 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 pojawić się następujące dane wyjściowe:

    ResourceGroupName : hdiadlgrp
    Location          : eastus2
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
    
  3. Utwórz konto 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 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ą, która jest /clusters/hdiadlcluster w 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 Data Lake Storage Gen1

Każda subskrypcja platformy Azure jest skojarzona z jednostką Microsoft Entra. Użytkownicy i usługi, które uzyskują dostęp do zasobów subskrypcji przy użyciu Azure Portal lub interfejsu API usługi Azure Resource Manager, muszą najpierw uwierzytelniać się przy użyciu Tożsamość Microsoft Entra. Dostęp jest przyznawany subskrypcjom i usługom platformy Azure przez przypisanie im odpowiedniej roli w zasobie platformy Azure. W przypadku usług jednostka usługi identyfikuje usługę w Tożsamość Microsoft Entra.

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

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

Tworzenie certyfikatu z podpisem własnym

Przed kontynuowaniem czynności opisanych w tej sekcji upewnij się, że masz zainstalowany zestaw Windows SDK . Musisz również utworzyć katalog, taki jak C:\mycertdir, w którym jest tworzony 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 do pliku 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 jest hasłem skojarzonym z plikiem pfx. Po pomyślnym zakończeniu polecenia w określonym katalogu certyfikatów powinien zostać również wyświetlony plik CertFile.pfx .

Tworzenie Tożsamość Microsoft Entra i jednostki usługi

W tej sekcji utworzysz jednostkę usługi dla aplikacji Microsoft Entra, przypiszesz rolę do jednostki usługi i uwierzytelnisz się jako jednostka usługi, podając certyfikat. Aby utworzyć aplikację w Tożsamość Microsoft Entra, 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 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 Data Lake Storage Gen1 jako magazynu domyślnego

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

  1. Pobierz identyfikator dzierżawy subskrypcji i zapisz go w celu późniejszego użycia.

    $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 używania Data Lake Storage Gen1

Po skonfigurowaniu klastra usługi HDInsight można uruchamiać na nim zadania testowe, aby upewnić się, że może uzyskiwać dostęp do Data Lake Storage Gen1. W tym celu uruchom przykładowe zadanie hive, aby utworzyć tabelę korzystającą z przykładowych danych, które są już dostępne w Data Lake Storage Gen1 w <katalogu głównym>/przykładowym/danych/sample.log klastra.

W tej sekcji utworzysz połączenie protokołu Secure Shell (SSH) z utworzonym klastrem usługi HDInsight z systemem Linux, a następnie uruchomisz przykładowe zapytanie 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 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;
    

Powinny zostać wyświetlone dane wyjściowe zapytania w konsoli SSH.

Uwaga

Ścieżka do przykładowych danych w poprzednim poleceniu CREATE TABLE to adl:///example/data/, gdzie adl:/// jest katalogem głównym klastra. Zgodnie z przykładem katalogu głównego klastra określonego w tym samouczku polecenie to 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 Data Lake Storage Gen1 przy użyciu poleceń systemu plików HDFS

Po skonfigurowaniu klastra usługi HDInsight do używania Data Lake Storage Gen1 można użyć poleceń powłoki rozproszonego systemu plików Hadoop (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 systemu plików HDFS.

Po nawiązaniu połączenia wyświetl listę plików w 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 Data Lake Storage Gen1, a następnie użyć polecenia hdfs dfs -ls , aby sprawdzić, czy pliki zostały pomyślnie przekazane.

Zobacz też