Skapa HDInsight-kluster med Azure Data Lake Storage Gen1 som standardlagring med hjälp av PowerShell
Lär dig hur du använder Azure PowerShell för att konfigurera Azure HDInsight-kluster med Azure Data Lake Storage Gen1 som standardlagring. Anvisningar om hur du skapar ett HDInsight-kluster med Data Lake Storage Gen1 som ytterligare lagringsutrymme finns i Skapa ett HDInsight-kluster med Data Lake Storage Gen1 som ytterligare lagringsutrymme.
Här följer några viktiga saker att tänka på när du använder HDInsight med Data Lake Storage Gen1:
Alternativet att skapa HDInsight-kluster med åtkomst till Data Lake Storage Gen1 som standardlagring är tillgängligt för HDInsight version 3.5 och 3.6.
Alternativet att skapa HDInsight-kluster med åtkomst till Data Lake Storage Gen1 eftersom standardlagring inte är tillgängligt för HDInsight Premium-kluster.
Om du vill konfigurera HDInsight så att det fungerar med Data Lake Storage Gen1 med hjälp av PowerShell följer du anvisningarna i de kommande fem avsnitten.
Förutsättningar
Anteckning
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Innan du påbörjar den här självstudien måste du se till att du uppfyller följande krav:
En Azure-prenumeration: Gå till Skaffa en kostnadsfri utvärderingsversion av Azure.
Azure PowerShell 1.0 eller senare: Se Installera och konfigurera PowerShell.
Windows Software Development Kit (SDK): Om du vill installera Windows SDK går du till Nedladdningar och verktyg för Windows 10. SDK:et används för att skapa ett säkerhetscertifikat.
Microsoft Entra tjänstens huvudnamn: I den här självstudien beskrivs hur du skapar ett huvudnamn för tjänsten i Microsoft Entra ID. Men om du vill skapa ett huvudnamn för tjänsten måste du vara Microsoft Entra administratör. Om du är administratör kan du hoppa över det här kravet och fortsätta med självstudien.
Anteckning
Du kan bara skapa ett huvudnamn för tjänsten om du är Microsoft Entra administratör. Din Microsoft Entra-administratör måste skapa ett huvudnamn för tjänsten innan du kan skapa ett HDInsight-kluster med Data Lake Storage Gen1. Tjänstens huvudnamn måste skapas med ett certifikat enligt beskrivningen i Skapa ett huvudnamn för tjänsten med certifikat.
Skapa ett Azure Data Lake Storage Gen1-konto
Så här skapar du ett Data Lake Storage Gen1 konto:
Öppna ett PowerShell-fönster från skrivbordet och ange sedan kodfragmenten nedan. När du uppmanas att logga in loggar du in som en av prenumerationsadministratörerna eller ägarna.
# 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"
Anteckning
Om du registrerar Data Lake Storage Gen1 resursprovider och får ett fel som liknar
Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid
kanske din prenumeration inte har godkänts för Data Lake Storage Gen1. Om du vill aktivera din Azure-prenumeration för Data Lake Storage Gen1 följer du anvisningarna i Kom igång med Azure Data Lake Storage Gen1 med hjälp av Azure Portal.Ett Data Lake Storage Gen1-konto är associerat med en Azure-resursgrupp. Börja med att skapa en resursgrupp.
$resourceGroupName = "<your new resource group name>" New-AzResourceGroup -Name $resourceGroupName -Location "East US 2"
Utdata bör ser ut så här:
ResourceGroupName : hdiadlgrp Location : eastus2 ProvisioningState : Succeeded Tags : ResourceId : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
Skapa ett Data Lake Storage Gen1 konto. Det kontonamn som du anger får endast innehålla gemener och siffror.
$dataLakeStorageGen1Name = "<your new Data Lake Storage Gen1 name>" New-AzDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $dataLakeStorageGen1Name -Location "East US 2"
Du bör se utdata som liknar följande:
... 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 : {}
Om du använder Data Lake Storage Gen1 som standardlagring måste du ange en rotsökväg som de klusterspecifika filerna kopieras till när klustret skapas. Om du vill skapa en rotsökväg, som är /clusters/hdiadlcluster i kodfragmentet, använder du följande cmdletar:
$myrootdir = "/" New-AzDataLakeStoreItem -Folder -AccountName $dataLakeStorageGen1Name -Path $myrootdir/clusters/hdiadlcluster
Konfigurera autentisering för rollbaserad åtkomst till Data Lake Storage Gen1
Varje Azure-prenumeration är associerad med en Microsoft Entra entitet. Användare och tjänster som har åtkomst till prenumerationsresurser med hjälp av Azure Portal eller Azure Resource Manager-API:et måste först autentisera med Microsoft Entra ID. Åtkomst beviljas till Azure-prenumerationer och -tjänster genom att tilldela dem lämplig roll för en Azure-resurs. För tjänster identifierar tjänstens huvudnamn tjänsten i Microsoft Entra ID.
Det här avsnittet visar hur du beviljar en programtjänst, till exempel HDInsight, åtkomst till en Azure-resurs (det Data Lake Storage Gen1 konto som du skapade tidigare). Det gör du genom att skapa ett huvudnamn för tjänsten för programmet och tilldela roller till det via PowerShell.
Om du vill konfigurera Active Directory-autentisering för Data Lake Storage Gen1 utför du uppgifterna i följande två avsnitt.
Skapa ett självsignerat certifikat
Kontrollera att du har Windows SDK installerat innan du fortsätter med stegen i det här avsnittet. Du måste också ha skapat en katalog, till exempel C:\mycertdir, där du skapar certifikatet.
I PowerShell-fönstret går du till den plats där du installerade Windows SDK (vanligtvis C:\Program Files (x86)\Windows Kits\10\bin\x86) och använder verktyget MakeCert för att skapa ett självsignerat certifikat och en privat nyckel. Använd följande kommandon:
$certificateFileDir = "<my certificate directory>" cd $certificateFileDir makecert -sv mykey.pvk -n "cn=HDI-ADL-SP" CertFile.cer -r -len 2048
Du uppmanas att ange lösenordet för den privata nyckeln. När kommandot har körts bör du se CertFile.cer och mykey.pvk i certifikatkatalogen som du har angett.
Använd Pvk2Pfx-verktyget för att konvertera .pvk- och .cer-filer som MakeCert skapade till en .pfx-fil. Kör följande kommando:
pvk2pfx -pvk mykey.pvk -spc CertFile.cer -pfx CertFile.pfx -po <password>
När du uppmanas att göra det anger du lösenordet för den privata nyckeln som du angav tidigare. Värdet som du anger för parametern -po är lösenordet som är associerat med .pfx-filen. När kommandot har slutförts bör du även se en CertFile.pfx i certifikatkatalogen som du har angett.
Skapa en Microsoft Entra ID och ett huvudnamn för tjänsten
I det här avsnittet skapar du ett huvudnamn för tjänsten för ett Microsoft Entra program, tilldelar en roll till tjänstens huvudnamn och autentiserar som tjänstens huvudnamn genom att tillhandahålla ett certifikat. Kör följande kommandon för att skapa ett program i Microsoft Entra ID:
Klistra in följande cmdletar i PowerShell-konsolfönstret. Kontrollera att värdet som du anger för egenskapen -DisplayName är unikt. Värdena för -HomePage och -IdentiferUris är platshållarvärden och verifieras inte.
$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
Skapa ett huvudnamn för tjänsten med hjälp av program-ID:t.
$servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor $objectId = $servicePrincipal.Id
Ge tjänstens huvudnamn åtkomst till Data Lake Storage Gen1 roten och alla mappar i rotsökvägen som du angav tidigare. Använd följande cmdletar:
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
Skapa ett HDInsight Linux-kluster med Data Lake Storage Gen1 som standardlagring
I det här avsnittet skapar du ett HDInsight Hadoop Linux-kluster med Data Lake Storage Gen1 som standardlagring. För den här versionen måste HDInsight-klustret och Data Lake Storage Gen1 finnas på samma plats.
Hämta prenumerationens klientorganisations-ID och lagra det för senare användning.
$tenantID = (Get-AzContext).Tenant.TenantId
Skapa HDInsight-klustret med hjälp av följande cmdletar:
# 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
När cmdleten har slutförts bör du se utdata som visar klusterinformationen.
Kör testjobb i HDInsight-klustret för att använda Data Lake Storage Gen1
När du har konfigurerat ett HDInsight-kluster kan du köra testjobb på det för att säkerställa att det kan komma åt Data Lake Storage Gen1. Det gör du genom att köra ett Hive-exempeljobb för att skapa en tabell som använder exempeldata som redan är tillgängliga i Data Lake Storage Gen1 i <klusterroten>/exempel/data/sample.log.
I det här avsnittet skapar du en Secure Shell-anslutning (SSH) till HDInsight Linux-klustret som du skapade och sedan kör du en Hive-exempelfråga.
- Om du använder en Windows-klient för att skapa en SSH-anslutning till klustret läser du Använda SSH med Linux-baserad Hadoop på HDInsight från Windows.
- Om du använder en Linux-klient för att skapa en SSH-anslutning till klustret läser du Använda SSH med Linux-baserade Hadoop på HDInsight från Linux.
När du har upprättat anslutningen startar du Hive-kommandoradsgränssnittet (CLI) med följande kommando:
hive
Använd CLI för att ange följande instruktioner för att skapa en ny tabell med namnet vehicles med hjälp av exempeldata i 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;
Du bör se frågeutdata i SSH-konsolen.
Anteckning
Sökvägen till exempeldata i föregående CREATE TABLE-kommando är adl:///example/data/
, där adl:///
är klusterroten. Efter exemplet med klusterroten som anges i den här självstudien är adl://hdiadlstore.azuredatalakestore.net/clusters/hdiadlcluster
kommandot . Du kan antingen använda det kortare alternativet eller ange den fullständiga sökvägen till klusterroten.
Komma åt Data Lake Storage Gen1 med hjälp av HDFS-kommandon
När du har konfigurerat HDInsight-klustret för att använda Data Lake Storage Gen1 kan du använda HdFS-kommandokommandon (Hadoop Distributed File System) för att komma åt arkivet.
I det här avsnittet skapar du en SSH-anslutning till HDInsight Linux-klustret som du skapade och sedan kör du HDFS-kommandona.
- Om du använder en Windows-klient för att skapa en SSH-anslutning till klustret läser du Använda SSH med Linux-baserad Hadoop på HDInsight från Windows.
- Om du använder en Linux-klient för att skapa en SSH-anslutning till klustret läser du Använda SSH med Linux-baserade Hadoop på HDInsight från Linux.
När du har upprättat anslutningen listar du filerna i Data Lake Storage Gen1 med hjälp av följande kommando för HDFS-filsystem.
hdfs dfs -ls adl:///
Du kan också använda hdfs dfs -put
kommandot för att ladda upp några filer till Data Lake Storage Gen1 och sedan använda hdfs dfs -ls
för att kontrollera om filerna har laddats upp.