Freigeben über


Verwenden von DistCp zum Kopieren von Daten zwischen Azure Storage-Blobs und Azure Data Lake Storage Gen1

Wenn Sie über einen HDInsight-Cluster mit Zugriff auf Azure Data Lake Storage Gen1 verfügen, können Sie Hadoop-Ökosystemtools wie DistCp verwenden, um Daten in einen HDInsight-Clusterspeicher (WASB) in ein Data Lake Storage Gen1-Konto zu kopieren. In diesem Artikel wird gezeigt, wie Sie das DistCp-Tool verwenden.

Voraussetzungen

Verwenden von DistCp in einem HDInsight-Linux-Cluster

Ein HDInsight-Cluster verfügt über das DistCp-Tool, mit dem Daten aus verschiedenen Quellen in einen HDInsight-Cluster kopiert werden können. Wenn Sie den HDInsight-Cluster so konfiguriert haben, dass Data Lake Storage Gen1 als zusätzlicher Speicher verwendet wird, können Sie distCp sofort verwenden, um Daten in ein Data Lake Storage Gen1-Konto zu kopieren. In diesem Abschnitt befassen wir uns mit der Verwendung des DistCp-Tools.

  1. Verwenden Sie von Ihrem Desktop aus SSH, um eine Verbindung mit dem Cluster herzustellen. Siehe Verbindung zu einem Linux-basierten HDInsight-Cluster herstellen. Führen Sie die Befehle aus der SSH-Eingabeaufforderung aus.

  2. Überprüfen Sie, ob Sie auf die Azure Storage-Blobs (WASB) zugreifen können. Führen Sie den folgenden Befehl aus:

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

    Die Ausgabe stellt eine Liste der Inhalte im Speicher-BLOB bereit.

  3. Überprüfen Sie ebenso, ob Sie über den Cluster auf das Data Lake Storage Gen1-Konto zugreifen können. Führen Sie den folgenden Befehl aus:

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

    Die Ausgabe enthält eine Liste der Dateien und Ordner im Data Lake Storage Gen1-Konto.

  4. Verwenden Sie DistCp, um Daten aus WASB in ein Data Lake Storage Gen1-Konto zu kopieren.

    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
    

    Der Befehl kopiert den Inhalt des /example/data/gutenberg/ Ordners in WASB in /myfolder im Data Lake Storage Gen1-Konto.

  5. Ebenso verwenden Sie DistCp, um Daten aus einem Data Lake Storage Gen1-Konto in WASB zu kopieren.

    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
    

    Der Befehl kopiert den Inhalt von /myfolder im Data Lake Storage Gen1-Konto in /example/data/gutenberg/ Ordner in WASB.

Überlegungen zur Leistung bei der Verwendung von DistCp

Da die niedrigste Granularität des DistCp-Tools eine einzelne Datei ist, ist das Festlegen der maximalen Anzahl gleichzeitiger Kopien der wichtigste Parameter, um sie für Data Lake Storage Gen1 zu optimieren. Sie können die Anzahl der gleichzeitigen Kopien steuern, indem Sie die Anzahl der Mapper ('m') in der Befehlszeile festlegen. Dieser Parameter gibt die maximale Anzahl von Mappers an, die zum Kopieren von Daten verwendet werden. Der Standardwert ist 20.

Beispiel:

 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

Wie man die Anzahl der zu verwendenden Mapper bestimmt

Hier ist einige Anleitung, die Sie verwenden können.

  • Schritt 1: Ermitteln des gesamten YARN-Speichers – Der erste Schritt besteht darin, den YARN-Speicher zu bestimmen, der für den Cluster verfügbar ist, in dem Sie den DistCp-Auftrag ausführen. Diese Information finden Sie im dem Cluster zugeordneten Ambari-Portal. Navigieren Sie zu YARN, und zeigen Sie die Registerkarte Configs an, um den YARN-Speicher anzuzeigen. Um den gesamten YARN-Speicher zu erhalten, multiplizieren Sie den YARN-Speicher pro Knoten mit der Anzahl der Knoten, die Sie in Ihrem Cluster haben.

  • Schritt 2: Berechnen Sie die Anzahl der Mapper: Der Wert von m entspricht dem Quotienten des YARN-Gesamtarbeitsspeichers geteilt durch die YARN-Containergröße. Die Informationen zur YARN-Containergröße sind auch im Ambari-Portal verfügbar. Navigieren Sie zu YARN, und zeigen Sie die Registerkarte Configs an. Die Größe des YARN-Containers wird in diesem Fenster angezeigt. Die Formel, um die Anzahl der Mapper (m) zu ermitteln, lautet:

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

Beispiel:

Angenommen, Sie haben vier D14v2s-Knoten im Cluster und möchten 10 TB Daten aus 10 verschiedenen Ordnern übertragen. Jeder Ordner enthält unterschiedliche Datenmengen, und auch die Dateigrößen in den einzelnen Ordnern sind unterschiedlich.

  • Gesamter YARN-Speicher – Im Ambari-Portal bestimmen Sie, dass der YARN-Speicher 96 GB für einen D14-Knoten beträgt. Für einen Cluster mit vier Knoten beträgt der YARN-Gesamtarbeitsspeicher demnach:

    YARN memory = 4 * 96GB = 384GB

  • Anzahl der Mapper – Im Ambari-Portal bestimmen Sie, dass die YARN-Containergröße 3072 für einen D14-Clusterknoten ist. Die Anzahl der Mapper ist also:

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

Wenn andere Anwendungen Arbeitsspeicher verwenden, können Sie nur einen Teil des YARN-Speichers Ihres Clusters für DistCp verwenden.

Kopieren umfangreicher Datasets

Wenn die Größe des zu verschiebenden Datasets groß ist (z. B. > 1 TB) oder wenn Sie viele verschiedene Ordner haben, sollten Sie mehrere DistCp-Aufträge verwenden. Es gibt wahrscheinlich keinen Leistungsgewinn, aber es verteilt die Aufträge, sodass Sie, wenn ein Auftrag fehlschlägt, nur diesen bestimmten Auftrag neu starten müssen, anstatt den gesamten Auftrag.

Einschränkungen

  • Zur Optimierung der Leistung versucht DistCp, Mapper mit ähnlicher Größe zu erstellen. Eine höhere Anzahl von Mappern steigert nicht zwangsläufig die Leistung.

  • DistCp ist auf einen einzelnen Mapper pro Datei beschränkt. Deshalb sollten Sie nicht mehr Mapper als Dateien haben. Da DistCp einer Datei nur eine Zuordnung zuweisen kann, beschränkt dies die Parallelität, die zum Kopieren großer Dateien verwendet werden kann.

  • Wenn Sie über eine kleine Anzahl großer Dateien verfügen, teilen Sie sie in 256-MB-Dateiblöcke auf, um Ihnen mehr potenzielle Parallelität zu bieten.

  • Wenn Sie aus einem Azure Blob Storage-Konto kopieren, wird Ihr Kopierauftrag möglicherweise auf der Blob-Speicherseite gedrosselt. Dadurch wird die Leistung Ihres Kopierauftrags beeinträchtigt. Weitere Informationen zu den Grenzwerten von Azure Blob Storage finden Sie unter Azure Storage-Grenzwerte bei Azure-Abonnement- und Dienstbeschränkungen.

Siehe auch