Kopírování dat mezi objekty blob služby Azure Storage a Azure Data Lake Storage pomocí DistCp
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žití nástroje DistCp.
DistCp poskytuje řadu parametrů příkazového řádku a důrazně doporučujeme, abyste si tento článek přečetli, abyste optimalizovali jeho využití. Tento článek ukazuje základní funkce a zaměřuje se na jeho 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 funkcí Data Lake Storage (hierarchický obor názvů).
- Účet Azure Storage s povolenými možnostmi Data Lake Storage (hierarchický obor názvů). Pokyny k jeho vytvoření najdete v tématu Vytvoření účtu Azure Storage.
- Kontejner 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žití služby Azure Data Lake Storage s clustery Azure HDInsight. Ujistěte se, že pro cluster povolíte 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 společně používal Azure Blob Storage a Azure Data Lake Storage, můžete k kopírování dat použít i nástroj DistCp. V této části se podíváme, jak používat nástroj DistCp.
Vytvořte relaci SSH pro cluster HDI. Další informace najdete v tématu Připojení ke clusteru HDInsight se systémem Linux.
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.
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ů a složek v účtu úložiště Data Lake.
Pomocí DistCp zkopírujte data z WASB do účtu Data Lake Storage.
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/ v úložišti objektů blob do /myfolder v účtu Data Lake Storage.
Podobně pomocí DistCp zkopírujte data z účtu Data Lake Storage do 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 /myfolder v účtu Data Lake Store do složky /example/data/gutenberg/ v WASB.
Aspekty 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 dat ve službě 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 aplikace YARN – prvním krokem je určení paměti dostupné frontě aplikace YARN výchozí. 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. Toto je celková dostupná paměť pro vaši ú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 dě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, která má přijít na počet mapovačů (m)
m = (počet uzlů * paměť YARN pro každý uzel) / Velikost kontejneru YARN
Příklad
Předpokládejme, že máte cluster 4x 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 velikosti souborů v každé složce se liší.
Celková paměť YARN: Na portálu Ambari zjistíte, že paměť YARN je 96 GB pro uzel D14. 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 mapperů
Pokud jiné aplikace používají paměť, můžete pro DistCp použít pouze část paměti YARN vašeho clusteru.
Kopírování velkých datových sad
Pokud je velikost datové sady, kterou chcete přesunout, velká (například >1 TB) nebo pokud máte mnoho různých složek, měli byste zvážit použití více úloh DistCp. Pravděpodobně nedojde k žádnému zvýšení výkonu, ale rozdělí úlohy tak, aby v případě selhání jakékoli úlohy bylo nutné restartovat tuto konkrétní úlohu, a ne celou úlohu.
Omezení
DistCp se pokusí vytvořit mappery, které mají podobnou velikost, 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 jeden 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 množství souběžnosti, které 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 na bloky souborů o velikosti 256 MB, abyste získali větší souběžnost.