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

DistCp můžete použít ke kopírování dat mezi účtem úložiště pro obecné účely verze 2 a účtem úložiště pro obecné účely verze 2 s povoleným hierarchickým oborem názvů. Tento článek obsahuje pokyny k používání nástroje DistCp.

DistCp nabízí celou řadu parametrů příkazového řádku a důrazně doporučujeme, abyste si tento článek přečetli, abyste si ho mohli optimalizovat. Tento článek ukazuje základní funkce a zaměřuje se na jejich použití ke kopírování dat do účtu s povoleným hierarchickým oborem názvů.

Požadavky

  • Předplatné Azure. Další informace najdete v tématu Získání bezplatné zkušební verze Azure.
  • Existující účet Azure Storage bez povolených možností Data Lake Storage Gen2 (hierarchický obor názvů).
  • Účet služby Azure Storage s povolenými možnostmi Data Lake Storage Gen2 (hierarchický obor názvů). Pokyny k jeho vytvoření najdete v tématu Vytvoření účtu Azure Storage.
  • Kontejner, který byl vytvořen v účtu úložiště s povoleným hierarchickým oborem názvů.
  • Cluster Azure HDInsight s přístupem k účtu úložiště s povolenou funkcí hierarchického oboru názvů Další informace najdete v tématu Používání služby Azure Data Lake Storage Gen2 s clustery Azure HDInsight. Ujistěte se, že jste pro cluster povolili Vzdálenou plochu.

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 Azure Blob Storage a Azure Data Lake Storage společně, můžete k tomu, aby se data zkopírovala také pomocí nástroje DistCp. V této části se podíváme na to, jak používat nástroj DistCp.

  1. Vytvořte relaci SSH do clusteru HDI. Další informace najdete v tématu Připojení ke clusteru HDInsight se systémem Linux.

  2. Ověřte, jestli máte přístup ke stávajícímu účtu pro obecné účely V2 (bez povoleného hierarchického oboru názvů).

    hdfs dfs -ls wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/
    

    Výstup by měl obsahovat seznam obsahu v kontejneru.

  3. Podobně ověřte, jestli máte přístup k účtu úložiště s povoleným hierarchickým oborem názvů z clusteru. Spusťte následující příkaz:

    hdfs dfs -ls abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/
    

    Výstup by měl obsahovat seznam souborů nebo složek v účtu Data Lake Storage.

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

    hadoop distcp wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/example/data/gutenberg abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/myfolder
    

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

  5. Podobně použijte DistCp ke kopírování dat z účtu Data Lake Storage do služby Blob Storage (WASB).

    hadoop distcp abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/myfolder wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/example/data/gutenberg
    

    Příkaz zkopíruje obsah souboru /myfolder v účtu Data Lake Store 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 DistCp je jeden soubor, je nastavení maximálního počtu souběžných kopií nejdůležitějším parametrem pro optimalizaci proti Data Lake Storage. Počet souběžných kopií se rovná počtu parametru 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 -m 100 wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/example/data/gutenberg abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/myfolder

Návody 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 dostupné pro "výchozí" frontu aplikací YARN – Prvním krokem je určení paměti dostupné pro "výchozí" frontu aplikace YARN. Tyto informace jsou k dispozici na portálu Ambari přidruženém ke clusteru. Přejděte na YARN a zobrazte kartu Konfigurace a zobrazte paměť YARN dostupnou pro výchozí frontu aplikace. Jedná se o celkovou dostupnou paměť pro úlohu DistCp (což je ve skutečnosti úloha MapReduce).

  • 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

    m = (počet uzlů * paměť YARN pro každý uzel) / velikost kontejneru YARN

Příklad

Předpokládejme, že máte 4x cluster D14v2s a pokoušíte se 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:

    Paměť YARN = 4 × 96 GB = 384 GB

  • Počet mapovačů: Na portálu Ambari zjistíte, že velikost kontejneru YARN je 3 072 MB pro uzel clusteru D14. Počet mapovačů je tedy:

    m = (4 uzly × 96 GB) / 3072 MB = 128 mapovačů

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, měli byste zvážit použití několika úloh DistCp. Pravděpodobně nedojde k žádnému zvýšení výkonu, ale rozloží úlohy tak, že pokud nějaká úloha selže, stačí restartovat pouze tuto konkrétní úlohu, a ne celou úlohu.

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, kterou lze použít ke kopírování velkých souborů.

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