Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Meer informatie over het gebruik van Azure PowerShell voor het configureren van een HDInsight-cluster met Azure Data Lake Storage Gen1 als extra opslag. Zie Een HDInsight-cluster maken met Data Lake Storage Gen1 als standaardopslag voor instructies voor het maken van een HDInsight-cluster met Data Lake Storage Gen1 als standaardopslag.
Notitie
Als u Data Lake Storage Gen1 gaat gebruiken als extra opslag voor HDInsight-cluster, raden we u ten zeerste aan dit te doen terwijl u het cluster maakt, zoals beschreven in dit artikel. Het toevoegen van Data Lake Storage Gen1 als extra opslag aan een bestaand HDInsight-cluster is een ingewikkeld proces en gevoelig voor fouten.
Voor ondersteunde clustertypen kan Data Lake Storage Gen1 worden gebruikt als standaardopslag of extra opslagaccount. Wanneer Data Lake Storage Gen1 wordt gebruikt als extra opslag, wordt het standaardopslagaccount voor de clusters nog steeds Azure Blob Storage (WASB) en de clustergerelateerde bestanden (zoals logboeken, enzovoort) nog steeds naar de standaardopslag geschreven, terwijl de gegevens die u wilt verwerken, kunnen worden opgeslagen in een Data Lake Storage Gen1. Het gebruik van Data Lake Storage Gen1 als extra opslagaccount heeft geen invloed op de prestaties of de mogelijkheid om vanuit het cluster naar de opslag te lezen/schrijven.
Data Lake Storage Gen1 gebruiken voor HDInsight-clusteropslag
Hier volgen enkele belangrijke overwegingen voor het gebruik van HDInsight met Data Lake Storage Gen1:
- Optie voor het maken van HDInsight-clusters met toegang tot Data Lake Storage Gen1, omdat er extra opslag beschikbaar is voor HDInsight-versies 3.2, 3.4, 3.5 en 3.6.
Het configureren van HDInsight voor gebruik met Data Lake Storage Gen1 met behulp van PowerShell omvat de volgende stappen:
- Een Data Lake Storage Gen1-account maken
- Verificatie instellen voor op rollen gebaseerde toegang tot Data Lake Storage Gen1
- HDInsight-cluster maken met verificatie voor Data Lake Storage Gen1
- Een testtaak uitvoeren op het cluster
Benodigdheden
Notitie
U wordt aangeraden de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Zie Azure PowerShell migreren van AzureRM naar Az voor meer informatie over het migreren naar de Az PowerShell-module.
Voordat u met deze zelfstudie begint, moet u het volgende hebben of hebben gedaan:
Een Azure-abonnement. Zie Gratis proefversie van Azure downloaden.
Azure PowerShell 1.0 of hoger. Zie Hoe u Azure PowerShell installeert en configureert.
Windows SDK. U kunt deze hier installeren. U gebruikt dit om een beveiligingscertificaat te maken.
Microsoft Entra-service-principal. Stappen in deze handleiding bevatten instructies voor het aanmaken van een service-principal in Microsoft Entra ID. U moet echter een Microsoft Entra-beheerder zijn om een service-principal te kunnen maken. Als u een Microsoft Entra-beheerder bent, kunt u deze vereiste overslaan en doorgaan met de zelfstudie.
Als u geen Microsoft Entra-beheerder bent, kunt u de vereiste stappen voor het maken van een service-principal niet uitvoeren. In dat geval moet uw Microsoft Entra-beheerder eerst een service-principal maken voordat u een HDInsight-cluster kunt maken met Data Lake Storage Gen1. De service-principal moet ook worden gemaakt met behulp van een certificaat, zoals beschreven in Een service-principal met certificaat maken.
Een Data Lake Storage Gen1-account maken
Volg deze stappen om een Data Lake Storage Gen1-account te maken.
Open vanaf uw bureaublad een nieuw Azure PowerShell-venster en voer het volgende codefragment in. Wanneer u wordt gevraagd u aan te melden, moet u zich aanmelden als een van de abonnementsbeheerder/-eigenaar:
# Log 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"
Notitie
Als u een foutbericht ontvangt dat lijkt op
Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid
bij het registreren van de Data Lake Storage Gen1-resourceprovider, is het mogelijk dat uw abonnement nog niet is goedgekeurd voor Data Lake Storage Gen1. Zorg ervoor dat u uw Azure-abonnement voor Data Lake Storage Gen1 inschakelt door deze instructies te volgen.Een opslagaccount met Data Lake Storage Gen1 is gekoppeld aan een Azure-resourcegroep. Maak daarom eerst een Azure-resourcegroep.
$resourceGroupName = "<your new resource group name>" New-AzResourceGroup -Name $resourceGroupName -Location "East US 2"
U zou een uitvoer zoals deze moeten zien.
ResourceGroupName : hdiadlgrp Location : eastus2 ProvisioningState : Succeeded Tags : ResourceId : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
Maak een opslagaccount met Data Lake Storage Gen1. De accountnaam die u opgeeft, mag alleen kleine letters en cijfers bevatten.
$dataLakeStorageGen1Name = "<your new storage account with Data Lake Storage Gen1 name>" New-AzDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $dataLakeStorageGen1Name -Location "East US 2"
U zou een uitvoer als de volgende moeten zien:
... 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 : {}
Upload enkele voorbeeldgegevens naar Data Lake Storage Gen1. Dit wordt verderop in dit artikel gebruikt om te controleren of de gegevens toegankelijk zijn vanuit een HDInsight-cluster. Als u op zoek bent naar enkele voorbeeldgegevens die u wilt uploaden, kunt u de map Ambulance Data ophalen uit de Git-opslagplaats van Azure Data Lake.
$myrootdir = "/" Import-AzDataLakeStoreItem -AccountName $dataLakeStorageGen1Name -Path "C:\<path to data>\vehicle1_09142014.csv" -Destination $myrootdir\vehicle1_09142014.csv
Verificatie instellen voor op rollen gebaseerde toegang tot Data Lake Storage Gen1
Elk Azure-abonnement is gekoppeld aan een Microsoft Entra-id. Gebruikers en services die toegang hebben tot resources van het abonnement met behulp van de Azure-portal of Azure Resource Manager-API, moeten eerst worden geverifieerd met die Microsoft Entra-id. Toegang wordt verleend aan Azure-abonnementen en -services door ze de juiste rol toe te wijzen aan een Azure-resource. Voor services identificeert een service-principal de service in de Microsoft Entra-id. In deze sectie ziet u hoe u een toepassingsservice, zoals HDInsight, toegang verleent tot een Azure-resource (het opslagaccount met Data Lake Storage Gen1 dat u eerder hebt gemaakt) door een service-principal voor de toepassing te maken en rollen toe te wijzen via Azure PowerShell.
Als u Active Directory-verificatie voor Data Lake Storage Gen1 wilt instellen, moet u de volgende taken uitvoeren.
- Een zelfondertekend certificaat maken
- Een toepassing maken in Microsoft Entra ID en een serviceprincipal
Een zelfondertekend certificaat maken
Zorg ervoor dat Windows SDK is geïnstalleerd voordat u doorgaat met de stappen in deze sectie. U moet ook een map hebben gemaakt, zoals C:\mycertdir, waar het certificaat wordt gemaakt.
Navigeer in het PowerShell-venster naar de locatie waar u Windows SDK hebt geïnstalleerd (meestal
C:\Program Files (x86)\Windows Kits\10\bin\x86
en gebruik het hulpprogramma MakeCert om een zelfondertekend certificaat en een persoonlijke sleutel te maken. Gebruik de volgende opdrachten.$certificateFileDir = "<my certificate directory>" cd $certificateFileDir makecert -sv mykey.pvk -n "cn=HDI-ADL-SP" CertFile.cer -r -len 2048
U wordt gevraagd het wachtwoord voor de persoonlijke sleutel in te voeren. Nadat de opdracht is uitgevoerd, ziet u een CertFile.cer en mykey.pvk in de certificaatmap die u hebt opgegeven.
Gebruik het hulpprogramma Pvk2Pfx om de .pvk- en .cer-bestanden te converteren die MakeCert heeft gemaakt naar een PFX-bestand. Voer de volgende opdracht uit.
pvk2pfx -pvk mykey.pvk -spc CertFile.cer -pfx CertFile.pfx -po <password>
Wanneer u hierom wordt gevraagd, voert u het wachtwoord voor de persoonlijke sleutel in dat u eerder hebt opgegeven. De waarde die u opgeeft voor de parameter -po is het wachtwoord dat is gekoppeld aan het PFX-bestand. Nadat de opdracht is voltooid, ziet u ook een CertFile.pfx in de certificaatmap die u hebt opgegeven.
Een Microsoft Entra-id en een service-principal maken
In deze sectie voert u de stappen uit voor het maken van een service-principal voor een Microsoft Entra-toepassing, wijst u een rol toe aan de service-principal en verifieert u als de service-principal door een certificaat op te geven. Voer de volgende opdrachten uit om een toepassing te maken in Microsoft Entra ID.
Plak de volgende cmdlets in de PowerShell-console. Zorg ervoor dat de waarde die u opgeeft voor de eigenschap -DisplayName uniek is. De waarden voor -HomePage en -IdentiferUris zijn ook tijdelijke aanduidingen en worden niet geverifieerd.
$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
Maak een service-principal met behulp van de toepassings-id.
$servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor $objectId = $servicePrincipal.Id
Verleen de service-principal toegang tot de Data Lake Storage Gen1-map en het bestand waartoe u toegang krijgt vanuit het HDInsight-cluster. Het onderstaande fragment biedt toegang tot de hoofdmap van het opslagaccount met Data Lake Storage Gen1 (waar u het voorbeeldgegevensbestand hebt gekopieerd) en het bestand zelf.
Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path / -AceType User -Id $objectId -Permissions All Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path /vehicle1_09142014.csv -AceType User -Id $objectId -Permissions All
Een HDInsight Linux-cluster maken met Data Lake Storage Gen1 als extra opslag
In deze sectie maken we een HDInsight Hadoop Linux-cluster met Data Lake Storage Gen1 als extra opslag. Voor deze release moeten het HDInsight-cluster en het opslagaccount met Data Lake Storage Gen1 zich op dezelfde locatie bevinden.
Begin met het ophalen van de tenant-id van het abonnement. Dat hebt u later nodig.
$tenantID = (Get-AzContext).Tenant.TenantId
Voor deze release kan Data Lake Storage Gen1 voor een Hadoop-cluster alleen worden gebruikt als extra opslag voor het cluster. De standaardopslag is nog steeds de Azure Blob Storage (WASB). Daarom maken we eerst het opslagaccount en de opslagcontainers die vereist zijn voor het cluster.
# Create an Azure storage account $location = "East US 2" $storageAccountName = "<StorageAccountName>" # Provide a Storage account name New-AzStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName -Location $location -Type Standard_GRS # Create an Azure Blob Storage container $containerName = "<ContainerName>" # Provide a container name $storageAccountKey = (Get-AzStorageAccountKey -Name $storageAccountName -ResourceGroupName $resourceGroupName)[0].Value $destContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey New-AzStorageContainer -Name $containerName -Context $destContext
Maak het HDInsight-cluster. Gebruik de volgende cmdlets.
# Set these variables $clusterName = $containerName # As a best practice, have the same name for the cluster and container $clusterNodes = <ClusterSizeInNodes> # The number of nodes in the HDInsight cluster $httpCredentials = Get-Credential $sshCredentials = Get-Credential New-AzHDInsightCluster -ClusterName $clusterName -ResourceGroupName $resourceGroupName -HttpCredential $httpCredentials -Location $location -DefaultStorageAccountName "$storageAccountName.blob.core.windows.net" -DefaultStorageAccountKey $storageAccountKey -DefaultStorageContainer $containerName -ClusterSizeInNodes $clusterNodes -ClusterType Hadoop -Version "3.4" -OSType Linux -SshCredential $sshCredentials -ObjectID $objectId -AadTenantId $tenantID -CertificateFilePath $certificateFilePath -CertificatePassword $password
Nadat de cmdlet is voltooid, ziet u een uitvoer met de clusterdetails.
Testtaken uitvoeren op het HDInsight-cluster om de Data Lake Storage Gen1 te gebruiken
Nadat u een HDInsight-cluster hebt geconfigureerd, kunt u testtaken uitvoeren op het cluster om te testen of het HDInsight-cluster toegang heeft tot Data Lake Storage Gen1. Hiervoor voeren we een Hive-voorbeeldtaak uit waarmee een tabel wordt gemaakt met behulp van de voorbeeldgegevens die u eerder hebt geüpload naar uw opslagaccount met Data Lake Storage Gen1.
In dit gedeelte maakt u verbinding met het HDInsight Linux-cluster dat u heeft aangemaakt en voert u een voorbeeldquery in Hive uit.
- Als u een Windows-client gebruikt voor SSH in het cluster, raadpleegt u SSH gebruiken met Hadoop op basis van Linux in HDInsight vanuit Windows.
- Als u een Linux-client gebruikt om SSH naar het cluster te maken, zie SSH gebruiken met Linux-gebaseerde Hadoop op HDInsight vanaf Linux
Nadat u verbinding hebt gemaakt, start u de Hive CLI met behulp van de volgende opdracht:
hive
Voer met behulp van de CLI de volgende instructies in om een nieuwe tabel met de naam voertuigen te maken met behulp van de voorbeeldgegevens in Data Lake Storage Gen1:
DROP TABLE vehicles; CREATE EXTERNAL TABLE vehicles (str string) LOCATION 'adl://<mydatalakestoragegen1>.azuredatalakestore.net:443/'; SELECT * FROM vehicles LIMIT 10;
U zou een uitvoer moeten zien die er ongeveer als volgt uitziet:
1,1,2014-09-14 00:00:03,46.81006,-92.08174,51,S,1 1,2,2014-09-14 00:00:06,46.81006,-92.08174,13,NE,1 1,3,2014-09-14 00:00:09,46.81006,-92.08174,48,NE,1 1,4,2014-09-14 00:00:12,46.81006,-92.08174,30,W,1 1,5,2014-09-14 00:00:15,46.81006,-92.08174,47,S,1 1,6,2014-09-14 00:00:18,46.81006,-92.08174,9,S,1 1,7,2014-09-14 00:00:21,46.81006,-92.08174,53,N,1 1,8,2014-09-14 00:00:24,46.81006,-92.08174,63,SW,1 1,9,2014-09-14 00:00:27,46.81006,-92.08174,4,NE,1 1,10,2014-09-14 00:00:30,46.81006,-92.08174,31,N,1
Toegang tot Data Lake Storage Gen1 met HDFS-opdrachten
Zodra u het HDInsight-cluster hebt geconfigureerd voor het gebruik van Data Lake Storage Gen1, kunt u de HDFS-shellopdrachten gebruiken om toegang te krijgen tot het archief.
In deze sectie gaat u SSH naar het HDInsight Linux-cluster dat u hebt gemaakt en voert u de HDFS-opdrachten uit.
- Als u een Windows-client gebruikt voor SSH in het cluster, raadpleegt u SSH gebruiken met Hadoop op basis van Linux in HDInsight vanuit Windows.
- Als u een Linux-client gebruikt om SSH naar het cluster te maken, zie SSH gebruiken met Linux-gebaseerde Hadoop op HDInsight vanaf Linux
Nadat u verbinding hebt gemaakt, gebruikt u de volgende opdracht voor het HDFS-bestandssysteem om de bestanden in het opslagaccount weer te geven met Data Lake Storage Gen1.
hdfs dfs -ls adl://<storage account with Data Lake Storage Gen1 name>.azuredatalakestore.net:443/
Hiermee wordt het bestand weergegeven dat u eerder naar Data Lake Storage Gen1 hebt geüpload.
15/09/17 21:41:15 INFO web.CaboWebHdfsFileSystem: Replacing original urlConnectionFactory with org.apache.hadoop.hdfs.web.URLConnectionFactory@21a728d6
Found 1 items
-rwxrwxrwx 0 NotSupportYet NotSupportYet 671388 2015-09-16 22:16 adl://mydatalakestoragegen1.azuredatalakestore.net:443/mynewfolder
U kunt ook de hdfs dfs -put
opdracht gebruiken om bepaalde bestanden te uploaden naar Data Lake Storage Gen1 en vervolgens te gebruiken hdfs dfs -ls
om te controleren of de bestanden zijn geüpload.