Kopírování dat mezi objekty blob služby Azure Storage a Azure Data Lake Storage Gen1 pomocí distCp

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 ukazuje, 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 používal Data Lake Storage Gen1 jako další úložiště, můžete použít distCp k automatickému kopírování dat do a z účtu Data Lake Storage Gen1. V této části se podíváme, jak používat nástroj DistCp.

  1. Z počítače se ke clusteru připojte 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 poskytuje 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 Data Lake Storage Gen1 účtu.

    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 souboru /myfolder v účtu Data Lake Storage Gen1.

  5. Podobně pomocí distCp zkopírujte data 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 službě 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 jeho optimalizaci 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 vydělené velikostí kontejneru YARN. Informace o velikosti kontejneru YARN jsou k dispozici také na portálu Ambari. Přejděte na YARN a zobrazte kartu Konfigurace . V tomto okně se zobrazí velikost kontejneru YARN. Rovnice pro výpočet počtu mapovačů (m) je následující:

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

Příklad:

Předpokládejme, že v clusteru máte č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á množství dat a velikost souborů v každé složce se liší.

  • Celková paměť YARN – na portálu Ambari zjistíte, že paměť YARN je pro uzel D14 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 je pro uzel clusteru D14 3072. Počet mapovačů je tedy:

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

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

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

Pokud je velikost datové sady, 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ějaká úloha selže, budete muset restartovat pouze tuto konkrétní úlohu místo celé úlohy.

Omezení

  • DistCp se snaží vytvořit mapovače podobné velikosti, aby se optimalizoval výkon. 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ž máte soubory. Vzhledem k tomu, že DistCp může k souboru přiřadit pouze jeden mapovač, omezuje se tím míra souběžnosti, která se dá 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ší souběžnost.

  • Pokud kopírujete z účtu služby Azure Blob Storage, může být vaše úloha kopírování na straně úložiště objektů blob omezena. 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žeb Azure.

Viz také