Azure Data Lake Storage 1. Nesil ile HDInsight kümesi oluşturmak için Azure PowerShell kullanma (ek depolama alanı olarak)
ek depolama alanı olarak Azure Data Lake Storage 1. Nesil ile HDInsight kümesi yapılandırmak için Azure PowerShell kullanmayı öğrenin. Varsayılan depolama alanı olarak Data Lake Storage 1. Nesil olan bir HDInsight kümesi oluşturma yönergeleri için bkz. Varsayılan depolama alanı olarak Data Lake Storage 1. Nesil ile HDInsight kümesi oluşturma.
Not
HDInsight kümesi için ek depolama alanı olarak Data Lake Storage 1. Nesil kullanacaksanız, bu makalede açıklandığı gibi kümeyi oluştururken bunu yapmanızı kesinlikle öneririz. Data Lake Storage 1. Nesil var olan bir HDInsight kümesine ek depolama alanı olarak eklemek karmaşık bir işlemdir ve hatalara açıktır.
Desteklenen küme türleri için Data Lake Storage 1. Nesil varsayılan depolama veya ek depolama hesabı olarak kullanılabilir. Data Lake Storage 1. Nesil ek depolama alanı olarak kullanıldığında, kümeler için varsayılan depolama hesabı yine Azure Blob depolama (WASB) olur ve kümeyle ilgili dosyalar (günlükler vb.) hala varsayılan depolama alanına yazılırken, işlemek istediğiniz veriler bir Data Lake Storage 1. Nesil depolanabilir. Data Lake Storage 1. Nesil ek depolama hesabı olarak kullanılması performansı veya kümeden depolamaya okuma/yazma özelliğini etkilemez.
HDInsight küme depolaması için Data Lake Storage 1. Nesil kullanma
HDInsight'ı Data Lake Storage 1. Nesil ile kullanırken dikkat edilmesi gereken bazı önemli noktalar şunlardır:
- HDInsight 3.2, 3.4, 3.5 ve 3.6 sürümlerinde ek depolama alanı kullanılabildiği için Data Lake Storage 1. Nesil erişimi olan HDInsight kümeleri oluşturma seçeneği.
HDInsight'ı PowerShell kullanarak Data Lake Storage 1. Nesil çalışacak şekilde yapılandırmak aşağıdaki adımları içerir:
- Data Lake Storage 1. Nesil hesabı oluşturma
- Data Lake Storage 1. Nesil rol tabanlı erişim için kimlik doğrulamasını ayarlama
- Data Lake Storage 1. Nesil için kimlik doğrulaması ile HDInsight kümesi oluşturma
- Kümede test işi çalıştırma
Önkoşullar
Not
Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.
Bu öğreticiye başlamadan önce aşağıdakilere sahip olmanız gerekir:
Bir Azure aboneliği. Bkz. Azure ücretsiz deneme sürümü edinme.
Azure PowerShell 1.0 veya üstü. Bkz. Azure PowerShell'i yükleme ve yapılandırma.
Windows SDK'sı. Buradan yükleyebilirsiniz. Bunu bir güvenlik sertifikası oluşturmak için kullanırsınız.
hizmet sorumlusu Microsoft Entra. Bu öğreticideki adımlar, Microsoft Entra ID'de hizmet sorumlusu oluşturma yönergelerini sağlar. Ancak, hizmet sorumlusu oluşturabilmek için Microsoft Entra yöneticisi olmanız gerekir. Microsoft Entra yöneticisiyseniz bu önkoşulu atlayabilir ve öğreticiye devam edebilirsiniz.
Microsoft Entra yöneticisi değilseniz, hizmet sorumlusu oluşturmak için gereken adımları gerçekleştiremezsiniz. Böyle bir durumda, Data Lake Storage 1. Nesil ile HDInsight kümesi oluşturabilmeniz için önce Microsoft Entra yöneticinizin bir hizmet sorumlusu oluşturması gerekir. Ayrıca, hizmet sorumlusu sertifika ile hizmet sorumlusu oluşturma bölümünde açıklandığı gibi bir sertifika kullanılarak oluşturulmalıdır.
Data Lake Storage 1. Nesil hesabı oluşturma
Data Lake Storage 1. Nesil hesabı oluşturmak için bu adımları izleyin.
Masaüstünüzden yeni bir Azure PowerShell penceresi açın ve aşağıdaki kod parçacığını girin. Oturum açmanız istendiğinde, abonelik yöneticisi/sahibinden biri olarak oturum açtığınızdan emin olun:
# 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"
Not
Data Lake Storage 1. Nesil kaynak sağlayıcısını kaydederkenkine
Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid
benzer bir hata alırsanız aboneliğinizin Data Lake Storage 1. Nesil için onaylanmaması mümkündür. Bu yönergeleri izleyerek Azure aboneliğinizi Data Lake Storage 1. Nesil için etkinleştirdiğinizden emin olun.Data Lake Storage 1. Nesil içeren bir depolama hesabı bir Azure Kaynak Grubu ile ilişkilendirilir. Azure Kaynak Grubu oluşturma işlemiyle başlayın.
$resourceGroupName = "<your new resource group name>" New-AzResourceGroup -Name $resourceGroupName -Location "East US 2"
Şunun gibi bir çıktı görmeniz gerekir:
ResourceGroupName : hdiadlgrp Location : eastus2 ProvisioningState : Succeeded Tags : ResourceId : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
Data Lake Storage 1. Nesil ile bir depolama hesabı oluşturun. Belirttiğiniz hesap adı yalnızca küçük harf ve sayı içermelidir.
$dataLakeStorageGen1Name = "<your new storage account with Data Lake Storage Gen1 name>" New-AzDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $dataLakeStorageGen1Name -Location "East US 2"
Aşağıdaki gibi bir çıktı görmeniz gerekir:
... 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 : {}
Data Lake Storage 1. Nesil'a bazı örnek verileri yükleyin. Bu makalenin ilerleyen bölümlerinde verilerin HDInsight kümesinden erişilebilir olduğunu doğrulamak için kullanacağız. Karşıya yüklenecek örnek veri arıyorsanız Azure Data Lake Git Deposu'ndan Ambulance Data klasörünü alabilirsiniz.
$myrootdir = "/" Import-AzDataLakeStoreItem -AccountName $dataLakeStorageGen1Name -Path "C:\<path to data>\vehicle1_09142014.csv" -Destination $myrootdir\vehicle1_09142014.csv
Data Lake Storage 1. Nesil rol tabanlı erişim için kimlik doğrulamasını ayarlama
Her Azure aboneliği bir Microsoft Entra ID ile ilişkilendirilir. Azure portal veya Azure Resource Manager API'sini kullanarak aboneliğin kaynaklarına erişen kullanıcıların ve hizmetlerin önce bu Microsoft Entra ID kimlik doğrulaması yapması gerekir. Azure aboneliklerine ve hizmetlerine bir Azure kaynağında uygun rol atanarak erişim izni verilir. Hizmetler için, hizmet sorumlusu hizmeti Microsoft Entra ID tanımlar. Bu bölümde, hdinsight gibi bir uygulama hizmetine uygulama için bir hizmet sorumlusu oluşturup Azure PowerShell aracılığıyla roller atayarak bir Azure kaynağına (daha önce oluşturduğunuz Data Lake Storage 1. Nesil sahip depolama hesabı) erişim verme işlemi gösterilmektedir.
Data Lake Storage 1. Nesil için Active Directory kimlik doğrulamasını ayarlamak için aşağıdaki görevleri gerçekleştirmeniz gerekir.
- Otomatik olarak imzalanan sertifika oluşturma
- Microsoft Entra ID ve Hizmet Sorumlusu'nda uygulama oluşturma
Otomatik olarak imzalanan sertifika oluşturma
Bu bölümdeki adımlara devam etmeden önce Windows SDK'sının yüklü olduğundan emin olun. Sertifikanın oluşturulacağı C:\mycertdir gibi bir dizin de oluşturmuş olmanız gerekir.
PowerShell penceresinden, Windows SDK'sını yüklediğiniz konuma gidin (genellikle
C:\Program Files (x86)\Windows Kits\10\bin\x86
ve otomatik olarak imzalanan bir sertifika ve özel anahtar oluşturmak için MakeCert yardımcı programını kullanın. Aşağıdaki komutları kullanın.$certificateFileDir = "<my certificate directory>" cd $certificateFileDir makecert -sv mykey.pvk -n "cn=HDI-ADL-SP" CertFile.cer -r -len 2048
Özel anahtar parolasını girmeniz istenir. Komut başarıyla yürütüldikten sonra, belirttiğiniz sertifika dizininde bir CertFile.cer ve mykey.pvk görmeniz gerekir.
MakeCert tarafından oluşturulan .pvk ve .cer dosyalarını .pfx dosyasına dönüştürmek için Pvk2Pfx yardımcı programını kullanın. Aşağıdaki komutu çalıştırın.
pvk2pfx -pvk mykey.pvk -spc CertFile.cer -pfx CertFile.pfx -po <password>
İstendiğinde, daha önce belirttiğiniz özel anahtar parolasını girin. -po parametresi için belirttiğiniz değer, .pfx dosyasıyla ilişkili paroladır. Komut başarıyla tamamlandıktan sonra, belirttiğiniz sertifika dizininde bir CertFile.pfx de görmeniz gerekir.
Microsoft Entra ID ve hizmet sorumlusu oluşturma
Bu bölümde, bir Microsoft Entra uygulaması için hizmet sorumlusu oluşturma, hizmet sorumlusuna rol atama ve sertifika sağlayarak hizmet sorumlusu olarak kimlik doğrulaması gerçekleştirme adımlarını gerçekleştireceksiniz. Microsoft Entra ID'da uygulama oluşturmak için aşağıdaki komutları çalıştırın.
Aşağıdaki cmdlet'leri PowerShell konsol penceresine yapıştırın. -DisplayName özelliği için belirttiğiniz değerin benzersiz olduğundan emin olun. Ayrıca, -HomePage ve -IdentiferUris değerleri yer tutucu değerlerdir ve doğrulanmaz.
$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
Uygulama kimliğini kullanarak bir hizmet sorumlusu oluşturun.
$servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor $objectId = $servicePrincipal.Id
Hizmet sorumlusuna Data Lake Storage 1. Nesil klasörüne ve HDInsight kümesinden erişilecek dosyaya erişim verin. Aşağıdaki kod parçacığı, depolama hesabının köküne Data Lake Storage 1. Nesil (örnek veri dosyasını kopyaladığınız yer) ve dosyanın kendisine erişim sağlar.
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
Ek depolama alanı olarak Data Lake Storage 1. Nesil ile HDInsight Linux kümesi oluşturma
Bu bölümde ek depolama alanı olarak Data Lake Storage 1. Nesil ile bir HDInsight Hadoop Linux kümesi oluşturacağız. Bu sürümde, Data Lake Storage 1. Nesil içeren HDInsight kümesi ve depolama hesabı aynı konumda olmalıdır.
Abonelik kiracı kimliğini alarak başlayın. Buna daha sonra ihtiyacınız olacak.
$tenantID = (Get-AzContext).Tenant.TenantId
Bu sürümde, bir Hadoop kümesi için Data Lake Storage 1. Nesil yalnızca küme için ek depolama alanı olarak kullanılabilir. Varsayılan depolama hala Azure Blob depolama (WASB) olacaktır. Bu nedenle, önce küme için gereken depolama hesabını ve depolama kapsayıcılarını oluşturacağız.
# 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
HDInsight kümesini oluşturun. Aşağıdaki cmdlet'leri kullanın.
# 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
Cmdlet başarıyla tamamlandıktan sonra küme ayrıntılarını listeleyen bir çıkış görmeniz gerekir.
Data Lake Storage 1. Nesil kullanmak için HDInsight kümesinde test işleri çalıştırma
BIR HDInsight kümesi yapılandırdıktan sonra, HDInsight kümesinin Data Lake Storage 1. Nesil erişebildiğini test etmek için kümede test işleri çalıştırabilirsiniz. Bunu yapmak için, daha önce Data Lake Storage 1. Nesil ile depolama hesabınıza yüklediğiniz örnek verileri kullanarak bir tablo oluşturan örnek bir Hive işi çalıştıracağız.
Bu bölümde, oluşturduğunuz HDInsight Linux kümesinde SSH oluşturacak ve örnek hive sorgusunu çalıştıracaksınız.
- Kümede SSH kullanmak için Windows istemcisi kullanıyorsanız bkz. Windows'dan HDInsight'ta Linux tabanlı Hadoop ile SSH kullanma.
- Kümede SSH için Linux istemcisi kullanıyorsanız bkz. Linux'tan HDInsight'ta Linux tabanlı Hadoop ile SSH kullanma
Bağlandıktan sonra, aşağıdaki komutu kullanarak Hive CLI'yi başlatın:
hive
CLI kullanarak aşağıdaki deyimleri girerek Data Lake Storage 1. Nesil'deki örnek verileri kullanarak vehicles adlı yeni bir tablo oluşturun:
DROP TABLE vehicles; CREATE EXTERNAL TABLE vehicles (str string) LOCATION 'adl://<mydatalakestoragegen1>.azuredatalakestore.net:443/'; SELECT * FROM vehicles LIMIT 10;
Aşağıdakine benzer bir çıktı görmeniz gerekir:
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
HDFS komutlarını kullanarak Access Data Lake Storage 1. Nesil
HDInsight kümesini Data Lake Storage 1. Nesil kullanacak şekilde yapılandırdıktan sonra, depoya erişmek için HDFS kabuk komutlarını kullanabilirsiniz.
Bu bölümde, oluşturduğunuz HDInsight Linux kümesinde SSH oluşturacak ve HDFS komutlarını çalıştıracaksınız.
- Kümede SSH kullanmak için Windows istemcisi kullanıyorsanız bkz. Windows'dan HDInsight'ta Linux tabanlı Hadoop ile SSH kullanma.
- Kümede SSH için Linux istemcisi kullanıyorsanız bkz. Linux'tan HDInsight'ta Linux tabanlı Hadoop ile SSH kullanma
Bağlandıktan sonra, depolama hesabındaki dosyaları Data Lake Storage 1. Nesil ile listelemek için aşağıdaki HDFS dosya sistemi komutunu kullanın.
hdfs dfs -ls adl://<storage account with Data Lake Storage Gen1 name>.azuredatalakestore.net:443/
Bu, daha önce Data Lake Storage 1. Nesil'a yüklediğiniz dosyayı listelemelidir.
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
Komutunu kullanarak hdfs dfs -put
Data Lake Storage 1. Nesil'a bazı dosyaları yükleyebilir ve ardından dosyaları başarıyla karşıya yükleyip yüklemediğini doğrulayabilirsinizhdfs dfs -ls
.