DistCp gebruiken om gegevens te kopiëren tussen Azure Storage-blobs en Azure Data Lake Storage Gen1

Als u een HDInsight-cluster hebt met toegang tot Azure Data Lake Storage Gen1, kunt u hadoop-ecosysteemhulpprogramma's zoals DistCp gebruiken om gegevens van en naar een HDInsight-clusteropslag (WASB) te kopiëren naar een Data Lake Storage Gen1-account. In dit artikel wordt beschreven hoe u het hulpprogramma DistCp gebruikt.

Vereisten

DistCp gebruiken vanuit een HDInsight Linux-cluster

Een HDInsight-cluster wordt geleverd met het hulpprogramma DistCp, dat kan worden gebruikt om gegevens uit verschillende bronnen naar een HDInsight-cluster te kopiëren. Als u het HDInsight-cluster hebt geconfigureerd voor het gebruik van Data Lake Storage Gen1 als extra opslag, kunt u DistCp out-of-the-box gebruiken om gegevens te kopiëren van en naar een Data Lake Storage Gen1-account. In deze sectie bekijken we hoe we het hulpprogramma DistCp kunnen gebruiken.

  1. Gebruik vanaf uw bureaublad SSH om verbinding te maken met het cluster. Zie Verbinding maken met een HDInsight-cluster op basis van Linux. Voer de opdrachten uit vanaf de SSH-prompt.

  2. Controleer of u toegang hebt tot de Azure Storage-blobs (WASB). Voer de volgende opdracht uit:

    hdfs dfs –ls wasb://<container_name>@<storage_account_name>.blob.core.windows.net/
    

    De uitvoer bevat een lijst met inhoud in de opslagblob.

  3. Controleer ook of u toegang hebt tot het Data Lake Storage Gen1-account vanuit het cluster. Voer de volgende opdracht uit:

    hdfs dfs -ls adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/
    

    De uitvoer bevat een lijst met bestanden en mappen in het Data Lake Storage Gen1-account.

  4. Gebruik DistCp om gegevens van WASB naar een Data Lake Storage Gen1-account te kopiëren.

    hadoop distcp wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/myfolder
    

    Met de opdracht wordt de inhoud van de map /example/data/gutenberg/ in WASB gekopieerd naar /myfolder in het Data Lake Storage Gen1-account.

  5. Gebruik op dezelfde manier DistCp om gegevens van een Data Lake Storage Gen1-account naar WASB te kopiëren.

    hadoop distcp adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/myfolder wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg
    

    Met de opdracht wordt de inhoud van /myfolder in de Data Lake Storage Gen1-account gekopieerd naar de map /example/data/gutenberg/ in WASB.

Prestatieoverwegingen bij het gebruik van DistCp

Omdat de laagste granulariteit van het hulpprogramma DistCp één bestand is, is het instellen van het maximum aantal gelijktijdige kopieën de belangrijkste parameter om deze te optimaliseren tegen Data Lake Storage Gen1. U kunt het aantal gelijktijdige kopieën bepalen door het aantal mappersparameter ('m') op de opdrachtregel in te stellen. Deze parameter geeft het maximum aantal mappers op dat wordt gebruikt om gegevens te kopiëren. De standaardwaarde is 20.

Voorbeeld:

 hadoop distcp wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/myfolder -m 100

Het aantal te gebruiken mappers bepalen

Hier volgen een aantal richtlijnen.

  • Stap 1: Het totale YARN-geheugen bepalen : de eerste stap is het bepalen van het YARN-geheugen dat beschikbaar is voor het cluster waarop u de DistCp-taak uitvoert. Deze informatie is beschikbaar in de Ambari-portal die is gekoppeld aan het cluster. Navigeer naar YARN en bekijk het tabblad Configuraties om het YARN-geheugen weer te geven. Als u het totale YARN-geheugen wilt ophalen, vermenigvuldigt u het YARN-geheugen per knooppunt met het aantal knooppunten in uw cluster.

  • Stap 2: Het aantal mappers berekenen : de waarde van m is gelijk aan het quotiënt van het totale YARN-geheugen, gedeeld door de grootte van de YARN-container. De informatie over de grootte van de YARN-container is ook beschikbaar in de Ambari-portal. Navigeer naar YARN en bekijk het tabblad Configuraties . De grootte van de YARN-container wordt weergegeven in dit venster. De vergelijking om het aantal mappers (m) te bereiken, is:

    m = (number of nodes * YARN memory for each node) / YARN container size

Voorbeeld:

Stel dat u vier D14v2s-knooppunten in het cluster hebt en dat u 10 TB aan gegevens wilt overdragen uit 10 verschillende mappen. Elk van de mappen bevat verschillende hoeveelheden gegevens en de bestandsgrootte binnen elke map is verschillend.

  • Totaal YARN-geheugen: vanuit de Ambari-portal bepaalt u dat het YARN-geheugen 96 GB is voor een D14-knooppunt. Het totale YARN-geheugen voor een cluster met vier knooppunten is dus:

    YARN memory = 4 * 96GB = 384GB

  • Aantal mappers: vanuit de Ambari-portal bepaalt u dat de YARN-containergrootte 3072 is voor een D14-clusterknooppunt. Het aantal mappers is dus:

    m = (4 nodes * 96GB) / 3072MB = 128 mappers

Als andere toepassingen geheugen gebruiken, kunt u ervoor kiezen om slechts een deel van het YARN-geheugen van uw cluster te gebruiken voor DistCp.

Grote gegevenssets kopiëren

Wanneer de grootte van de te verplaatsen gegevensset groot is (bijvoorbeeld > 1 TB) of als u veel verschillende mappen hebt, kunt u overwegen om meerdere DistCp-taken te gebruiken. Er is waarschijnlijk geen prestatieverbetering, maar het verspreidt de taken, zodat als een taak mislukt, u alleen die specifieke taak opnieuw hoeft te starten in plaats van de hele taak.

Beperkingen

  • DistCp probeert mappers te maken die vergelijkbaar zijn in grootte om de prestaties te optimaliseren. Als u het aantal mappers verhoogt, worden de prestaties mogelijk niet altijd verbeterd.

  • DistCp is beperkt tot slechts één mapper per bestand. Daarom moet u niet meer mappers hebben dan u bestanden hebt. Omdat DistCp slechts één mapper aan een bestand kan toewijzen, beperkt dit de hoeveelheid gelijktijdigheid die kan worden gebruikt voor het kopiëren van grote bestanden.

  • Als u een klein aantal grote bestanden hebt, splitst u deze op in bestandssegmenten van 256 MB om u meer potentiële gelijktijdigheid te bieden.

  • Als u kopieert vanuit een Azure Blob Storage-account, wordt uw kopieertaak mogelijk beperkt aan de blobopslagzijde. Dit verslechtert de prestaties van uw kopieertaak. Zie Azure Storage-limieten in Azure-abonnements- en servicelimieten voor meer informatie over de limieten van Azure Blob Storage.

Zie ook