Azure HDInsight kümeleriyle Data Lake Storage 1. Nesil kullanma

Dekont

İyileştirilmiş performans ve yeni özellikler için Azure Data Lake Storage 2. Nesil kullanarak yeni HDInsight kümeleri dağıtın.

HDInsight kümesindeki verileri analiz etmek için, verileri Azure Blob storageazure Data Lake Storage 1. Nesil veya Azure Data Lake Storage 2. Nesil içinde depolayabilirsiniz. Tüm depolama seçenekleri, kullanıcı verilerini kaybetmeden hesaplama için kullanılan HDInsight kümelerini güvenli bir şekilde silmenizi sağlar.

Bu makalede Data Lake Storage 1. Nesil HDInsight kümeleriyle nasıl çalıştığını öğreneceksiniz. Azure Blob depolamanın HDInsight kümeleriyle nasıl çalıştığını öğrenmek için bkz . Azure BLOB depolamayı Azure HDInsight kümeleri ile kullanma. HDInsight kümesi oluşturma hakkında daha fazla bilgi için bkz . HDInsight'ta Apache Hadoop kümeleri oluşturma.

Dekont

Data Lake Storage 1. Nesil her zaman güvenli bir kanal üzerinden erişilir, bu nedenle dosya sistemi düzeni adı yokturadls. Her zaman adl kullanırsınız.

Dekont

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.

HDInsight kümeleri için kullanılabilirlik

Apache Hadoop, varsayılan dosya sistemiyle ilgili bir bildirimi destekler. Varsayılan dosya sistemi varsayılan şema ve yetkilisi anlamına gelir. Bu göreceli yolları çözümlemek için de kullanılabilir. HDInsight kümesi oluşturma işlemi sırasında Azure Depolama'de varsayılan dosya sistemi olarak bir blob kapsayıcısı belirtin. HdInsight 3.5 ve daha yeni sürümlerle, birkaç özel durum dışında varsayılan dosya sistemi olarak Azure Blob depolama veya Azure Data Lake Storage 1. Nesil seçebilirsiniz. Küme ve depolama hesabının aynı bölgede barındırılması gerekir.

HDInsight kümeleri Data Lake Storage 1. Nesil 2 şekilde kullanabilir:

  • Varsayılan depolama alanı olarak
  • Ek depolama alanı olarak, Azure Blob depolama varsayılan depolama alanı olarak.

Şu anda, hdInsight küme türlerinden/sürümlerinden yalnızca bazıları varsayılan depolama ve ek depolama hesapları olarak Data Lake Storage 1. Nesil kullanılmasını destekler:

HDInsight küme türü Varsayılan depolama alanı olarak Data Lake Storage 1. Nesil Ek depolama alanı olarak Data Lake Storage 1. Nesil Notlar
HDInsight sürüm 4.0 Hayır Hayır ADLS 1. Nesil, HDInsight 4.0 ile desteklenmez
HDInsight sürümü 3.6 Evet Evet HBase dışında
HDInsight sürümü 3.5 Evet Evet HBase dışında
HDInsight sürümü 3.4 Hayır Evet
HDInsight sürümü 3.3 Hayır Hayır
HDInsight sürümü 3.2 Hayır Evet

Uyarı

HDInsight HBase, Azure Data Lake Storage 1. Nesil ile desteklenmez

ek depolama hesabı olarak Data Lake Storage 1. Nesil kullanılması performansı etkilemez. Veya kümeden Azure blob depolamayı okuma veya azure blob depolamaya yazma olanağı.

Varsayılan depolama alanı olarak Data Lake Storage 1. Nesil kullanma

HDInsight varsayılan depolama olarak Data Lake Storage 1. Nesil ile dağıtıldığında, kümeyle ilgili dosyalar içinde adl://mydatalakestore/<cluster_root_path>/depolanır; burada <cluster_root_path> Data Lake Depolama'de oluşturduğunuz klasörün adıdır. Her küme için bir kök yol belirterek, birden fazla küme için aynı Data Lake Depolama hesabını kullanabilirsiniz. Bunu yaptığınızda şöyle bir durum olabilir:

  • Küme 1 yolu kullanabilir adl://mydatalakestore/cluster1storage
  • Küme 2 yolu kullanabilir adl://mydatalakestore/cluster2storage

Her iki kümenin de mydatalakestore aynı Data Lake Storage 1. Nesil hesabını kullandığına dikkat edin. Her küme data lake Depolama kendi kök dosya sistemine erişebilir. Azure portalı dağıtım deneyimi, kök yol için /clusters/<clustername> gibi bir klasör adı kullanmanızı ister.

Data Lake Storage 1. Nesil varsayılan depolama olarak kullanmak için hizmet sorumlusuna aşağıdaki yollara erişim vermelisiniz:

  • Data Lake Storage 1. Nesil hesabı kökü. Örneğin: adl://mydatalakestore/.
  • Tüm küme klasörlerine yönelik klasör. Örneğin: adl://mydatalakestore/clusters.
  • Kümenin klasörü. Örneğin: adl://mydatalakestore/clusters/cluster1storage.

Hizmet sorumlusu oluşturma ve erişim izni verme hakkında daha fazla bilgi için bkz. Data Lake Depolama erişimini yapılandırma.

Küme oluşturmada kullanılmak üzere Azure Keyvault'tan sertifika ayıklama

Hizmet sorumlunuzun sertifikası Azure Key Vault'ta depolanıyorsa, sertifikayı doğru biçime dönüştürmeniz gerekir. Aşağıdaki kod parçacıkları dönüştürme işleminin nasıl yapılacağını gösterir.

İlk olarak, sertifikayı Key Vault'tan indirin ve ayıklayın SecretValueText.

$certPassword = Read-Host "Enter Certificate Password"
$cert = (Get-AzureKeyVaultSecret -VaultName 'MY-KEY-VAULT' -Name 'MY-SECRET-NAME')
$certValue = [System.Convert]::FromBase64String($cert.SecretValueText)

Ardından, öğesini SecretValueText bir sertifikaya dönüştürün.

$certObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList $certValue,$null,"Exportable, PersistKeySet"
$certBytes = $certObject.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $certPassword.SecretValueText);
$identityCertificate = [System.Convert]::ToBase64String($certBytes)

Ardından aşağıdaki kod parçacığında $identityCertificate olduğu gibi yeni bir küme dağıtmak için komutunu kullanabilirsiniz:

New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile $pathToArmTemplate `
    -identityCertificate $identityCertificate `
    -identityCertificatePassword $certPassword.SecretValueText `
    -clusterName  $clusterName `
    -clusterLoginPassword $SSHpassword `
    -sshPassword $SSHpassword `
    -servicePrincipalApplicationId $application.ApplicationId

ek depolama alanı olarak Data Lake Storage 1. Nesil kullanma

küme için ek depolama alanı olarak da Data Lake Storage 1. Nesil kullanabilirsiniz. Bu gibi durumlarda küme varsayılan depolama alanı bir Azure Blob depolama alanı veya Azure Data Lake Storage 1. Nesil hesabı olabilir. HdInsight işlerini Azure Data Lake Storage 1. Nesil'da ek depolama alanı olarak depolanan verilere karşı çalıştırırken tam yolu kullanın. Örneğin:

adl://mydatalakestore.azuredatalakestore.net/<file_path>

URL'de artık cluster_root_path yok. Bunun nedeni Data Lake Depolama'in bu durumda varsayılan depolama alanı olmadığındandır. Bu nedenle tek yapmanız gereken dosyaların yolunu sağlamaktır.

Ek depolama alanı olarak bir Data Lake Storage 1. Nesil kullanmak için, hizmet sorumlusuna dosyalarınızın depolandığı yollara erişim verin. Örneğin:

adl://mydatalakestore.azuredatalakestore.net/<file_path>

Hizmet sorumlusu oluşturma ve erişim izni verme hakkında daha fazla bilgi için bkz. Data Lake Depolama erişimini yapılandırma.

Birden fazla Data Lake Storage 1. Nesil hesabı kullanma

Data Lake Depolama hesabını ek olarak ekleme ve birden fazla Data Lake Depolama hesabı ekleme işlemi yapılabilir. Bir veya daha fazla Data Lake Depolama hesabındaki veriler üzerinde HDInsight kümesine izin verin. Bkz. Data Lake Storage 1. Nesil erişimi yapılandırma.

Data Lake Storage 1. Nesil erişimi yapılandırma

HDInsight kümenizden Azure Data Lake Storage 1. Nesil erişimini yapılandırmak için bir Microsoft Entra hizmet sorumlunuz olmalıdır. Yalnızca bir Microsoft Entra yöneticisi hizmet sorumlusu oluşturabilir. Hizmet sorumlusunun bir sertifika ile oluşturulması gerekir. Daha fazla bilgi edinmek için bkz. Hızlı başlangıç: HDInsight'ta kümeleri ayarlama ve Otomatik olarak imzalanan sertifika ile hizmet sorumlusu oluşturma.

Dekont

HDInsight kümesi için ek depolama alanı olarak Azure Data Lake Storage 1. Nesil kullanacaksanız, bu makalede açıklandığı gibi kümeyi oluştururken bunu yapmanızı kesinlikle öneririz. Azure Data Lake Storage 1. Nesil mevcut bir HDInsight kümesine ek depolama alanı olarak eklenmesi desteklenen bir senaryo değildir.

Erişim denetimi modeli hakkında daha fazla bilgi için bkz. Azure Data Lake Storage 1. Nesil'de erişim denetimi.

Kümeden dosyalara erişme

Data Lake Depolama dosyalarına hdInsight kümesinden erişmenin çeşitli yolları vardır.

  • Tam adı kullanarak. Bu yöntemle, erişmek istediğiniz dosyanın tam yolunu girersiniz.

    adl://<data_lake_account>.azuredatalakestore.net/<cluster_root_path>/<file_path>
    
  • Kısaltılmış yol biçimi kullanarak. Bu yaklaşımla, küme köküne kadar olan yolu şununla değiştirirsiniz:

    adl:///<file path>
    
  • Göreli yolu kullanarak. Bu yöntemle, erişmek istediğiniz dosyanın yalnızca göreli yolunu girersiniz.

    /<file.path>/
    

Veri erişim örnekleri

Örnekler, kümenin baş düğümüne yönelik ssh bağlantısını temel alır. Örneklerde üç URI şeması da kullanılır. ve CLUSTERNAME değerlerini ilgili değerlerle değiştirinDATALAKEACCOUNT.

Birkaç hdfs komutu

  1. Yerel depolamada bir dosya oluşturun.

    touch testFile.txt
    
  2. Küme depolamada dizinler oluşturun.

    hdfs dfs -mkdir adl://DATALAKEACCOUNT.azuredatalakestore.net/clusters/CLUSTERNAME/sampledata1/
    hdfs dfs -mkdir adl:///sampledata2/
    hdfs dfs -mkdir /sampledata3/
    
  3. Verileri yerel depolamadan küme depolama alanına kopyalayın.

    hdfs dfs -copyFromLocal testFile.txt adl://DATALAKEACCOUNT.azuredatalakestore.net/clusters/CLUSTERNAME/sampledata1/
    hdfs dfs -copyFromLocal testFile.txt adl:///sampledata2/
    hdfs dfs -copyFromLocal testFile.txt /sampledata3/
    
  4. Küme depolamadaki dizin içeriğini listeleyin.

    hdfs dfs -ls adl://DATALAKEACCOUNT.azuredatalakestore.net/clusters/CLUSTERNAME/sampledata1/
    hdfs dfs -ls adl:///sampledata2/
    hdfs dfs -ls /sampledata3/
    

Hive tablosu oluşturma

Gösterim amacıyla üç dosya konumu gösterilir. Gerçek yürütme için girdilerden LOCATION yalnızca birini kullanın.

DROP TABLE myTable;
CREATE EXTERNAL TABLE myTable (
    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://DATALAKEACCOUNT.azuredatalakestore.net/clusters/CLUSTERNAME/example/data/';
LOCATION 'adl:///example/data/';
LOCATION '/example/data/';

Ambari'den depolama yolunu tanımlama

Yapılandırılan varsayılan deponun tam yolunu belirlemek için HDFS>Yapılandırmaları'na gidin ve filtre giriş kutusuna girin.fs.defaultFS

Data Lake Storage 1. Nesil erişimi olan HDInsight kümeleri oluşturma

Data Lake Storage 1. Nesil erişimi olan HDInsight kümeleri oluşturma hakkında ayrıntılı yönergeler için aşağıdaki bağlantıları kullanın.

Data Lake Storage 1. Nesil erişimi için HDInsight sertifikasını yenileme

Aşağıdaki örnek PowerShell kodu yerel bir dosyadan veya Azure Key Vault'tan bir sertifika okur ve HDInsight kümenizi azure Data Lake Storage 1. Nesil erişmek için yeni sertifikayla güncelleştirir. Sertifikanın kendi HDInsight küme adını, kaynak grubu adını, abonelik kimliğini, app IDyerel yolunu belirtin. İstendiğinde parolayı yazın.

$clusterName = '<clustername>'
$resourceGroupName = '<resourcegroupname>'
$subscriptionId = '01234567-8a6c-43bc-83d3-6b318c6c7305'
$appId = '01234567-e100-4118-8ba6-c25834f4e938'
$addNewCertKeyCredential = $true
$certFilePath = 'C:\localfolder\adls.pfx'
$KeyVaultName = "my-key-vault-name"
$KeyVaultSecretName = "my-key-vault-secret-name"
$certPassword = Read-Host "Enter Certificate Password"
# certSource
# 0 - create self signed cert
# 1 - read cert from file path
# 2 - read cert from key vault
$certSource = 0

Login-AzAccount
Select-AzSubscription -SubscriptionId $subscriptionId

if($certSource -eq 0)
{
    Write-Host "Generating new SelfSigned certificate"

    $cert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" -Subject "CN=hdinsightAdlsCert" -KeySpec KeyExchange
    $certBytes = $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $certPassword);
    $certString = [System.Convert]::ToBase64String($certBytes)
}
elseif($certSource -eq 1)
{

    Write-Host "Reading the cert file from path $certFilePath"

    $cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2($certFilePath, $certPassword)
    $certString = [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes($certFilePath))
}
elseif($certSource -eq 2)
{

    Write-Host "Reading the cert file from Azure Key Vault $KeyVaultName"

    $cert = (Get-AzureKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName)
    $certValue = [System.Convert]::FromBase64String($cert.SecretValueText)
    $certObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList $certValue, $null,"Exportable, PersistKeySet"

    $certBytes = $certObject.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $certPassword.SecretValueText);

    $certString =[System.Convert]::ToBase64String($certBytes)
}

if($addNewCertKeyCredential)
{
    Write-Host "Creating new KeyCredential for the app"
    $keyValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
    New-AzADAppCredential -ApplicationId $appId -CertValue $keyValue -EndDate $cert.NotAfter -StartDate $cert.NotBefore
    Write-Host "Waiting for 7 minutes for the permissions to get propagated"
    Start-Sleep -s 420 #7 minutes
}

Write-Host "Updating the certificate on HDInsight cluster..."

Invoke-AzResourceAction `
    -ResourceGroupName $resourceGroupName `
    -ResourceType 'Microsoft.HDInsight/clusters' `
    -ResourceName $clusterName `
    -ApiVersion '2015-03-01-preview' `
    -Action 'updateclusteridentitycertificate' `
    -Parameters @{ ApplicationId = $appId; Certificate = $certString; CertificatePassword = $certPassword.ToString() } `
    -Force

Sonraki adımlar

Bu makalede HDInsight ile HDFS uyumlu Azure Data Lake Storage 1. Nesil kullanmayı öğrendiniz. Bu depolama, uyarlanabilir, uzun vadeli, arşivleme veri alma çözümleri oluşturmanıza olanak tanır. Ayrıca, depolanan yapılandırılmış ve yapılandırılmamış verilerin içindeki bilgilerin kilidini açmak için HDInsight'ı kullanın.

Daha fazla bilgi için bkz.