Použití Data Lake Storage Gen1 s clustery Azure HDInsight

Poznámka:

Nasaďte nové clustery HDInsight pomocí Azure Data Lake Storage Gen2 pro lepší výkon a nové funkce.

Pokud chcete analyzovat data v clusteru HDInsight, můžete je uložit v Azure Blob storageAzure Data Lake Storage Gen1 nebo Azure Data Lake Storage Gen2. Všechny možnosti úložiště umožňují bezpečně odstranit clustery HDInsight, které se používají k výpočtu bez ztráty uživatelských dat.

V tomto článku se dozvíte, jak Data Lake Storage Gen1 funguje s clustery HDInsight. Informace o fungování služby Azure Blob Storage s clustery HDInsight najdete v tématu Použití služby Azure Blob Storage s clustery Azure HDInsight. Další informace o vytvoření clusteru HDInsight naleznete v tématu Vytváření clusterů Apache Hadoop v HDInsight.

Poznámka:

Data Lake Storage Gen1 se vždy přistupuje přes zabezpečený kanál, takže neexistuje žádný adls název schématu systému souborů. Vždy používáte adl.

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Dostupnost pro clustery HDInsight

Apache Hadoop podporuje koncept výchozího systému souborů. Výchozí systém souborů znamená výchozí schéma a autoritu. Lze ho také použít k vyřešení relativní cesty. Během procesu vytváření clusteru HDInsight zadejte kontejner objektů blob ve službě Azure Storage jako výchozí systém souborů. Nebo s HDInsight 3.5 a novějšími verzemi můžete jako výchozí systém souborů vybrat Azure Blob Storage nebo Azure Data Lake Storage Gen1 s několika výjimkami. Účet úložiště a clusteru musí být uloženy ve stejné oblasti.

Clustery HDInsight můžou používat Data Lake Storage Gen1 2 způsoby:

  • Jako výchozí úložiště.
  • Jako další úložiště je jako výchozí úložiště azure Blob Storage.

V současné době se jako výchozí úložiště a další účty úložiště podporují pouze některé typy a verze clusteru HDInsight s využitím Data Lake Storage Gen1:

Typ clusteru HDInsight Data Lake Storage Gen1 jako výchozí úložiště Data Lake Storage Gen1 jako další úložiště Notes
HDInsight verze 4.0 No Ne ADLS Gen1 se ve službě HDInsight 4.0 nepodporuje.
HDInsight verze 3.6 Ano Yes Kromě HBase
HDInsight verze 3.5 Ano Yes Kromě HBase
HDInsight verze 3.4 No Ano
HDInsight verze 3.3 No Ne
HDInsight verze 3.2 No Ano

Upozorňující

Azure Data Lake Storage Gen1 nepodporuje HDInsight HBase

Použití Data Lake Storage Gen1 jako dalšího účtu úložiště nemá vliv na výkon. Nebo možnost čtení nebo zápisu do úložiště objektů blob v Azure z clusteru.

Použití Data Lake Storage Gen1 jako výchozího úložiště

Když se služba HDInsight nasadí se službou Data Lake Storage Gen1 jako výchozí úložiště, uloží se soubory související s clusterem ve adl://mydatalakestore/<cluster_root_path>/složce, kterou <cluster_root_path> vytvoříte ve službě Data Lake Storage. Zadáním kořenové cesty pro každý cluster můžete použít stejný účet Data Lake Storage pro více než jeden cluster. Takže máte nastavení, kde:

  • Cluster 1 může použít cestu adl://mydatalakestore/cluster1storage
  • Cluster 2 může použít cestu adl://mydatalakestore/cluster2storage

Všimněte si, že oba clustery používají stejný účet Data Lake Storage Gen1 mydatalakestore. Každý cluster má přístup k vlastnímu kořenovému systému souborů ve službě Data Lake Storage. Prostředí nasazení webu Azure Portal vás vyzve k použití názvu složky, jako je /clusters/<název_clusteru> pro kořenovou cestu.

Pokud chcete jako výchozí úložiště použít Data Lake Storage Gen1, musíte instančnímu objektu udělit přístup k následujícím cestám:

  • Kořen účtu Data Lake Storage Gen1. Například: adl://mydatalakestore/.
  • Složka pro všechny složky clusteru. Například: adl://mydatalakestore/clusters.
  • Složka pro cluster. Například: adl://mydatalakestore/clusters/cluster1storage.

Další informace o vytváření instančního objektu a udělení přístupu najdete v tématu Konfigurace přístupu ke službě Data Lake Storage.

Extrahování certifikátu z Azure Keyvault pro použití při vytváření clusteru

Pokud je certifikát vašeho instančního objektu uložený ve službě Azure Key Vault, musíte certifikát převést na správný formát. Následující fragmenty kódu ukazují, jak provést převod.

Nejprve stáhněte certifikát ze služby Key Vault a extrahujte SecretValueText.

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

Potom převeďte certifikát SecretValueText na certifikát.

$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)

Pak můžete použít $identityCertificate k nasazení nového clusteru jako v následujícím fragmentu kódu:

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

Použití Data Lake Storage Gen1 jako dalšího úložiště

Data Lake Storage Gen1 můžete použít také jako další úložiště pro cluster. V takových případech může být výchozím úložištěm clusteru buď Úložiště objektů blob v Azure, nebo účet Azure Data Lake Storage Gen1. Při spouštění úloh HDInsight s daty uloženými v Azure Data Lake Storage Gen1 jako další úložiště použijte plně kvalifikovanou cestu. Příklad:

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

V adrese URL teď nejsou žádné cluster_root_path . Důvodem je to, že Data Lake Storage není v tomto případě výchozím úložištěm. Stačí tedy zadat cestu k souborům.

Pokud chcete jako další úložiště použít Data Lake Storage Gen1, udělte instančnímu objektu přístup k cestám, kam se ukládají vaše soubory. Příklad:

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

Další informace o vytváření instančního objektu a udělení přístupu najdete v tématu Konfigurace přístupu ke službě Data Lake Storage.

Použití více účtů Data Lake Storage Gen1

Přidání účtu Data Lake Storage jako dalšího a přidání více účtů Data Lake Storage je možné provést. Udělte clusteru HDInsight oprávnění k datům v jednom nebo více účtech Data Lake Storage. Viz Konfigurace přístupu ke službě Data Lake Storage Gen1.

Konfigurace přístupu ke službě Data Lake Storage Gen1

Pokud chcete nakonfigurovat přístup ke službě Azure Data Lake Storage Gen1 z clusteru HDInsight, musíte mít instanční objekt Microsoft Entra. Instanční objekt může vytvořit pouze správce Microsoft Entra. Instanční objekt musí být vytvořený s certifikátem. Další informace najdete v tématu s rychlým startem pro nastavení clusterů ve službě HDInsight a v části tématu věnované vytváření instančních objektů s certifikátem podepsaným jeho držitelem.

Poznámka:

Pokud jako další úložiště pro cluster HDInsight použijete Azure Data Lake Storage Gen1, důrazně doporučujeme tento postup provést při vytváření clusteru, jak je popsáno v tomto článku. Přidání Azure Data Lake Storage Gen1 jako dalšího úložiště do existujícího clusteru HDInsight není podporovaný scénář.

Další informace o modelu řízení přístupu najdete v tématu Řízení přístupu v Azure Data Lake Storage Gen1.

Přístup k souborům z clusteru

Existuje několik způsobů, jak získat přístup k souborům ve službě Data Lake Storage z clusteru HDInsight.

  • Pomocí plně kvalifikovaného názvu. S tímto přístupem zadáváte úplnou cestu k souboru, ke kterému chcete získat přístup.

    adl://<data_lake_account>.azuredatalakestore.net/<cluster_root_path>/<file_path>
    
  • Pomocí zkráceného formátu cesty. Tímto přístupem nahradíte cestu do kořenového adresáře clusteru takto:

    adl:///<file path>
    
  • Pomocí relativní cesty. S tímto přístupem zadáváte pouze relativní cestu k souboru, ke kterému chcete získat přístup.

    /<file.path>/
    

Příklady přístupu k datům

Příklady jsou založené na připojení ssh k hlavnímu uzlu clusteru. V příkladech se používají všechna tři schémata identifikátorů URI. Nahraďte příslušné hodnoty a CLUSTERNAME nahraďte DATALAKEACCOUNT je příslušnými hodnotami.

Několik příkazů hdfs

  1. Vytvořte soubor v místním úložišti.

    touch testFile.txt
    
  2. Vytvořte adresáře v úložišti clusteru.

    hdfs dfs -mkdir adl://DATALAKEACCOUNT.azuredatalakestore.net/clusters/CLUSTERNAME/sampledata1/
    hdfs dfs -mkdir adl:///sampledata2/
    hdfs dfs -mkdir /sampledata3/
    
  3. Zkopírujte data z místního úložiště do úložiště clusteru.

    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. Vypíše obsah adresáře v úložišti clusteru.

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

Vytvoření tabulky Hive

Pro ilustrativní účely se zobrazují tři umístění souborů. Pro skutečné spuštění použijte pouze jednu z LOCATION položek.

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/';

Identifikace cesty k úložišti z Ambari

Pokud chcete identifikovat úplnou cestu ke nakonfigurovaným výchozímu úložišti, přejděte do konfigurace HDFS>a zadejte fs.defaultFS do vstupního pole filtru.

Vytváření clusterů HDInsight s přístupem k Data Lake Storage Gen1

Podrobné pokyny k vytváření clusterů HDInsight s přístupem k Data Lake Storage Gen1 najdete na následujících odkazech.

Aktualizace certifikátu HDInsight pro přístup k Data Lake Storage Gen1

Následující příklad kódu PowerShellu načte certifikát z místního souboru nebo služby Azure Key Vault a aktualizuje cluster HDInsight novým certifikátem pro přístup ke službě Azure Data Lake Storage Gen1. Zadejte vlastní název clusteru HDInsight, název skupiny prostředků, ID předplatného, app IDmístní cestu k certifikátu. Po zobrazení výzvy zadejte heslo.

$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

Další kroky

V tomto článku jste zjistili, jak používat Azure Data Lake Storage Gen1 kompatibilní s HDFS se službou HDInsight. Toto úložiště umožňuje vytvářet přizpůsobitelná, dlouhodobá řešení pro archivaci získávání dat. Pomocí služby HDInsight můžete odemknout informace uvnitř uložených strukturovaných a nestrukturovaných dat.

Další informace naleznete v tématu: