Aracılığıyla paylaş


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.

  1. 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.

  2. 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
    
  3. 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                        : {}
    
  4. 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.

  1. 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.

  2. 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.

  1. 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
    
  2. Uygulama kimliğini kullanarak bir hizmet sorumlusu oluşturun.

    $servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor
    
     $objectId = $servicePrincipal.Id
    
  3. 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.

  1. Abonelik kiracı kimliğini alarak başlayın. Buna daha sonra ihtiyacınız olacak.

    $tenantID = (Get-AzContext).Tenant.TenantId
    
  2. 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
    
  3. 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.

  1. Bağlandıktan sonra, aşağıdaki komutu kullanarak Hive CLI'yi başlatın:

    hive
    
  2. 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.

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.

Ayrıca Bkz.