Kopiowanie danych między obiektami blob usługi Azure Storage i usługą Azure Data Lake Storage Gen1 za pomocą narzędzia DistCp
Jeśli masz klaster usługi HDInsight z dostępem do usługi Azure Data Lake Storage Gen1, możesz użyć narzędzi ekosystemu usługi Hadoop, takich jak DistCp, aby skopiować dane do i z magazynu klastra usługi HDInsight (WASB) na konto usługi Data Lake Storage Gen1. W tym artykule pokazano, jak używać narzędzia DistCp.
Wymagania wstępne
- Subskrypcja platformy Azure. Zobacz Uzyskiwanie bezpłatnej wersji próbnej platformy Azure.
- Konto usługi Azure Data Lake Storage Gen1. Aby uzyskać instrukcje dotyczące sposobu ich tworzenia, zobacz Rozpoczynanie pracy z usługą Azure Data Lake Storage Gen1.
- klaster Azure HDInsight z dostępem do konta usługi Data Lake Storage Gen1. Zobacz Create an HDInsight cluster with Data Lake Storage Gen1 (Tworzenie klastra usługi HDInsight za pomocą usługi Data Lake Storage Gen1). Upewnij się, że włączono pulpit zdalny dla klastra.
Użyj DistCp z klastra HDInsight na systemie Linux
Klaster usługi HDInsight jest dostarczany z narzędziem DistCp, którego można użyć do kopiowania danych z różnych źródeł do klastra usługi HDInsight. Jeśli klaster usługi HDInsight został skonfigurowany do używania usługi Data Lake Storage Gen1 jako dodatkowego magazynu, możesz użyć gotowego narzędzia DistCp do kopiowania danych do i z konta usługi Data Lake Storage Gen1. W tej sekcji przyjrzymy się, jak używać narzędzia DistCp.
Na pulpicie użyj protokołu SSH, aby nawiązać połączenie z klastrem. Zobacz Połącz się z klastrem HDInsight opartym na Linuksie. Uruchom polecenia z konsoli SSH.
Sprawdź, czy możesz uzyskać dostęp do obiektów blob usługi Azure Storage (WASB). Uruchom następujące polecenie:
hdfs dfs –ls wasb://<container_name>@<storage_account_name>.blob.core.windows.net/
Wynik zawiera spis zawartości w magazynowym obiekcie blob.
Podobnie sprawdź, czy możesz uzyskać dostęp do konta usługi Data Lake Storage Gen1 z klastra. Uruchom następujące polecenie:
hdfs dfs -ls adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/
Dane wyjściowe zawierają listę plików i folderów na koncie usługi Data Lake Storage Gen1.
Użyj narzędzia DistCp, aby skopiować dane z WASB na konto usługi 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
Polecenie kopiuje zawartość folderu /example/data/gutenberg/ w WASB do /myfolder na koncie usługi Data Lake Storage Gen1.
Podobnie użyj narzędzia DistCp, aby skopiować dane z konta usługi Data Lake Storage Gen1 do usługi 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
Polecenie kopiuje zawartość /myfolder na koncie usługi Data Lake Storage Gen1 do folderu /example/data/gutenberg/ w WASB.
Zagadnienia dotyczące wydajności podczas korzystania z narzędzia DistCp
Ponieważ najniższy stopień szczegółowości narzędzia DistCp jest pojedynczym plikiem, ustawienie maksymalnej liczby równoczesnych kopii jest najważniejszym parametrem zoptymalizowanym pod kątem usługi Data Lake Storage Gen1. Liczbę równoczesnych kopii można kontrolować, ustawiając parametr liczby mapperów ('m') w wierszu poleceń. Ten parametr określa maksymalną liczbę maperów używanych do kopiowania danych. Wartość domyślna to 20.
Przykład:
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 określić liczbę maperów do użycia
Oto kilka użytecznych wskazówek.
Krok 1. Określanie całkowitej pamięci usługi YARN — pierwszym krokiem jest określenie pamięci YARN dostępnej dla klastra, w którym uruchomiono zadanie DistCp. Te informacje są dostępne w portalu Ambari skojarzonym z klastrem. Przejdź do usługi YARN i wyświetl kartę Configs, aby wyświetlić pamięć usługi YARN. Aby uzyskać łączną pamięć usługi YARN, pomnożyj pamięć YARN na węzeł przez liczbę węzłów w klastrze.
Krok 2. Oblicz liczbę maperów — wartość m jest równa ilorazowi całkowitej pamięci YARN podzielonej przez rozmiar kontenera YARN. Informacje o rozmiarze kontenera usługi YARN są również dostępne w portalu systemu Ambari. Przejdź do usługi YARN i wyświetl kartę Konfiguracje. W tym oknie zostanie wyświetlony rozmiar kontenera YARN. Równanie umożliwiające obliczenie liczby maperów (m) to:
m = (number of nodes * YARN memory for each node) / YARN container size
Przykład:
Załóżmy, że masz cztery węzły D14v2s w klastrze i chcesz przenieść 10 TB danych z 10 różnych folderów. Każdy z folderów zawiera różne ilości danych, a rozmiary plików w każdym folderze są różne.
Łączna pamięć usługi YARN — w portalu Ambari ustalisz, że pamięć YARN wynosi 96 GB dla węzła D14. W związku z tym całkowita pamięć YARN dla klastra z czterema węzłami wynosi:
YARN memory = 4 * 96GB = 384GB
Liczba maperów — w portalu Ambari określono, że rozmiar kontenera YARN wynosi 3072 dla węzła klastra D14. Dlatego liczba maperów to:
m = (4 nodes * 96GB) / 3072MB = 128 mappers
Jeśli inne aplikacje używają pamięci, możesz użyć tylko części pamięci YARN klastra dla narzędzia DistCp.
Kopiowanie dużych zestawów danych
Gdy rozmiar zestawu danych do przeniesienia jest duży (na przykład > 1 TB) lub jeśli masz wiele różnych folderów, rozważ użycie wielu zadań DistCp. Prawdopodobnie nie ma żadnych korzyści z wydajności, ale rozdziela zadania tak, aby w przypadku awarii jakiegokolwiek zadania trzeba było ponownie uruchomić tylko to zadanie zamiast całego zadania.
Ograniczenia
DistCp próbuje utworzyć mappery o podobnym rozmiarze, aby zoptymalizować wydajność. Zwiększenie liczby maperów może nie zawsze zwiększać wydajność.
DistCp jest ograniczony tylko do jednego mapowania na plik. W związku z tym nie powinno być więcej mapujących niż masz plików. Ponieważ DistCp może przypisać tylko jeden maper do pliku, ogranicza to współbieżność, którą można wykorzystać do kopiowania dużych plików.
Jeśli masz niewielką liczbę dużych plików, podziel je na fragmenty 256 MB, aby zapewnić większą potencjalną współbieżność.
Jeśli kopiujesz z Azure Blob Storage, Twoje zadanie kopiowania może zostać ograniczone po stronie magazynu obiektów Blob. Obniża to wydajność zadania kopiowania. Aby dowiedzieć się więcej na temat limitów usługi Azure Blob Storage, zobacz Limity usługi Azure Storage dla subskrypcji i usług platformy Azure w .