HDInsight-fürt létrehozása Azure PowerShell használatával Azure Data Lake Storage Gen1-zel (további tárolóként)

Megtudhatja, hogyan konfigurálhat további tárolóként egy HDInsight-fürtöt Azure PowerShell Azure Data Lake Storage Gen1 használatával. A HDInsight-fürt Data Lake Storage Gen1 alapértelmezett tárolóként való létrehozásával kapcsolatos utasításokért lásd: HDInsight-fürt létrehozása Data Lake Storage Gen1 alapértelmezett tárolóként.

Megjegyzés

Ha Data Lake Storage Gen1 fog további tárolóként használni a HDInsight-fürthöz, határozottan javasoljuk, hogy ezt a fürt létrehozásakor tegye meg az ebben a cikkben leírtak szerint. A Data Lake Storage Gen1 hozzáadása további tárolóként egy meglévő HDInsight-fürthöz bonyolult folyamat, és hibákra hajlamos.

A támogatott fürttípusok esetében a Data Lake Storage Gen1 használható alapértelmezett tárfiókként vagy további tárfiókként. Ha Data Lake Storage Gen1 további tárolóként használják, a fürtök alapértelmezett tárfiókja továbbra is az Azure Blob Storage (WASB) lesz, és a fürthöz kapcsolódó fájlok (például naplók stb.) továbbra is az alapértelmezett tárolóba lesznek írva, míg a feldolgozni kívánt adatok tárolhatók egy Data Lake Storage Gen1. A Data Lake Storage Gen1 további tárfiókként való használata nem befolyásolja a teljesítményt vagy a fürtből a tárolóba való olvasás/írás képességét.

A DATA LAKE STORAGE GEN1 használata a HDInsight-fürttárolóhoz

Íme néhány fontos szempont a HDInsight Data Lake Storage Gen1 való használatához:

  • Lehetőség a Data Lake Storage Gen1 hozzáféréssel rendelkező HDInsight-fürtök létrehozására, mivel további tárterület áll rendelkezésre a HDInsight 3.2-s, 3.4-ös, 3.5-ös és 3.6-os verzióihoz.

A HDInsight powershell-lel való Data Lake Storage Gen1 való használatának konfigurálása a következő lépésekből áll:

  • Data Lake Storage Gen1-fiók létrehozása
  • Hitelesítés beállítása szerepköralapú hozzáféréshez a Data Lake Storage Gen1
  • HDInsight-fürt létrehozása hitelesítéssel a Data Lake Storage Gen1
  • Tesztfeladat futtatása a fürtön

Előfeltételek

Megjegyzés

Javasoljuk, hogy az Azure-ral való interakcióhoz az Azure Az PowerShell-modult használja. Az első lépésekhez tekintse meg az Azure PowerShell telepítését ismertető szakaszt. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.

Az oktatóanyag elkezdéséhez az alábbiakkal kell rendelkeznie:

  • Egy Azure-előfizetés. Lásd: Ingyenes Azure-fiók létrehozása.

  • Az Azure PowerShell 1.0-s vagy újabb verziója. Lásd: How to install and configure Azure PowerShell (Az Azure PowerShell telepítése és konfigurálása).

  • Windows SDK. A készletet innen telepítheti. Ezzel biztonsági tanúsítványt hozhat létre.

  • Microsoft Entra szolgáltatásnév. Az oktatóanyag lépései bemutatja, hogyan hozhat létre szolgáltatásnevet Microsoft Entra ID. A szolgáltatásnév létrehozásához azonban Microsoft Entra rendszergazdának kell lennie. Ha Ön Microsoft Entra rendszergazda, kihagyhatja ezt az előfeltételt, és folytathatja az oktatóanyaggal.

    Ha Ön nem Microsoft Entra rendszergazda, nem fogja tudni végrehajtani a szolgáltatásnév létrehozásához szükséges lépéseket. Ilyen esetben a Microsoft Entra rendszergazdának először létre kell hoznia egy szolgáltatásnevet, mielőtt létrehozhat egy HDInsight-fürtöt Data Lake Storage Gen1. Emellett a szolgáltatásnevet tanúsítvány használatával kell létrehozni, az egyszerű szolgáltatás létrehozása tanúsítvánnyal című cikkben leírtak szerint.

Data Lake Storage Gen1-fiók létrehozása

Kövesse az alábbi lépéseket egy Data Lake Storage Gen1 fiók létrehozásához.

  1. Nyisson meg egy új Azure PowerShell ablakot az asztalról, és írja be a következő kódrészletet. Amikor a rendszer kéri a bejelentkezést, győződjön meg arról, hogy az előfizetés rendszergazdájaként/tulajdonosaként jelentkezik be:

    # 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"
    

    Megjegyzés

    Ha a Data Lake Storage Gen1 erőforrás-szolgáltató regisztrációjához Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid hasonló hibaüzenetet kap, lehetséges, hogy az előfizetése nincs jóváhagyva Data Lake Storage Gen1. Ezeket az utasításokat követve győződjön meg arról, hogy engedélyezi az Azure-előfizetését Data Lake Storage Gen1.

  2. A Data Lake Storage Gen1 rendelkező tárfiók egy Azure-erőforráscsoporthoz van társítva. Először hozzon létre egy Azure-erőforráscsoportot.

    $resourceGroupName = "<your new resource group name>"
    New-AzResourceGroup -Name $resourceGroupName -Location "East US 2"
    

    A következőhöz hasonló kimenetnek kell megjelennie:

    ResourceGroupName : hdiadlgrp
    Location          : eastus2
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
    
  3. Hozzon létre egy tárfiókot Data Lake Storage Gen1. A megadott fióknév csak kisbetűket és számokat tartalmazhat.

    $dataLakeStorageGen1Name = "<your new storage account with Data Lake Storage Gen1 name>"
    New-AzDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $dataLakeStorageGen1Name -Location "East US 2"
    

    A következőhöz hasonló kimenetnek kell megjelennie:

    ...
    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. Töltsön fel néhány mintaadatot a Data Lake Storage Gen1. Ezt a cikk későbbi részében használjuk annak ellenőrzésére, hogy az adatok elérhetők-e egy HDInsight-fürtből. Ha feltölthető mintaadatokra van szüksége, használhatja az Azure Data Lake Git-tárában található Ambulance Data mappát.

    $myrootdir = "/"
    Import-AzDataLakeStoreItem -AccountName $dataLakeStorageGen1Name -Path "C:\<path to data>\vehicle1_09142014.csv" -Destination $myrootdir\vehicle1_09142014.csv
    

Hitelesítés beállítása szerepköralapú hozzáféréshez a Data Lake Storage Gen1

Minden Azure-előfizetés egy Microsoft Entra ID van társítva. Az előfizetés erőforrásaihoz a Azure Portal vagy az Azure Resource Manager API használatával hozzáférő felhasználóknak és szolgáltatásoknak először ezzel a Microsoft Entra ID kell hitelesíteni magukat. A hozzáférés az Azure-előfizetésekhez és -szolgáltatásokhoz úgy adható meg, hogy hozzárendeli őket a megfelelő szerepkörhöz egy Azure-erőforráshoz. A szolgáltatások esetében a szolgáltatásnév azonosítja a szolgáltatást a Microsoft Entra ID. Ez a szakasz bemutatja, hogyan adhat hozzáférést egy alkalmazásszolgáltatáshoz, például a HDInsighthoz egy Azure-erőforráshoz (a korábban létrehozott Data Lake Storage Gen1 rendelkező tárfiókhoz), ha létrehoz egy szolgáltatásnevet az alkalmazáshoz, és szerepköröket rendel hozzá a Azure PowerShell keresztül.

Az Active Directory-hitelesítés Data Lake Storage Gen1 beállításához a következő feladatokat kell elvégeznie.

  • Önaláírt tanúsítvány létrehozása
  • Alkalmazás létrehozása Microsoft Entra ID és szolgáltatásnévben

Önaláírt tanúsítvány létrehozása

A szakasz lépéseinek végrehajtása előtt győződjön meg arról, hogy telepítve van a Windows SDK . Olyan könyvtárat is létre kell hoznia, mint például a C:\mycertdir, ahol a tanúsítvány létrejön.

  1. A PowerShell-ablakban keresse meg azt a helyet, ahová a Windows SDK-t telepítette (általában a C:\Program Files (x86)\Windows Kits\10\bin\x86MakeCert segédprogrammal hozzon létre egy önaláírt tanúsítványt és egy titkos kulcsot). Használja az alábbi parancsokat.

    $certificateFileDir = "<my certificate directory>"
    cd $certificateFileDir
    
    makecert -sv mykey.pvk -n "cn=HDI-ADL-SP" CertFile.cer -r -len 2048
    

    A rendszer kérni fogja a titkos kulcs jelszavának megadását. A parancs sikeres végrehajtása után egy CertFile.cer és mykey.pvk értéknek kell megjelennie a megadott tanúsítványkönyvtárban.

  2. A Pvk2Pfx segédprogrammal konvertálja a MakeCert által létrehozott .pvk és .cer fájlokat .pfx fájllá. Futtassa az alábbi parancsot.

    pvk2pfx -pvk mykey.pvk -spc CertFile.cer -pfx CertFile.pfx -po <password>
    

    Amikor a rendszer kéri, adja meg a korábban megadott titkos kulcs jelszavát. A -po paraméterhez megadott érték a .pfx fájlhoz társított jelszó. A parancs sikeres befejezése után a megadott tanúsítványkönyvtárban egy CertFile.pfx fájlnak is meg kell jelennie.

Microsoft Entra ID és szolgáltatásnév létrehozása

Ebben a szakaszban elvégezheti a lépéseket egy szolgáltatásnév létrehozásához egy Microsoft Entra-alkalmazáshoz, szerepkört rendelhet hozzá a szolgáltatásnévhez, és hitelesítést végezhet szolgáltatásnévként egy tanúsítvány megadásával. Futtassa az alábbi parancsokat egy alkalmazás létrehozásához Microsoft Entra ID.

  1. Illessze be a következő parancsmagokat a PowerShell-konzolablakba. Győződjön meg arról, hogy a -DisplayName tulajdonsághoz megadott érték egyedi. Emellett a -HomePage és az -IdentiferUris értékei helyőrző értékek, és nincsenek ellenőrizve.

    $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. Hozzon létre egy szolgáltatásnevet az alkalmazásazonosító használatával.

    $servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor
    
     $objectId = $servicePrincipal.Id
    
  3. Adjon hozzáférést a szolgáltatásnévnek a Data Lake Storage Gen1 mappához és a HDInsight-fürtből elérni kívánt fájlhoz. Az alábbi kódrészlet hozzáférést biztosít a tárfiók gyökeréhez a Data Lake Storage Gen1 (ahol a mintaadatfájlt kimásolta) és magához a fájlhoz.

    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
    

HDInsight Linux-fürt létrehozása további tárolóként Data Lake Storage Gen1

Ebben a szakaszban létrehozunk egy HDInsight Hadoop Linux-fürtöt, amely további tárolóként Data Lake Storage Gen1. Ebben a kiadásban a DATA LAKE STORAGE GEN1 rendelkező HDInsight-fürtnek és tárfióknak ugyanazon a helyen kell lennie.

  1. Kezdje az előfizetés bérlőazonosítójának beolvasásával. Később szüksége lesz rá.

    $tenantID = (Get-AzContext).Tenant.TenantId
    
  2. Ebben a kiadásban a Hadoop-fürtök esetében Data Lake Storage Gen1 csak a fürt további tárolójaként használható. Az alapértelmezett tároló továbbra is az Azure Blob Storage (WASB) lesz. Ezért először létrehozzuk a fürthöz szükséges tárfiókot és tárolókat.

    # 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. Hozza létre a HDInsight-fürtöt. Használja az alábbi parancsmagokat.

    # 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
    

    Miután a parancsmag sikeresen befejeződött, látnia kell egy kimenetet, amely felsorolja a fürt részleteit.

Tesztfeladatok futtatása a HDInsight-fürtön a Data Lake Storage Gen1

Miután konfigurált egy HDInsight-fürtöt, tesztfeladatokat futtathat a fürtön annak teszteléséhez, hogy a HDInsight-fürt hozzáfér-e Data Lake Storage Gen1. Ehhez futtatunk egy Hive-mintafeladatot, amely létrehoz egy táblát a tárfiókba korábban feltöltött mintaadatokkal Data Lake Storage Gen1.

Ebben a szakaszban SSH-kapcsolatot fog létrehozni a létrehozott HDInsight Linux-fürtben, és futtatja a Hive-mintalekérdezéseket.

  1. A csatlakozás után indítsa el a Hive CLI-t a következő paranccsal:

    hive
    
  2. A parancssori felület használatával adja meg a következő utasításokat, hogy létrehozhasson egy járművek nevű új táblát a Data Lake Storage Gen1 mintaadataival:

    DROP TABLE vehicles;
    CREATE EXTERNAL TABLE vehicles (str string) LOCATION 'adl://<mydatalakestoragegen1>.azuredatalakestore.net:443/';
    SELECT * FROM vehicles LIMIT 10;
    

    A következőhöz hasonló kimenetnek kell megjelennie:

    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
    

Hozzáférés Data Lake Storage Gen1 HDFS-parancsokkal

Miután konfigurálta a HDInsight-fürtöt a Data Lake Storage Gen1 használatára, a HDFS-felület parancsaival hozzáférhet az áruházhoz.

Ebben a szakaszban SSH-kapcsolatot fog létesíteni a létrehozott HDInsight Linux-fürtben, és futtatja a HDFS-parancsokat.

A csatlakozás után a következő HDFS-fájlrendszer paranccsal listázhatja a tárfiókban lévő fájlokat a Data Lake Storage Gen1.

hdfs dfs -ls adl://<storage account with Data Lake Storage Gen1 name>.azuredatalakestore.net:443/

Ennek a fájlnak az Data Lake Storage Gen1 korábban feltöltött fájlnak kell szerepelnie.

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

Az paranccsal feltölthet hdfs dfs -put néhány fájlt Data Lake Storage Gen1, majd a paranccsal hdfs dfs -ls ellenőrizheti, hogy a fájlok feltöltése sikeresen megtörtént-e.

Lásd még: