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
- Předplatné Azure. Viz Získání bezplatné zkušební verze Azure.
- Účet Azure Data Lake Storage Gen1. Pokyny k jeho vytvoření najdete v tématu Začínáme s Azure Data Lake Storage Gen1.
- Cluster Azure HDInsight s přístupem k účtu Data Lake Storage Gen1. Viz Vytvoření clusteru HDInsight s Data Lake Storage Gen1. 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 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.
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.
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ě.
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.
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.
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.