Dela via


Använd DistCp för att kopiera data mellan Azure Storage-blobar och Azure Data Lake Storage Gen1

Om du har ett HDInsight-kluster med åtkomst till Azure Data Lake Storage Gen1 kan du använda Hadoop-ekosystemverktyg som DistCp för att kopiera data till och från en HDInsight-klusterlagring (WASB) till ett Data Lake Storage Gen1 konto. Den här artikeln visar hur du använder DistCp-verktyget.

Förutsättningar

Använda DistCp från ett HDInsight Linux-kluster

Ett HDInsight-kluster levereras med DistCp-verktyget, som kan användas för att kopiera data från olika källor till ett HDInsight-kluster. Om du har konfigurerat HDInsight-klustret för att använda Data Lake Storage Gen1 som ytterligare lagring kan du använda DistCp out-of-the-box för att kopiera data till och från ett Data Lake Storage Gen1-konto. I det här avsnittet tittar vi på hur du använder DistCp-verktyget.

  1. Från skrivbordet använder du SSH för att ansluta till klustret. Se Ansluta till ett Linux-baserat HDInsight-kluster. Kör kommandona från SSH-prompten.

  2. Kontrollera om du kan komma åt Azure Storage-blobarna (WASB). Kör följande kommando:

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

    Utdata innehåller en lista med innehåll i lagringsbloben.

  3. På samma sätt kontrollerar du om du kan komma åt Data Lake Storage Gen1-kontot från klustret. Kör följande kommando:

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

    Utdata innehåller en lista över filer och mappar i Data Lake Storage Gen1-kontot.

  4. Använd DistCp för att kopiera data från WASB till ett Data Lake Storage Gen1 konto.

    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
    

    Kommandot kopierar innehållet i mappen /example/data/gutenberg/ i WASB till /myfolder i Data Lake Storage Gen1-kontot.

  5. På samma sätt kan du använda DistCp för att kopiera data från ett Data Lake Storage Gen1-konto till WASB.

    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
    

    Kommandot kopierar innehållet i /myfolder i Data Lake Storage Gen1-kontot till mappen /example/data/gutenberg/ i WASB.

Prestandaöverväganden vid användning av DistCp

Eftersom DistCp-verktygets lägsta kornighet är en enda fil är det viktigaste parametern att ange det maximala antalet samtidiga kopior den viktigaste parametern för att optimera den mot Data Lake Storage Gen1. Du kan styra antalet samtidiga kopior genom att ange antalet mappningsparametrar (m) på kommandoraden. Den här parametern anger det maximala antalet mappare som används för att kopiera data. Standardvärdet är 20.

Exempel:

 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

Så här fastställer du antalet mappare som ska användas

Här är några riktlinjer som du kan använda.

  • Steg 1: Fastställ totalt YARN-minne – Det första steget är att fastställa YARN-minnet som är tillgängligt för klustret där du kör DistCp-jobbet. Den här informationen är tillgänglig i Ambari-portalen som är associerad med klustret. Gå till YARN och visa fliken Konfigurationer för att se YARN-minnet. Om du vill hämta det totala YARN-minnet multiplicerar du YARN-minnet per nod med antalet noder som du har i klustret.

  • Steg 2: Beräkna antalet mappare – värdet för m är lika med kvoten för det totala YARN-minnet dividerat med YARN-containerstorleken. Informationen om YARN-containerstorleken finns också i Ambari-portalen. Gå till YARN och visa fliken Konfigurationer . YARN-containerstorleken visas i det här fönstret. Ekvationen för att komma fram till antalet mappare (m) är:

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

Exempel:

Anta att du har fyra D14v2s-noder i klustret och vill överföra 10 TB data från 10 olika mappar. Var och en av mapparna innehåller olika mängder data och filstorlekarna i varje mapp är olika.

  • Totalt YARN-minne – Från Ambari-portalen fastställer du att YARN-minnet är 96 GB för en D14-nod. Det totala YARN-minnet för kluster med fyra noder är alltså:

    YARN memory = 4 * 96GB = 384GB

  • Antal mappare – Från Ambari-portalen fastställer du att YARN-containerstorleken är 3072 för en D14-klusternod. Så antalet mappare är:

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

Om andra program använder minne kan du välja att bara använda en del av klustrets YARN-minne för DistCp.

Kopiera stora datamängder

När storleken på den datauppsättning som ska flyttas är stor (till exempel > 1 TB) eller om du har många olika mappar bör du överväga att använda flera DistCp-jobb. Det finns förmodligen ingen prestandaökning, men det sprider ut jobben så att om ett jobb misslyckas behöver du bara starta om det specifika jobbet i stället för hela jobbet.

Begränsningar

  • DistCp försöker skapa mappningsmappare som liknar storleken för att optimera prestanda. Att öka antalet mappare kanske inte alltid ökar prestandan.

  • DistCp är begränsad till endast en mappare per fil. Därför bör du inte ha fler mappare än du har filer. Eftersom DistCp bara kan tilldela en mappare till en fil begränsar detta mängden samtidighet som kan användas för att kopiera stora filer.

  • Om du har ett litet antal stora filer delar du upp dem i filsegment på 256 MB för att ge dig mer potentiell samtidighet.

  • Om du kopierar från ett Azure Blob Storage-konto kan kopieringsjobbet begränsas på Blob Storage-sidan. Detta försämrar prestandan för kopieringsjobbet. Mer information om gränserna för Azure Blob Storage finns i Azure Storage-gränser för Azure-prenumerationer och tjänstgränser.

Se även