Udostępnij za pośrednictwem


Kopiowanie danych między obiektami blob usługi Azure Storage i usługą Azure Data Lake Storage za pomocą narzędzia DistCp

Za pomocą narzędzia DistCp można kopiować dane między kontem magazynu ogólnego przeznaczenia w wersji 2 a kontem magazynu ogólnego przeznaczenia w wersji 2 z włączoną hierarchiczną przestrzenią nazw. Ten artykuł zawiera instrukcje dotyczące używania narzędzia DistCp.

Narzędzie DistCp udostępnia różne parametry wiersza polecenia i zdecydowanie zachęcamy do przeczytania tego artykułu, aby zoptymalizować jego użycie. W tym artykule przedstawiono podstawowe funkcje, koncentrując się na używaniu ich do kopiowania danych na konto z włączoną hierarchiczną przestrzenią nazw.

Wymagania wstępne

Używanie narzędzia DistCp z klastra systemu Linux w usłudze HDInsight

Klaster usługi HDInsight jest dostarczany z narzędziem DistCp, które może sł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ług Azure Blob Storage i Azure Data Lake Storage razem, narzędzie DistCp może służyć do kopiowania danych między nimi. W tej sekcji przyjrzymy się, jak używać narzędzia DistCp.

  1. Utwórz sesję SSH w klastrze usługi HDInsight. Aby uzyskać więcej informacji, zobacz Connect to a Linux-based HDInsight cluster (Nawiązywanie połączenia z klastrem usługi HDInsight opartym na systemie Linux).

  2. Sprawdź, czy możesz uzyskać dostęp do istniejącego konta ogólnego przeznaczenia w wersji 2 (bez włączonej hierarchicznej przestrzeni nazw).

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

    Dane wyjściowe powinny zawierać listę zawartości w kontenerze.

  3. Podobnie sprawdź, czy możesz uzyskać dostęp do konta magazynu z włączoną hierarchiczną przestrzenią nazw z klastra. Uruchom następujące polecenie:

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

    Dane wyjściowe powinny zawierać listę plików/folderów na koncie magazynu usługi Data Lake.

  4. Użyj narzędzia DistCp, aby skopiować dane z obiektu blob usługi Windows Azure Storage (WASB) do konta usługi 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
    

    Polecenie kopiuje zawartość folderu /example/data/gutenberg/ w usłudze Blob Storage do folderu /myfolder na koncie usługi Data Lake Storage.

  5. Podobnie użyj narzędzia DistCp, aby skopiować dane z konta usługi Data Lake Storage do usługi 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
    

    Polecenie kopiuje zawartość pliku /myfolder na koncie usługi Data Lake Store do folderu /example/data/gutenberg/ w usłudze WASB.

Zagadnienia dotyczące wydajności podczas korzystania z narzędzia DistCp

Ponieważ najniższy stopień szczegółowości DistCp jest pojedynczym plikiem, ustawienie maksymalnej liczby równoczesnych kopii jest najważniejszym parametrem optymalizacji pod kątem usługi Data Lake Storage. Liczba równoczesnych kopii jest równa liczbie maperów (m) parametru w wierszu polecenia. Ten parametr określa maksymalną liczbę maperów używanych do kopiowania danych. Wartość domyślna to 20.

Przykład

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

Jak mogę określić liczbę maperów do użycia?

Oto kilka użytecznych wskazówek.

  • Krok 1. Określenie całkowitej ilości pamięci dostępnej dla kolejki aplikacji YARN "default" — pierwszym krokiem jest określenie pamięci dostępnej dla kolejki aplikacji "default" YARN. Te informacje są dostępne w portalu Ambari skojarzonym z klastrem. Przejdź do usługi YARN i wyświetl kartę Configs (Konfiguracje), aby wyświetlić pamięć usługi YARN dostępną do kolejki aplikacji domyślnej. Jest to łączna ilość dostępnej pamięci dla zadania DistCp (które jest w rzeczywistości zadaniem MapReduce).

  • 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 Ambari. Przejdź do usługi YARN i wyświetl kartę Configs (Konfiguracje). W tym oknie zostanie wyświetlony rozmiar kontenera YARN. Równanie, które ma dotrzeć do liczby maperów (m) jest

    m = (liczba węzłów * pamięć YARN dla każdego węzła) / rozmiar kontenera YARN

Przykład

Załóżmy, że masz klaster 4x D14v2s i próbujesz 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ęć 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:

    Pamięć YARN = 4 * 96 GB = 384 GB

  • Liczba maperów: w portalu Ambari ustalisz, że rozmiar kontenera YARN wynosi 3072 MB dla węzła klastra D14. Dlatego liczba maperów to:

    m = (cztery węzły * 96 GB) / 3072 MB = 128 maperów

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

Jeśli 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 jeśli jakiekolwiek zadanie nie powiedzie się, wystarczy ponownie uruchomić to konkretne zadanie, a nie całe zadanie.

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 maperów niż pliki. Ponieważ DistCp może przypisać tylko jeden maper do pliku, ogranicza to ilość współbieżności, która może służyć do kopiowania dużych plików.

  • Jeśli masz kilka dużych plików, należy podzielić je na fragmenty 256 MB, aby zapewnić większą potencjalną współbieżność.