A Data Lake Storage Gen1 használata Azure HDInsight-fürtökkel

Megjegyzés:

Új HDInsight-fürtök üzembe helyezése az Azure Data Lake Storage Gen2 használatával a jobb teljesítmény és az új funkciók érdekében.

A HDInsight-fürtön lévő adatok elemzéséhez az adatokat az 1. generációs Azure Data Lake Storage-ban vagy az Azure Data Lake Storage Gen2-benAzure Blob storage tárolhatja. Minden tárolási lehetőség lehetővé teszi a számítási célokra használt HDInsight-fürtök biztonságos törlését felhasználói adatok elvesztése nélkül.

Ebből a cikkből megtudhatja, hogyan működik a Data Lake Storage Gen1 a HDInsight-fürtökkel. Az Azure Blob Storage HDInsight-fürtökkel való működésének megismeréséhez tekintse meg az Azure Blob Storage használata Azure HDInsight-fürtökkel című témakört. A HDInsight-fürt létrehozásával kapcsolatos további információkért lásd : Apache Hadoop-fürtök létrehozása a HDInsightban.

Megjegyzés:

A Data Lake Storage Gen1 mindig biztonságos csatornán keresztül érhető el, így nincs adls fájlrendszerséma neve. Mindig adl használandó.

Megjegyzés:

We recommend that you use the Azure Az PowerShell module to interact with Azure. See Install Azure PowerShell to get started. To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

HDInsight-fürtök rendelkezésre állása

Az Apache Hadoop támogatja az alapértelmezett fájlrendszer fogalmát. Az alapértelmezett fájlrendszer egy alapértelmezett sémát és szolgáltatót is jelent. A relatív elérési utak feloldásához is használható. A HDInsight-fürtlétrehozási folyamat során alapértelmezett fájlrendszerként adjon meg egy blobtárolót az Azure Storage-ban. Vagy a HDInsight 3.5-ös és újabb verzióival az Azure Blob Storage-t vagy az Azure Data Lake Storage Gen1-et választhatja alapértelmezett fájlrendszerként néhány kivétellel. A fürtnek és a tárfióknak ugyanabban a régióban kell lennie.

A HDInsight-fürtök kétféleképpen használhatják a Data Lake Storage Gen1-et:

  • Az alapértelmezett tárolóként
  • További tárolóként az Azure Blob Storage az alapértelmezett tároló.

Jelenleg csak a HDInsight-fürttípusok/-verziók némelyike támogatja a Data Lake Storage Gen1 alapértelmezett tárolóként és további tárfiókokként való használatát:

A HDInsight-fürt típusa Data Lake Storage Gen1 alapértelmezett tárolóként A Data Lake Storage Gen1 további tárolóként Jegyzetek
HDInsight 4.0-s verzió Nem Nem Az ADLS Gen1 nem támogatott a HDInsight 4.0-s verziója esetén
A HDInsight 3.6-os verziója Igen Igen A HBase kivételével
A HDInsight 3.5-ös verziója Igen Igen A HBase kivételével
A HDInsight 3.4-es verziója Nem Igen
A HDInsight 3.3-as verziója Nem Nem
A HDInsight 3.2-es verziója Nem Igen

Figyelmeztetés

A HDInsight HBase nem támogatott az 1. generációs Azure Data Lake Storage-ban

A Data Lake Storage Gen1 további tárfiókként való használata nem befolyásolja a teljesítményt. Vagy az Azure Blob Storage-ba való olvasás vagy írás lehetősége a fürtből.

A Data Lake Storage Gen1 használata alapértelmezett tárolóként

Amikor a HDInsight alapértelmezett tárolóként a Data Lake Storage Gen1-ben van üzembe helyezve, a fürthöz kapcsolódó fájlok a Data Lake Storage-ban létrehozott mappa neveként lesznek tárolvaadl://mydatalakestore/<cluster_root_path>/<cluster_root_path>. Az egyes fürtök gyökérútvonalának megadásával több fürthöz is használhatja ugyanazt a Data Lake Storage-fiókot. Így olyan beállítással rendelkezhet, ahol:

  • Az 1. fürt használhatja az elérési utat adl://mydatalakestore/cluster1storage
  • A 2. fürt használhatja az elérési utat adl://mydatalakestore/cluster2storage

Figyelje meg, hogy mindkét fürt ugyanazt a Data Lake Storage Gen1-fiók mydatalakestore-t használja. Minden fürt rendelkezik hozzáféréssel a saját gyökér fájlrendszeréhez a Data Lake Storage-ban. Az Azure Portal üzembe helyezési felülete arra kéri, hogy a gyökérútvonalhoz használjon egy mappanevet, például a /clusters/<clustername> nevet.

A Data Lake Storage Gen1 alapértelmezett tárolóként való használatához hozzáférést kell adnia a szolgáltatásnévnek a következő elérési utakhoz:

  • A Data Lake Storage Gen1 fiókgyökere. Példa: adl://mydatalakestore/.
  • Az összes fürt mappája. Példa: adl://mydatalakestore/clusters.
  • Egy adott fürt mappája. Példa: adl://mydatalakestore/clusters/cluster1storage.

A szolgáltatásnév létrehozásával és a hozzáférés biztosításával kapcsolatos további információkért lásd a Data Lake Storage-hozzáférés konfigurálását ismertető témakört.

Tanúsítvány kinyerése az Azure Keyvaultból fürtlétrehozáshoz

Ha a szolgáltatásnév tanúsítványa az Azure Key Vaultban van tárolva, a tanúsítványt a megfelelő formátumra kell konvertálnia. Az alábbi kódrészletek bemutatják, hogyan kell elvégezni a konvertálást.

Először töltse le a tanúsítványt a Key Vaultból, és bontsa ki a SecretValueText.

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

Ezután konvertálja a SecretValueText tanúsítványt tanúsítványsá.

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

Ezután az $identityCertificate alábbi kódrészlethez hasonlóan üzembe helyezhet egy új fürtöt:

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

A Data Lake Storage Gen1 használata további tárolóként

A Data Lake Storage Gen1-et a fürt további tárolójaként is használhatja. Ilyen esetekben a fürt alapértelmezett tárolója lehet Egy Azure Blob Storage vagy egy Azure Data Lake Storage Gen1-fiók. Ha HDInsight-feladatokat futtat az 1. generációs Azure Data Lake Storage-ban tárolt adatokon további tárolóként, használja a teljes elérési utat. Például:

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

Nincs cluster_root_path az URL-címben. Ez azért van, mert ebben az esetben a Data Lake Storage nem alapértelmezett tároló. Mindössze annyit kell tennie, hogy megadja a fájlok elérési útját.

Ha a Data Lake Storage Gen1-et további tárolóként szeretné használni, adjon hozzáférést a szolgáltatásnévnek a fájlok tárolási útvonalaihoz. Például:

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

A szolgáltatásnév létrehozásával és a hozzáférés biztosításával kapcsolatos további információkért lásd a Data Lake Storage-hozzáférés konfigurálását ismertető témakört.

Több Data Lake Storage Gen1-fiók használata

A Data Lake Storage-fiók további hozzáadása és több Data Lake Storage-fiók hozzáadása is elvégezhető. Adjon engedélyt a HDInsight-fürtnek egy vagy több Data Lake Storage-fiók adataira. Lásd: Data Lake Storage Gen1-hozzáférés konfigurálása.

Data Lake Storage Gen1-hozzáférés konfigurálása

Az Azure Data Lake Storage Gen1-hozzáférés HDInsight-fürtből való konfigurálásához Microsoft Entra szolgáltatásnévvel kell rendelkeznie. Szolgáltatásnevet csak a Microsoft Entra rendszergazdája hozhat létre. A szolgáltatásnevet egy tanúsítvánnyal kell létrehozni. További információkért lásd a fürtök HDInsightban történő beállításának rövid útmutatóját és a Szolgáltatásnév létrehozása önaláírt tanúsítvánnyal témakört.

Megjegyzés:

Ha az Azure Data Lake Storage Gen1-et fogja használni a HDInsight-fürt további tárolójaként, javasoljuk, hogy ezt a fürt létrehozásakor tegye meg a jelen cikkben leírtak szerint. Az Azure Data Lake Storage Gen1 hozzáadása további tárolóként egy meglévő HDInsight-fürthöz nem támogatott forgatókönyv.

A hozzáférés-vezérlési modellről további információt az 1. generációs Azure Data Lake Storage Hozzáférés-vezérlés című témakörben talál.

Fájlok elérése a fürtből

A Data Lake Storage-ban lévő fájlokat többféleképpen is elérheti egy HDInsight-fürtből.

  • A teljes név használatával. Ezzel a módszerrel az elérni kívánt fájl teljes elérési útját megadja.

    adl://<data_lake_account>.azuredatalakestore.net/<cluster_root_path>/<file_path>
    
  • A rövidített elérésiút-formátum használatával. Ezzel a módszerrel a fürtgyökér elérési útját a következőre cseréli:

    adl:///<file path>
    
  • A relatív elérési út használatával. Ezzel a módszerrel csak az elérni kívánt fájl relatív elérési útját adja meg.

    /<file.path>/
    

Adatelérési példák

Ilyenek például a fürt fő csomópontjához tartozó ssh-kapcsolat . A példák mindhárom URI-sémát használják. Cserélje le és CLUSTERNAME cserélje le DATALAKEACCOUNT a megfelelő értékeket.

Néhány hdfs-parancs

  1. Hozzon létre egy fájlt a helyi tárolóban.

    touch testFile.txt
    
  2. Címtárak létrehozása a fürttárolóban.

    hdfs dfs -mkdir adl://DATALAKEACCOUNT.azuredatalakestore.net/clusters/CLUSTERNAME/sampledata1/
    hdfs dfs -mkdir adl:///sampledata2/
    hdfs dfs -mkdir /sampledata3/
    
  3. Adatok másolása a helyi tárolóból a fürttárolóba.

    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. Címtártartalom listázása a fürttárolóban.

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

Hive-tábla létrehozása

Három fájlhely látható szemléltetés céljából. A tényleges végrehajtáshoz csak az egyik LOCATION bejegyzést használja.

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

Az Ambari tárolási útvonalának azonosítása

A konfigurált alapértelmezett tároló teljes elérési útjának azonosításához keresse meg a HDFS-konfigurációkat>, és írja be fs.defaultFS a szűrő beviteli mezőjét.

HDInsight-fürtök létrehozása a Data Lake Storage Gen1-hez való hozzáféréssel

Az alábbi hivatkozásokon részletes útmutatást talál a HDInsight-fürtök Data Lake Storage Gen1-hez való hozzáféréssel történő létrehozásáról.

Refresh the HDInsight certificate for Data Lake Storage Gen1 access

Az alábbi példa PowerShell-kód beolvassa a tanúsítványt egy helyi fájlból vagy az Azure Key Vaultból, és frissíti a HDInsight-fürtöt az új tanúsítvánnyal az Azure Data Lake Storage Gen1 eléréséhez. Adja meg a saját HDInsight-fürt nevét, az erőforráscsoport nevét, az előfizetés azonosítóját, app IDa tanúsítvány helyi elérési útját. Amikor a rendszer kéri, írja be a jelszót.

$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

További lépések

Ebben a cikkben megtanulta, hogyan használhatja a HDFS-kompatibilis Azure Data Lake Storage Gen1-et a HDInsighttal. Ez a tároló lehetővé teszi, hogy adaptálható, hosszú távú archiválási adatgyűjtő megoldásokat hozzon létre. A HDInsight használatával pedig feloldhatja a tárolt strukturált és strukturálatlan adatokon belüli információkat.

For more information, see: