Kopiowanie danych między obiektami blob usługi Azure Storage i 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, do kopiowania danych do i z magazynu klastra usługi HDInsight (WASB) na konto Data Lake Storage Gen1. W tym artykule pokazano, jak używać narzędzia DistCp.

Wymagania wstępne

Korzystanie z narzędzia DistCp z klastra usługi HDInsight z systemem 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 skonfigurowano klaster usługi HDInsight do używania Data Lake Storage Gen1 jako dodatkowego magazynu, możesz użyć narzędzia DistCp gotowego do kopiowania danych do i z konta Data Lake Storage Gen1. W tej sekcji przyjrzymy się, jak używać narzędzia DistCp.

  1. Na pulpicie użyj protokołu SSH, aby nawiązać połączenie z klastrem. Zobacz Nawiązywanie połączenia z klastrem usługi HDInsight opartym na systemie Linux. Uruchom polecenia w wierszu polecenia SSH.

  2. 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/
    

    Dane wyjściowe zawierają listę zawartości w obiekcie blob magazynu.

  3. Podobnie sprawdź, czy możesz uzyskać dostęp do konta 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 Data Lake Storage Gen1.

  4. Użyj narzędzia DistCp, aby skopiować dane z WASB do konta 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 Data Lake Storage Gen1.

  5. Podobnie użyj narzędzia DistCp, aby skopiować dane z konta 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ść folderu /myfolder na koncie 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 optymalizacji pod kątem Data Lake Storage Gen1. Liczbę równoczesnych kopii można kontrolować, ustawiając liczbę 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 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ślenie całkowitej pamięci usługi YARN — pierwszym krokiem jest określenie pamięci usługi YARN dostępnej dla klastra, w którym jest uruchamiane zadanie DistCp. 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. Aby uzyskać całkowitą pamięć usługi YARN, pomnóż pamięć usługi YARN na węzeł przy użyciu liczby węzłów w klastrze.

  • Krok 2. Oblicz liczbę maperów — wartość m jest równa ilorazowi całkowitej pamięci usługi 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 usługi YARN. Równanie, które ma dotrzeć do 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 folder zawiera różne ilości danych, a rozmiary plików w każdym folderze są różne.

  • Całkowita ilość pamięci usługi YARN — w portalu Ambari ustalisz, że pamięć usługi YARN wynosi 96 GB dla węzła D14. W związku z tym łączna ilość pamięci usługi YARN dla klastra z czterema węzłami wynosi:

    YARN memory = 4 * 96GB = 384GB

  • Liczba maperów — w portalu Ambari określasz, że rozmiar kontenera usługi 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

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 rozkłada zadania tak, aby w przypadku niepowodzenia jakiegokolwiek zadania trzeba było ponownie uruchomić to zadanie tylko zamiast całego zadania.

Ograniczenia

  • DistCp próbuje utworzyć maperów o podobnym rozmiarze, aby zoptymalizować wydajność. Zwiększenie liczby maperów może nie zawsze zwiększać wydajność.

  • Narzędzie DistCp jest ograniczone tylko do jednego mapera 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 niewielką liczbę dużych plików, podziel je na fragmenty plików 256 MB, aby zapewnić większą potencjalną współbieżność.

  • Jeśli kopiujesz z konta usługi Azure Blob Storage, zadanie kopiowania może zostać ograniczone po stronie usługi Blob Storage. Obniża to wydajność zadania kopiowania. Aby dowiedzieć się więcej na temat limitów usługi Azure Blob Storage, zobacz Azure Storage limits at Azure subscription and service limits (Limity usługi i subskrypcji platformy Azure).

Zobacz też