Azure Data Box ile şirket içi HDFS deposundan Azure Depolama'a geçiş
Data Box cihazı kullanarak Hadoop kümenizin şirket içi HDFS deposundaki verileri Azure Depolama'a (blob depolama veya Data Lake Storage 2. Nesil) geçirebilirsiniz. Data Box Disk, 80 TB Data Box veya 770 TB Data Box Heavy arasından seçim yapabilirsiniz.
Bu makale şu görevleri tamamlamanıza yardımcı olur:
- Verilerinizi geçirmeye hazırlanma
- Verilerinizi bir Data Box Diskine, Data Box'a veya Data Box Heavy cihazına kopyalama
- Cihazı Microsoft'a geri gönderme
- Dosyalara ve dizinlere erişim izinleri uygulama (yalnızca Data Lake Storage 2. Nesil)
Ön koşullar
Geçişi tamamlamak için bu işlemlere ihtiyacınız vardır.
Bir Azure Depolama hesabı.
Kaynak verilerinizi içeren bir şirket içi Hadoop kümesi.
Azure Data Box cihazı.
Data Box veya Data Box Heavy'nizi sipariş edin.
Data Box veya Data Box Heavy'nizin kablolarını bağlayın ve şirket içi bir ağa bağlayın.
Hazırsanız başlayalım.
Verilerinizi Data Box cihazına kopyalama
Verileriniz tek bir Data Box cihazına sığıyorsa, verileri Data Box cihazına kopyalarsınız.
Veri boyutunuz Data Box cihazının kapasitesini aşıyorsa, isteğe bağlı yordamı kullanarak verileri birden çok Data Box cihazına bölün ve bu adımı gerçekleştirin.
Şirket içi HDFS deponuzdaki verileri data Box cihazına kopyalamak için birkaç şey ayarlayıp DistCp aracını kullanırsınız.
Blob/Nesne depolamanın REST API'leri aracılığıyla Data Box cihazınıza veri kopyalamak için bu adımları izleyin. REST API arabirimi, cihazın kümenizde HDFS deposu olarak görünmesini sağlar.
VERILERI REST aracılığıyla kopyalamadan önce Data Box veya Data Box Heavy'de REST arabirimine bağlanmak için güvenlik ve bağlantı temel öğelerini belirleyin. Data Box'ın yerel web kullanıcı arabiriminde oturum açın ve Bağlan ve kopyalama sayfasına gidin. Cihazınızın Azure depolama hesaplarında, Erişim ayarları'nın altında REST'i bulun ve seçin.
Depolama hesabına eriş ve verileri karşıya yükle iletişim kutusunda Blob hizmet uç noktasını ve Depolama hesap anahtarını kopyalayın. Blob hizmeti uç noktasından
https://
ve sonundaki eğik çizgiyi atlar.Bu durumda uç nokta:
https://mystorageaccount.blob.mydataboxno.microsoftdatabox.com/
. Kullandığınız URI'nin konak kısmı:mystorageaccount.blob.mydataboxno.microsoftdatabox.com
. Bir örnek için bkz. http üzerinden REST'e nasıl Bağlan.Her düğüme uç noktayı ve Data Box veya Data Box Heavy düğüm IP adresini
/etc/hosts
ekleyin.10.128.5.42 mystorageaccount.blob.mydataboxno.microsoftdatabox.com
DNS için başka bir mekanizma kullanıyorsanız Data Box uç noktasının çözümlenebilmesini sağlamanız gerekir.
Kabuk değişkenini
azjars
veazure-storage
jar dosyalarının konumunahadoop-azure
ayarlayın. Bu dosyaları Hadoop yükleme dizini altında bulabilirsiniz.Bu dosyaların mevcut olup olmadığını belirlemek için şu komutu kullanın:
ls -l $<hadoop_install_dir>/share/hadoop/tools/lib/ | grep azure
. Yer tutucuyu<hadoop_install_dir>
Hadoop'u yüklediğiniz dizinin yoluyla değiştirin. Tam yolları kullandığınızdan emin olun.Örnekler:
azjars=$hadoop_install_dir/share/hadoop/tools/lib/hadoop-azure-2.6.0-cdh5.14.0.jar
azjars=$azjars,$hadoop_install_dir/share/hadoop/tools/lib/microsoft-windowsazure-storage-sdk-0.6.0.jar
Veri kopyalama için kullanmak istediğiniz depolama kapsayıcısını oluşturun. Bu komutun bir parçası olarak bir hedef dizin de belirtmelisiniz. Bu, bu noktada sahte bir hedef dizin olabilir.
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>
Yer tutucusunu
<blob_service_endpoint>
blob hizmet uç noktanızın adıyla değiştirin.Yer tutucuyu
<account_key>
hesabınızın erişim anahtarıyla değiştirin.Yer tutucuyu
<container-name>
kapsayıcınızın adıyla değiştirin.Yer tutucuyu
<destination_directory>
, verilerinizi kopyalamak istediğiniz dizinin adıyla değiştirin.
Kapsayıcınızın ve dizininizin oluşturulduğunu sağlamak için bir liste komutu çalıştırın.
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>/
Yer tutucusunu
<blob_service_endpoint>
blob hizmet uç noktanızın adıyla değiştirin.Yer tutucuyu
<account_key>
hesabınızın erişim anahtarıyla değiştirin.Yer tutucuyu
<container-name>
kapsayıcınızın adıyla değiştirin.
Hadoop HDFS'den Data Box Blob depolama alanına verileri daha önce oluşturduğunuz kapsayıcıya kopyalayın. Kopyaladığınız dizin bulunamazsa, komut dizini otomatik olarak oluşturur.
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>
Yer tutucusunu
<blob_service_endpoint>
blob hizmet uç noktanızın adıyla değiştirin.Yer tutucuyu
<account_key>
hesabınızın erişim anahtarıyla değiştirin.Yer tutucuyu
<container-name>
kapsayıcınızın adıyla değiştirin.Yer tutucuyu
<exlusion_filelist_file>
, dosya dışlama listenizi içeren dosyanın adıyla değiştirin.Yer tutucuyu
<source_directory>
, kopyalamak istediğiniz verileri içeren dizinin adıyla değiştirin.Yer tutucuyu
<destination_directory>
, verilerinizi kopyalamak istediğiniz dizinin adıyla değiştirin.
-libjars
seçeneği ve bağımlıazure-storage*.jar
dosyalarını için kullanılabilir hale getirmekhadoop-azure*.jar
içindistcp
kullanılır. Bu, bazı kümeler için zaten oluşabilir.Aşağıdaki örnekte, komutun
distcp
verileri kopyalamak için nasıl kullanıldığı gösterilmektedir.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/data
Kopyalama hızını artırmak için:
Eşleştirici sayısını değiştirmeyi deneyin. (Varsayılan eşleştirici sayısı 20'dir. Yukarıdaki örnekte = 4 eşleyici kullanılır
m
.)öğesini deneyin
-D fs.azure.concurrentRequestCount.out=<thread_number>
. değerini eşleyici başına iş parçacığı sayısıyla değiştirin<thread_number>
. Eşleyici sayısının ve eşleyici başınam*<thread_number>
iş parçacığı sayısının çarpımının 32'yi aşmaması gerekir.Birden çok
distcp
öğesini paralel olarak çalıştırmayı deneyin.Büyük dosyaların küçük dosyalardan daha iyi performans sergilediğini unutmayın.
200 GB'tan büyük dosyalarınız varsa, aşağıdaki parametrelerle blok boyutunu 100 MB olarak değiştirmenizi öneririz:
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
Data Box'ı Microsoft'a gönderme
Data Box cihazını hazırlamak ve Microsoft'a göndermek için bu adımları izleyin.
İlk olarak, Data Box veya Data Box Heavy'nizde göndermeye hazırlanın.
Cihaz hazırlığı tamamlandıktan sonra ÜRÜN REÇETESI dosyalarını indirin. Daha sonra Azure'a yüklenen verileri doğrulamak için bu ürün reçetesini veya bildirim dosyalarını kullanırsınız.
Cihazı kapatın ve kabloları çıkarın.
UPS ile teslim alma zamanı planlayın.
Data Box cihazları için bkz . Data Box'ınızı gönderme.
Data Box Heavy cihazları için bkz . Data Box Heavy'nizi gönderme.
Microsoft cihazınızı aldıktan sonra veri merkezi ağına bağlanır ve veriler, cihaz siparişini gönderdiğinizde belirttiğiniz depolama hesabına yüklenir. Ürün reçetesi dosyalarında tüm verilerinizin Azure'a yüklendiğini doğrulayın.
Dosyalara ve dizinlere erişim izinleri uygulama (yalnızca Data Lake Storage 2. Nesil)
Veriler Azure Depolama hesabınızda zaten var. Artık dosyalara ve dizinlere erişim izinleri uygulayacaksınız.
Dekont
Bu adım yalnızca veri deponuz olarak Azure Data Lake Storage 2. Nesil kullanıyorsanız gereklidir. Veri deponuz olarak hiyerarşik ad alanı olmayan yalnızca bir blob depolama hesabı kullanıyorsanız, bu bölümü atlayabilirsiniz.
Azure Data Lake Storage 2. Nesil etkin hesabınız için hizmet sorumlusu oluşturma
Hizmet sorumlusu oluşturmak için bkz . Nasıl yapılır: Kaynaklara erişebilen bir Microsoft Entra uygulaması ve hizmet sorumlusu oluşturmak için portalı kullanma.
Makalenin Bir role uygulamayı atama bölümündeki adımları gerçekleştirirken, Depolama Blob Veri Katkıda Bulunanı rolünü hizmet sorumlusuna atadığınızdan emin olun.
Makalenin Oturum açmak için değerleri alma bölümündeki adımları gerçekleştirirken, uygulama kimliğini ve istemci gizli dizi değerlerini bir metin dosyasına kaydedin. Yakında lazım olacak.
İzinleriyle kopyalanan dosyaların listesini oluşturma
Şirket içi Hadoop kümesinden şu komutu çalıştırın:
sudo -u hdfs ./copy-acls.sh -s /{hdfs_path} > ./filelist.json
Bu komut, izinleriyle kopyalanan dosyaların listesini oluşturur.
Dekont
HDFS'deki dosya sayısına bağlı olarak, bu komutun çalıştırılması uzun sürebilir.
Kimlik listesi oluşturma ve bunları Microsoft Entra kimliklerine eşleme
Betiği
copy-acls.py
indirin. Bu makalenin Yardımcı betikleri indirme ve kenar düğümünüzü çalıştıracak şekilde ayarlama bölümüne bakın.Benzersiz kimliklerin listesini oluşturmak için bu komutu çalıştırın.
./copy-acls.py -s ./filelist.json -i ./id_map.json -g
Bu betik, ADD tabanlı kimliklerle eşlemeniz gereken kimlikleri içeren adlı
id_map.json
bir dosya oluşturur.id_map.json
Dosyayı bir metin düzenleyicisinde açın.Dosyada görünen her JSON nesnesi için, microsoft Entra kullanıcı asıl adı (UPN) veya ObjectId (OID) özniteliğini uygun eşlenmiş kimlikle güncelleştirin
target
. İşiniz bittiğinde dosyayı kaydedin. Sonraki adımda bu dosyaya ihtiyacınız olacak.
Kopyalanan dosyalara izinler uygulama ve kimlik eşlemeleri uygulama
Data Lake Storage 2. Nesil etkin hesaba kopyaladığınız verilere izinler uygulamak için şu komutu çalıştırın:
./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>
Yer tutucuyu
<storage-account-name>
depolama hesabınızın adıyla değiştirin.Yer tutucuyu
<container-name>
kapsayıcınızın adıyla değiştirin.<application-id>
ve<client-secret>
yer tutucularını, hizmet sorumlusunu oluştururken topladığınız uygulama kimliği ve istemci gizli dizisiyle değiştirin.
Ek: Verileri birden çok Data Box cihazı arasında bölme
Verilerinizi bir Data Box cihazına taşımadan önce bazı yardımcı betikleri indirmeniz, verilerinizin bir Data Box cihazına sığacak şekilde düzenlendiğinden emin olmanız ve gereksiz dosyaları dışlamanız gerekir.
Yardımcı betikleri indirin ve kenar düğümünüzü bunları çalıştıracak şekilde ayarlayın
Şirket içi Hadoop kümenizin kenar veya baş düğümünden şu komutu çalıştırın:
git clone https://github.com/jamesbak/databox-adls-loader.git cd databox-adls-loader
Bu komut, yardımcı betikleri içeren GitHub deposunu klonlar.
Yerel bilgisayarınızda yüklü olan jq paketinin bu olduğundan emin olun.
sudo apt-get install jq
İstekler python paketini yükleyin.
pip install requests
Gerekli betiklerde yürütme izinlerini ayarlayın.
chmod +x *.py *.sh
Verilerinizin bir Data Box cihazına sığacak şekilde düzenlendiğinden emin olun
Verilerinizin boyutu tek bir Data Box cihazının boyutunu aşarsa, dosyaları birden çok Data Box cihazına depolayabileceğiniz gruplara bölebilirsiniz.
Verileriniz tekil bir Data Box cihazının boyutunu aşmazsa sonraki bölüme geçebilirsiniz.
Yükseltilmiş izinlerle, önceki bölümdeki
generate-file-list
yönergeleri izleyerek indirdiğiniz betiği çalıştırın.Komut parametrelerinin açıklaması aşağıdadır:
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'.
Oluşturulan dosya listelerini HDFS'ye kopyalayarak DistCp işi tarafından erişilebilir olmasını sağlayın.
hadoop fs -copyFromLocal {filelist_pattern} /[hdfs directory]
Gereksiz dosyaları dışlama
Bazı dizinleri DisCp işinin dışında tutmanız gerekir. Örneğin, kümeyi çalışır durumda tutan durum bilgileri içeren dizinleri hariç tutun.
DistCp işini başlatmayı planladığınız şirket içi Hadoop kümesinde, dışlamak istediğiniz dizinlerin listesini belirten bir dosya oluşturun.
Bir örnek aşağıda verilmiştir:
.*ranger/audit.*
.*/hbase/data/WALs.*
Sonraki adımlar
Data Lake Storage 2. Nesil HDInsight kümeleriyle nasıl çalıştığını öğrenin. Daha fazla bilgi için bkz. Azure HDInsight kümeleriyle Azure Data Lake Storage 2. Nesil hizmetini kullanma.