Použití DistCp ke kopírování dat mezi objekty blob služby Azure Storage a Azure Data Lake Storage Gen1

Pokud máte cluster HDInsight s přístupem k Azure Data Lake Storage Gen1, můžete pomocí ekosystémových nástrojů Hadoop, jako je DistCp, kopírovat data do a z úložiště clusteru HDInsight (WASB) do účtu Data Lake Storage Gen1. Tento článek popisuje, jak používat nástroj DistCp.

Požadavky

Použití DistCp z clusteru HDInsight s Linuxem

Cluster HDInsight se dodává s nástrojem DistCp, který lze použít ke kopírování dat z různých zdrojů do clusteru HDInsight. Pokud jste cluster HDInsight nakonfigurovali tak, aby jako další úložiště používal Data Lake Storage Gen1, můžete pomocí funkce DistCp před použitím funkce DistCp kopírovat data do a z účtu Data Lake Storage Gen1. V této části se podíváme na to, jak používat nástroj DistCp.

  1. Z počítače se připojte ke clusteru pomocí SSH. Viz Připojení ke clusteru HDInsight se systémem Linux. Spusťte příkazy z příkazového řádku SSH.

  2. Ověřte, jestli máte přístup k objektům blob služby Azure Storage (WASB). Spusťte následující příkaz:

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

    Výstup obsahuje seznam obsahu v objektu blob úložiště.

  3. Podobně ověřte, jestli máte přístup k účtu Data Lake Storage Gen1 z clusteru. Spusťte následující příkaz:

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

    Výstup obsahuje seznam souborů a složek v účtu Data Lake Storage Gen1.

  4. Pomocí DistCp zkopírujte data z WASB do účtu Data Lake Storage Gen1.

    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
    

    Příkaz zkopíruje obsah složky /example/data/gutenberg/ ve WASB do složky /myfolder v účtu Data Lake Storage Gen1.

  5. Podobně použijte DistCp ke kopírování dat z účtu Data Lake Storage Gen1 do 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
    

    Příkaz zkopíruje obsah souboru /myfolder v účtu Data Lake Storage Gen1 do složky /example/data/gutenberg/ ve wasb.

Důležité informace o výkonu při používání DistCp

Vzhledem k tomu, že nejnižší členitost nástroje DistCp je jeden soubor, je nastavení maximálního počtu souběžných kopií nejdůležitějším parametrem pro optimalizaci nástroje proti Data Lake Storage Gen1. Počet souběžných kopií můžete řídit nastavením parametru number of mappers ('m') na příkazovém řádku. Tento parametr určuje maximální počet mapovačů, které se používají ke kopírování dat. Výchozí hodnota je 20.

Příklad:

 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

Jak určit počet mapovačů, které se mají použít

Tady je několik rad, kterými se můžete řídit.

  • Krok 1: Určení celkové paměti YARN – Prvním krokem je určení paměti YARN dostupné pro cluster, ve kterém spouštíte úlohu DistCp. Tyto informace jsou k dispozici na portálu Ambari přidruženém ke clusteru. Přejděte na YARN a podívejte se na kartu Konfigurace , kde se zobrazí paměť YARN. Pokud chcete získat celkovou paměť YARN, vynásobte paměť YARN na uzel počtem uzlů, které máte v clusteru.

  • Krok 2: Výpočet počtu mapovačů – hodnota m se rovná podílu celkové paměti YARN dělené velikostí kontejneru YARN. Informace o velikosti kontejneru YARN jsou k dispozici také na portálu Ambari. Přejděte na YARN a prohlédněte si kartu Konfigurace . V tomto okně se zobrazí velikost kontejneru YARN. Rovnice pro získání počtu mapovačů (m) je:

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

Příklad:

Předpokládejme, že máte v clusteru čtyři uzly D14v2s a chcete přenést 10 TB dat z 10 různých složek. Každá ze složek obsahuje různé objemy dat a velikosti souborů v každé složce se liší.

  • Celková paměť YARN – Na portálu Ambari zjistíte, že velikost paměti YARN pro uzel D14 je 96 GB. Celková paměť YARN pro cluster se čtyřmi uzly je tedy:

    YARN memory = 4 * 96GB = 384GB

  • Počet mapovačů – Na portálu Ambari zjistíte, že velikost kontejneru YARN pro uzel clusteru D14 je 3072. Počet mapovačů je tedy následující:

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

Pokud paměť využívají jiné aplikace, můžete pro DistCp použít pouze část paměti YARN vašeho clusteru.

Kopírování velkých datových sad

Pokud je datová sada, která se má přesunout, > velká (například 1 TB) nebo pokud máte mnoho různých složek, zvažte použití více úloh DistCp. Pravděpodobně nedojde k žádnému zvýšení výkonu, ale rozloží úlohy tak, že pokud některá z úloh selže, budete muset restartovat pouze tuto konkrétní úlohu místo celé úlohy.

Omezení

  • DistCp se za účelem optimalizace výkonu pokusí vytvořit mapovače podobné velikosti. Zvýšení počtu mapovačů nemusí vždy zvýšit výkon.

  • DistCp je omezený pouze na jeden mapovač na soubor. Proto byste neměli mít více mapovačů, než kolik máte souborů. Vzhledem k tomu, že DistCp může k souboru přiřadit pouze jeden mapovač, omezuje se tím míra souběžnosti, kterou lze použít ke kopírování velkých souborů.

  • Pokud máte malý počet velkých souborů, rozdělte je do bloků souborů o velikosti 256 MB, abyste získali větší možnou souběžnost.

  • Pokud kopírujete z účtu služby Azure Blob Storage, může dojít k omezení vaší úlohy kopírování na straně úložiště objektů blob. Tím se sníží výkon vaší úlohy kopírování. Další informace o limitech služby Azure Blob Storage najdete v tématu Limity služby Azure Storage v tématu Limity předplatného a služby Azure.

Viz také