Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dane można migrować z lokalnego magazynu systemu plików HDFS klastra Hadoop do usługi Azure Storage (magazynu obiektów blob lub usługi Data Lake Storage) przy użyciu urządzenia Data Box. Możesz wybrać z urządzeń: Data Box Disk, Data Box o pojemności 80, 120 lub 525 TiB albo Data Box Heavy o pojemności 770 TiB.
Ten artykuł ułatwia wykonywanie następujących zadań:
- Przygotowywanie do migracji danych
- Skopiuj dane do urządzenia Data Box Disk, Data Box lub Data Box Heavy
- Wysyłanie urządzenia z powrotem do firmy Microsoft
- Stosowanie uprawnień dostępu do plików i katalogów (tylko usługa Data Lake Storage)
Wymagania wstępne
Te elementy są potrzebne do ukończenia migracji.
Konto usługi Azure Storage.
Lokalny klaster Hadoop zawierający dane źródłowe.
-
Podłącz urządzenie Data Box lub Data Box Heavy do sieci lokalnej.
Jeśli wszystko będzie gotowe, zacznijmy.
Kopiowanie danych na urządzenie Data Box
Jeśli dane pasują do pojedynczego urządzenia Data Box, skopiuj dane na urządzenie Data Box.
Jeśli rozmiar danych przekracza pojemność urządzenia Data Box, użyj opcjonalnej procedury, aby podzielić dane na wiele urządzeń Data Box, a następnie wykonaj ten krok.
Aby skopiować dane z lokalnego magazynu systemu plików HDFS do urządzenia Data Box, należy skonfigurować kilka rzeczy, a następnie użyć narzędzia DistCp .
Wykonaj następujące kroki, aby skopiować dane za pośrednictwem interfejsów API REST usługi Blob/Object Storage na urządzenie Data Box. Interfejs API REST sprawia, że urządzenie jest wyświetlane jako magazyn systemu plików HDFS w klastrze.
Przed skopiowaniem danych za pośrednictwem interfejsu REST zidentyfikuj elementy pierwotne zabezpieczeń i połączeń w celu nawiązania połączenia z interfejsem REST na urządzeniu Data Box lub Data Box Heavy. Zaloguj się do lokalnego internetowego interfejsu użytkownika urządzenia Data Box i przejdź do strony Łączenie i kopiowanie . W przypadku kont magazynowych Azure dla urządzenia, w obszarze Ustawienia dostępu znajdź i wybierz opcję REST.
W oknie dialogowym Uzyskiwanie dostępu do konta magazynu i przekazywanie danych skopiuj punkt końcowy usługi Blob i klucz dostępu do konta magazynu. Z punktu końcowego usługi blob pomiń
https://i końcowy ukośnik.W takim przypadku punkt końcowy to:
https://mystorageaccount.blob.mydataboxno.microsoftdatabox.com/. Część identyfikatora URI, której używasz, dotycząca hosta, to:mystorageaccount.blob.mydataboxno.microsoftdatabox.com. Aby zapoznać się z przykładem, zobacz, jak nawiązać połączenie z interfejsem REST za pośrednictwem protokołu HTTP.
Dodaj punkt końcowy oraz adres IP urządzenia Data Box lub Data Box Heavy do
/etc/hostsna każdym węźle.10.128.5.42 mystorageaccount.blob.mydataboxno.microsoftdatabox.comJeśli używasz innego mechanizmu dla systemu DNS, upewnij się, że punkt końcowy urządzenia Data Box można rozpoznać.
Ustaw zmienną powłoki
azjarsna lokalizację plików jarhadoop-azureiazure-storage. Te pliki można znaleźć w katalogu instalacyjnym usługi Hadoop.Aby ustalić, czy te pliki istnieją, użyj następującego polecenia:
ls -l $<hadoop_install_dir>/share/hadoop/tools/lib/ | grep azure.<hadoop_install_dir>Zastąp symbol zastępczy ścieżką do katalogu, w którym zainstalowano usługę Hadoop. Pamiętaj, aby używać w pełni kwalifikowanych ścieżek.Przykłady:
azjars=$hadoop_install_dir/share/hadoop/tools/lib/hadoop-azure-2.6.0-cdh5.14.0.jarazjars=$azjars,$hadoop_install_dir/share/hadoop/tools/lib/microsoft-windowsazure-storage-sdk-0.6.0.jarUtwórz kontener magazynu, którego chcesz użyć do kopiowania danych. Należy również określić katalog docelowy w ramach tego polecenia. W tym momencie może to być fikcyjny katalog docelowy.
hadoop fs -libjars $azjars \ -D fs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \ -D fs.azure.account.key.<blob_service_endpoint>=<account_key> \ -mkdir -p wasb://<container_name>@<blob_service_endpoint>/<destination_directory>Zastąp symbol zastępczy
<blob_service_endpoint>nazwą punktu końcowego usługi obiektów blob.<account_key>Zastąp symbol zastępczy kluczem dostępu twojego konta.Zastąp element zastępczy
<container-name>nazwą kontenera.<destination_directory>Zastąp symbol zastępczy nazwą katalogu, do którego chcesz skopiować dane.
Uruchom polecenie listy, aby upewnić się, że kontener i katalog zostały utworzone.
hadoop fs -libjars $azjars \ -D fs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \ -D fs.azure.account.key.<blob_service_endpoint>=<account_key> \ -ls -R wasb://<container_name>@<blob_service_endpoint>/Zastąp symbol zastępczy
<blob_service_endpoint>nazwą punktu końcowego usługi obiektów blob.<account_key>Zastąp symbol zastępczy kluczem dostępu twojego konta.Zastąp element zastępczy
<container-name>nazwą kontenera.
Skopiuj dane z systemu plików HDFS usługi Hadoop do usługi Data Box Blob Storage do utworzonego wcześniej kontenera. Jeśli katalog, do którego kopiujesz, nie zostanie znaleziony, polecenie automatycznie go utworzy.
hadoop distcp \ -libjars $azjars \ -D fs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \ -D fs.azure.account.key.<blob_service_endpoint<>=<account_key> \ -filters <exclusion_filelist_file> \ [-f filelist_file | /<source_directory> \ wasb://<container_name>@<blob_service_endpoint>/<destination_directory>Zastąp symbol zastępczy
<blob_service_endpoint>nazwą punktu końcowego usługi obiektów blob.<account_key>Zastąp symbol zastępczy kluczem dostępu twojego konta.Zastąp element zastępczy
<container-name>nazwą kontenera.<exclusion_filelist_file>Zastąp symbol zastępczy nazwą pliku, który zawiera listę wykluczeń plików.<source_directory>Zastąp symbol zastępczy nazwą katalogu zawierającego dane, które chcesz skopiować.<destination_directory>Zastąp symbol zastępczy nazwą katalogu, do którego chcesz skopiować dane.
Opcja
-libjarssłuży do udostępniania plikówhadoop-azure*.jari zależnych plikówazure-storage*.jardladistcp. Może to już wystąpić w przypadku niektórych klastrów.W poniższym przykładzie pokazano, jak polecenie
distcpjest używane do kopiowania danych.hadoop distcp \ -libjars $azjars \ -D fs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \ -D fs.azure.account.key.mystorageaccount.blob.mydataboxno.microsoftdatabox.com=myaccountkey \ -filter ./exclusions.lst -f /tmp/copylist1 -m 4 \ /data/testfiles \ wasb://hdfscontainer@mystorageaccount.blob.mydataboxno.microsoftdatabox.com/dataAby zwiększyć szybkość kopiowania:
Spróbuj zmienić liczbę maperów. (Domyślna liczba maperów to 20. W powyższym przykładzie użyto
m= 4 maperów).Spróbuj
-D fs.azure.concurrentRequestCount.out=<thread_number>. Zastąp<thread_number>liczbą wątków na maper. Produkt liczby maperów i liczby wątków na maper,m*<thread_number>nie powinien przekraczać 32.Spróbuj uruchomić wiele
distcprównolegle.Pamiętaj, że duże pliki działają lepiej niż małe pliki.
Jeśli masz pliki większe niż 200 GB, zalecamy zmianę rozmiaru bloku na 100 MB przy użyciu następujących parametrów:
hadoop distcp \ -libjars $azjars \ -Dfs.azure.write.request.size= 104857600 \ -Dfs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \ -Dfs.azure.account.key.<blob_service_endpoint<>=<account_key> \ -strategy dynamic \ -Dmapreduce.map.memory.mb=16384 \ -Dfs.azure.concurrentRequestCount.out=8 \ -Dmapreduce.map.java.opts=-Xmx8196m \ -m 4 \ -update \ /data/bigfile wasb://hadoop@mystorageaccount.blob.core.windows.net/bigfile
Wysyłanie urządzenia Data Box do firmy Microsoft
Wykonaj następujące kroki, aby przygotować i wysłać urządzenie Data Box do firmy Microsoft.
Najpierw przygotuj urządzenie Data Box lub Data Box Heavy do wysyłki.
Po zakończeniu przygotowywania urządzenia pobierz pliki BOM. Użyjesz tych plików BOM lub manifestu później, aby zweryfikować dane przekazane na platformę Azure.
Wyłącz urządzenie i odłącz kable.
Zaplanuj odbiór przez firmę UPS.
Aby zapoznać się z urządzeniami Data Box, zobacz Wysyłanie urządzenia Data Box.
Aby uzyskać informacje o urządzeniach Data Box Heavy, zobacz Ship your Data Box Heavy (Dostarczanie urządzenia Data Box Heavy).
Po otrzymaniu przez firmę Microsoft urządzenia, zostanie ono podłączone do sieci centrum danych, a dane zostaną przesłane do konta przechowywania danych, które zostało określone podczas składania zamówienia na urządzenie. Porównaj z plikami BOM, aby upewnić się, że wszystkie Twoje dane zostały przesłane na platformę Azure.
Stosowanie uprawnień dostępu do plików i katalogów (tylko usługa Data Lake Storage)
Masz już dane na koncie usługi Azure Storage. Teraz zastosujesz uprawnienia dostępu do plików i katalogów.
Uwaga
Ten krok jest wymagany tylko wtedy, gdy używasz usługi Azure Data Lake Storage jako magazynu danych. Jeśli używasz tylko konta przechowywania obiektów blob bez hierarchicznej przestrzeni nazw jako magazynu danych, możesz pominąć tę sekcję.
Utwórz jednostkę usługi dla konta z włączoną usługą Azure Data Lake Storage
Aby utworzyć jednostkę usługi, zobacz Jak: Użyć portalu do utworzenia aplikacji Microsoft Entra i jednostki usługi, które mogą uzyskiwać dostęp do zasobów.
Wykonując kroki opisane w sekcji Przypisywanie aplikacji do roli tego artykułu, upewnij się, że przypisano rolę Współautor danych obiektów Blob w magazynie jednostce usługowej.
Podczas wykonywania kroków w sekcji Uzyskiwanie wartości logowania artykułu zapisz identyfikator aplikacji i tajne wartości klienta w pliku tekstowym. Potrzebujesz tych wkrótce.
Generowanie listy skopiowanych plików z uprawnieniami
Z lokalnego klastra Hadoop uruchom następujące polecenie:
sudo -u hdfs ./copy-acls.sh -s /{hdfs_path} > ./filelist.json
To polecenie generuje listę skopiowanych plików z ich uprawnieniami.
Uwaga
W zależności od liczby plików w systemie plików HDFS uruchomienie tego polecenia może zająć dużo czasu.
Wygeneruj listę tożsamości i mapuj je na tożsamości Microsoft Entra
copy-acls.pyPobierz skrypt. Zobacz sekcję Pobieranie skryptów pomocniczych i konfigurowanie węzła brzegowego do ich uruchomienia w tym artykule.Uruchom to polecenie, aby wygenerować listę unikatowych tożsamości.
./copy-acls.py -s ./filelist.json -i ./id_map.json -gTen skrypt generuje plik o nazwie
id_map.json, który zawiera tożsamości do zmapowania na tożsamości bazujące na Active Directory.Otwórz plik
id_map.jsonw edytorze tekstów.Dla każdego obiektu JSON wyświetlanego w pliku, zaktualizuj atrybut
targetgłównej nazwy użytkownika (UPN) lub ObjectId (OID) w Microsoft Entra przy użyciu odpowiedniej zamapowanej tożsamości. Po zakończeniu zapisz plik. Ten plik będzie potrzebny w następnym kroku.
Stosowanie uprawnień do skopiowanych plików i stosowanie mapowań tożsamości
Uruchom to polecenie, aby zastosować uprawnienia do danych skopiowanych na konto z włączoną usługą Data Lake Storage:
./copy-acls.py -s ./filelist.json -i ./id_map.json -A <storage-account-name> -C <container-name> --dest-spn-id <application-id> --dest-spn-secret <client-secret>
Zastąp symbol zastępczy
<storage-account-name>nazwą konta magazynowego.Zastąp element zastępczy
<container-name>nazwą kontenera.Zastąp symbole zastępcze
<application-id>i<client-secret>identyfikatorem aplikacji i kluczem tajnym klienta, które zebrano podczas tworzenia jednostki usługi.
Dodatek: Dzielenie danych na wiele urządzeń Data Box
Przed przeniesieniem danych na urządzenie Data Box należy pobrać skrypty pomocnika, upewnić się, że dane są zorganizowane tak, aby zmieściły się na urządzeniu Data Box i wykluczyć niepotrzebne pliki.
Pobierz skrypty pomocnicze i skonfiguruj węzeł brzegowy, aby je uruchomić
Z krawędzi lub węzła głównego lokalnego klastra Hadoop uruchom następujące polecenie:
git clone https://github.com/jamesbak/databox-adls-loader.git cd databox-adls-loaderTo polecenie klonuje repozytorium GitHub zawierające skrypty pomocnika.
Upewnij się, że pakiet jq jest zainstalowany na komputerze lokalnym.
sudo apt-get install jqZainstaluj pakiet Python Requests.
pip install requestsUstaw uprawnienia wykonywania dla wymaganych skryptów.
chmod +x *.py *.sh
Upewnij się, że dane są zorganizowane tak, aby zmieściły się na urządzeniu Data Box
Jeśli rozmiar danych przekracza rozmiar pojedynczego urządzenia Data Box, możesz podzielić pliki na grupy, które można przechowywać na wielu urządzeniach Data Box.
Jeśli dane nie przekraczają rozmiaru pojedynczego urządzenia Data Box, możesz przejść do następnej sekcji.
W przypadku podwyższonych uprawnień uruchom pobrany skrypt
generate-file-list, postępując zgodnie ze wskazówkami w poprzedniej sekcji.Oto opis parametrów polecenia:
sudo -u hdfs ./generate-file-list.py [-h] [-s DATABOX_SIZE] [-b FILELIST_BASENAME] [-f LOG_CONFIG] [-l LOG_FILE] [-v {DEBUG,INFO,WARNING,ERROR}] path where: positional arguments: path The base HDFS path to process. optional arguments: -h, --help show this help message and exit -s DATABOX_SIZE, --databox-size DATABOX_SIZE The size of each Data Box in bytes. -b FILELIST_BASENAME, --filelist-basename FILELIST_BASENAME The base name for the output filelists. Lists will be named basename1, basename2, ... . -f LOG_CONFIG, --log-config LOG_CONFIG The name of a configuration file for logging. -l LOG_FILE, --log-file LOG_FILE Name of file to have log output written to (default is stdout/stderr) -v {DEBUG,INFO,WARNING,ERROR}, --log-level {DEBUG,INFO,WARNING,ERROR} Level of log information to output. Default is 'INFO'.Skopiuj wygenerowane listy plików do systemu plików HDFS, aby były dostępne dla zadania DistCp .
hadoop fs -copyFromLocal {filelist_pattern} /[hdfs directory]
Wykluczanie niepotrzebnych plików
Należy wykluczyć niektóre katalogi z zadania narzędzia DisCp. Na przykład wyklucz katalogi zawierające informacje o stanie, które utrzymują działanie klastra.
W lokalnym klastrze Hadoop, w którym planujesz zainicjować zadanie DistCp, utwórz plik określający listę katalogów, które chcesz wykluczyć.
Oto przykład:
.*ranger/audit.*
.*/hbase/data/WALs.*
Następne kroki
Dowiedz się, jak usługa Data Lake Storage współpracuje z klastrami usługi HDInsight. Aby uzyskać więcej informacji, zobacz Use Azure Data Lake Storage with Azure HDInsight clusters (Używanie usługi Azure Data Lake Storage z klastrami usługi Azure HDInsight).