Azure Depolama blobları ile Azure Data Lake Storage 1. Nesil arasında veri kopyalamak için DistCp kullanma
Azure Data Lake Storage 1. Nesil'e erişimi olan bir HDInsight kümeniz varsa DistCp gibi Hadoop ekosistem araçlarını kullanarak hdInsight küme depolama alanına (WASB) veri kopyalayıp bir Data Lake Storage 1. Nesil hesabına kopyalayabilirsiniz. Bu makalede DistCp aracının nasıl kullanılacağı gösterilmektedir.
Önkoşullar
- Bir Azure aboneliği. Bkz. Azure ücretsiz deneme sürümü edinme.
- Azure Data Lake Storage 1. Nesil hesabı. Oluşturma yönergeleri için bkz. Azure Data Lake Storage 1. Nesil'i kullanmaya başlama.
- Data Lake Storage 1. Nesil hesabına erişimi olan Azure HDInsight kümesi. Bkz. Data Lake Storage 1. Nesil ile HDInsight kümesi oluşturma. Küme için Uzak Masaüstü'nü etkinleştirdiğinizden emin olun.
HDInsight Linux kümesinden DistCp kullanma
HDInsight kümesi, farklı kaynaklardan hdInsight kümesine veri kopyalamak için kullanılabilen DistCp aracıyla birlikte gelir. HDInsight kümesini ek depolama alanı olarak Data Lake Storage 1. Nesil kullanacak şekilde yapılandırdıysanız, Data Lake Storage 1. Nesil hesabına veri kopyalamak için DistCp'yi kullanıma açık olarak kullanabilirsiniz. Bu bölümde, DistCp aracının nasıl kullanılacağına bakacağız.
Kümeye bağlanmak için masaüstünüzden SSH kullanın. Bkz . Linux tabanlı HDInsight kümesine bağlanma. Komutları SSH isteminden çalıştırın.
Azure Depolama bloblarına (WASB) erişip erişemeyeceğinizi doğrulayın. Şu komutu çalıştırın:
hdfs dfs –ls wasb://<container_name>@<storage_account_name>.blob.core.windows.net/
Çıktı, depolama blobundaki içeriklerin listesini sağlar.
Benzer şekilde, kümeden Data Lake Storage 1. Nesil hesabına erişip erişemeyeceğinizi doğrulayın. Şu komutu çalıştırın:
hdfs dfs -ls adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/
Çıktı, Data Lake Storage 1. Nesil hesabındaki dosya ve klasörlerin listesini sağlar.
WASB'den bir Data Lake Storage 1. Nesil hesabına veri kopyalamak için DistCp kullanın.
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
komut WASB'deki /example/data/gutenberg/ klasörünün içeriğini Data Lake Storage 1. Nesil hesabındaki /myfolder klasörüne kopyalar.
Benzer şekilde, Data Lake Storage 1. Nesil bir hesaptan WASB'ye veri kopyalamak için DistCp kullanın.
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
komut, Data Lake Storage 1. Nesil hesabındaki /myfolder içeriğini WASB'deki /example/data/gutenberg/ klasörüne kopyalar.
DistCp kullanırken performansla ilgili dikkat edilmesi gerekenler
DistCp aracının en düşük ayrıntı düzeyi tek bir dosya olduğundan, en fazla eşzamanlı kopya sayısını ayarlamak, Data Lake Storage 1. Nesil karşı iyileştirmeye yönelik en önemli parametredir. Komut satırında eşleyici ('m') parametresini ayarlayarak aynı anda kopya sayısını denetleyebilirsiniz. Bu parametre, verileri kopyalamak için kullanılan en fazla eşleyici sayısını belirtir. Varsayılan değer 20'dir.
Örnek:
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
Kullanılacak eşleyici sayısını belirleme
Aşağıda kullanabileceğiniz bazı yönergeler verilmiştir.
1. Adım: Toplam YARN belleğini belirleme - İlk adım, DistCp işini çalıştırdığınız kümede kullanılabilen YARN belleğini belirlemektir. Bu bilgiler kümeyle ilişkilendirilmiş Ambari portalında bulunabilir. YARN'a gidin ve YARN belleğini görmek için Yapılandırmalar sekmesini görüntüleyin. Toplam YARN belleğini almak için düğüm başına YARN belleğini kümenizdeki düğüm sayısıyla çarpın.
2. Adım: Eşleyici sayısını hesaplama - m değeri, YARN kapsayıcı boyutuna bölünen toplam YARN belleğinin bölümüne eşittir. YARN kapsayıcı boyutu bilgileri Ambari portalında da kullanılabilir. YARN'a gidin ve Yapılandırmalar sekmesini görüntüleyin. YARN kapsayıcı boyutu bu pencerede görüntülenir. Eşleyicilerin (m) sayısına ulaşacak denklem:
m = (number of nodes * YARN memory for each node) / YARN container size
Örnek:
Kümede dört D14v2s düğümüne sahip olduğunuzu ve 10 farklı klasördeki 10 TB veriyi aktarmak istediğinizi varsayalım. Klasörlerin her biri farklı miktarlarda veri içerir ve her klasördeki dosya boyutları farklıdır.
Toplam YARN belleği - Ambari portalından, BIR D14 düğümü için YARN belleğinin 96 GB olduğunu belirlersiniz. Bu nedenle, dört düğüm kümesi için toplam YARN belleği:
YARN memory = 4 * 96GB = 384GB
Eşleyici sayısı - Ambari portalında, BIR D14 küme düğümü için YARN kapsayıcı boyutunun 3072 olduğunu belirlersiniz. Bu nedenle, eşleyicilerin sayısı:
m = (4 nodes * 96GB) / 3072MB = 128 mappers
Diğer uygulamalar bellek kullanıyorsa, DistCp için kümenizin YARN belleğinin yalnızca bir bölümünü kullanmayı seçebilirsiniz.
Büyük veri kümelerini kopyalama
Taşınacak veri kümesinin boyutu büyükse (örneğin, > 1 TB) veya birçok farklı klasörünüz varsa, birden çok DistCp işi kullanmayı göz önünde bulundurun. Büyük olasılıkla bir performans kazancı yoktur, ancak işler dağıtılır, böylece herhangi bir iş başarısız olursa, işin tamamı yerine yalnızca bu işi yeniden başlatmanız gerekir.
Sınırlamalar
DistCp, performansı iyileştirmek için boyutu benzer eşleyiciler oluşturmaya çalışır. Eşleyicilerin sayısını artırmak her zaman performansı artırmayabilir.
DistCp, dosya başına yalnızca bir eşleyici ile sınırlıdır. Bu nedenle, dosyalardan daha fazla eşleyiciniz olmamalıdır. DistCp bir dosyaya yalnızca bir eşleyici atayabileceğinden, bu büyük dosyaları kopyalamak için kullanılabilecek eşzamanlılık miktarını sınırlar.
Az sayıda büyük dosyanız varsa bunları 256 MB'lık dosya öbeklerine bölerek daha fazla eşzamanlılık elde edebilirsiniz.
Bir Azure Blob depolama hesabından kopyalama işlemi kullanıyorsanız, kopyalama işiniz Blob depolama tarafında kısıtlanmış olabilir. Bu, kopyalama işinizin performansını düşürür. Azure Blob depolamanın sınırları hakkında daha fazla bilgi edinmek için bkz. Azure aboneliği ve hizmet sınırları bölümünde Azure Depolama sınırları.