Azure Depolama blob 'ları ve Azure Data Lake Storage 2. arasında veri kopyalamak için distcp kullanma

Genel amaçlı v2 depolama hesabı ile genel amaçlı v2 depolama hesabı arasında verileri, hiyerarşik ad alanı etkinleştirilmiş olarak kopyalamak için Distcp kullanabilirsiniz. Bu makale, DistCp aracını kullanma hakkında yönergeler sağlar.

DistCp, çeşitli komut satırı parametreleri sağlar ve kullanımınızı iyileştirmek için bu makaleyi okumanızı kesinlikle öneririz. Bu makalede, verileri hiyerarşik bir ad alanı etkin bir hesaba kopyalamak için kullanımına odaklanırken temel işlevsellik gösterilmektedir.

Önkoşullar

  • Azure aboneliği. Daha fazla bilgi edinmek için bkz. Azure Ücretsiz deneme sürümü.
  • Data Lake Storage 2. özellikleri (hiyerarşik ad alanı) olmayan mevcut bir Azure Depolama hesabı.
  • Data Lake Storage 2. özellikleri (hiyerarşik ad alanı) etkin bir Azure Depolama hesabı. bir oluşturma hakkında yönergeler için bkz. Azure Depolama hesabı oluşturma
  • Hiyerarşik ad alanı etkinleştirilmiş depolama hesabında oluşturulmuş bir kapsayıcı.
  • Hiyerarşik ad alanı özelliği etkinleştirilmiş bir depolama hesabına erişimi olan bir Azure HDInsight kümesi. daha fazla bilgi için bkz. Azure hdınsight kümeleriyle Azure Data Lake Storage 2. kullanma. Küme için Uzak Masaüstü 'Nü etkinleştirdiğinizden emin olun.

HDInsight Linux kümesinden DistCp kullanma

An HDInsight küme, farklı kaynaklardaki verileri bir HDInsight kümesine kopyalamak için kullanılabilen DistCp yardımcı programıyla birlikte gelir. hdınsight kümesini Azure Blob Depolama kullanacak şekilde yapılandırdıysanız ve birlikte Azure Data Lake Storage, verileri de kopyalamak için distcp yardımcı programı kullanılabilir. Bu bölümde, DistCp yardımcı programının nasıl kullanılacağını inceleyeceğiz.

  1. HDI kümenizde bir SSH oturumu oluşturun. daha fazla bilgi için bkz. Linux tabanlı hdınsight kümesine Bağlan.

  2. Mevcut genel amaçlı v2 hesabınıza erişip erişemeyeceğinizi doğrulayın (hiyerarşik ad alanı etkin olmadan).

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

    Çıktı, kapsayıcıdaki içeriklerin bir listesini sağlamalıdır.

  3. Benzer şekilde, küme üzerinde etkinleştirilmiş hiyerarşik ad alanı ile depolama hesabına erişip erişemeyeceğinizi doğrulayın. Şu komutu çalıştırın:

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

    Çıktı, Data Lake depolama hesabındaki dosyaların/klasörlerin bir listesini sağlamalıdır.

  4. verileri bir Data Lake Storage hesabına kopyalamak için distcp kullanın.

    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
    

    komut, Blob depolamada /example/data/gutenberg/ klasörünün içeriğini Data Lake Storage hesabındaki /myfolder klasörüne kopyalar.

  5. benzer şekilde, Data Lake Storage hesabından Blob Depolama (ile) veri kopyalamak için distcp kullanın.

    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
    

    Komutu, Data Lake Store hesabındaki /myFolder içeriğini, /example/Data/Gutenberg/ klasörüne kopyalar.

DistCp kullanırken performans konuları

distcp 'nin en düşük ayrıntı düzeyi tek bir dosya olduğundan, en fazla eşzamanlı kopya sayısını ayarlamak, Data Lake Storage karşı iyileştirmek için en önemli parametredir. Eşzamanlı kopya sayısı, komut satırındaki mappay (e) parametresinin sayısına eşittir. Bu parametre, verileri kopyalamak için kullanılan en fazla Map, eşleme sayısını belirtir. Varsayılan değer 20 ' dir.

Örnek

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

Nasıl yaparım? kullanılacak mapbir sayı mı var?

Aşağıda kullanabileceğiniz bazı yönergeler verilmiştir.

  • 1. Adım: ' varsayılan ' YARN uygulama kuyruğu için kullanılabilen toplam belleği belirleme -ilk adım, ' varsayılan ' YARN uygulama kuyruğu için kullanılabilir belleği belirlemektir. Bu bilgiler, kümeyle ilişkili olan ambarı portalında kullanılabilir. YARN ' ye gidin ve ' varsayılan ' uygulama sırasının kullanabileceği YARN belleğini görmek için configs sekmesini görüntüleyin. bu, distcp işiniz için kullanılabilir toplam bellek (aslında bir MapReduce işi).

  • 2. Adım: mapcontroller sayısını hesaplama -l DEĞERI, Yarn kapsayıcı boyutuna bölünen toplam Yarn bellek bölümüne eşittir. YARN kapsayıcı boyut bilgileri ayrıca, ambarı portalında da mevcuttur. YARN 'ye gidin ve configs sekmesini görüntüleyin. YARN kapsayıcı boyutu bu pencerede görüntülenir. Mapcontroller (e) sayısına ulaşacak denklem

    d = (düğüm sayısı * her düğüm için YARN bellek)/YARN kapsayıcı boyutu

Örnek

Bir 4X D14v2s kümeniz olduğunu ve 10 farklı klasörden 10 TB veri aktarmaya çalıştığınız varsayıyoruz. Klasörlerin her biri farklı miktarda veri içerir ve her klasör içindeki dosya boyutları farklıdır.

  • Toplam YARN belleği: Ambarı portalından, YARN belleğinin bir D14 düğümü için 96 GB olduğunu belirlersiniz. Bu nedenle, dört düğümlü küme için toplam YARN bellek:

    YARN bellek = 4 * 96GB = 384GB

  • Mapto sayısı: Ambarı portalından, YARN kapsayıcısı boyutunun bir D14 küme düğümü için 3.072 MB olduğunu belirlersiniz. Bu nedenle, Mapper sayısı şu şekilde olur:

    m = (4 düğüm * 96gb)/3072mb = 128 map72

Diğer uygulamalar bellek kullanıyorsa, DistCp için yalnızca kümenizin YARN bellek belleğinin bir kısmını kullanmayı tercih edebilirsiniz.

Büyük veri kümelerini kopyalama

Taşınacak veri kümesinin boyutu büyük olduğunda (örneğin, >1 TB) ya da birçok farklı klasör varsa, birden çok TCP işi kullanmayı göz önünde bulundurmanız gerekir. Büyük olasılıkla performans kazancı yoktur, ancak iş başarısız olursa işin tamamı yerine yalnızca belirli bir işi yeniden başlatmanız gerekir.

Sınırlamalar

  • DistCp, performansı iyileştirmek için boyut olarak benzer bir mapbir oluşturma girişiminde bulunur. Maprların sayısını artırmak performansı her zaman artırabilir.

  • DistCp dosya başına yalnızca bir Eşleyici ile sınırlıdır. Bu nedenle, dosyalarınıza sahip olduğunuz için daha fazla mapto sahibi olmanız gerekir. DistCp bir dosyaya yalnızca bir Eşleyici atayabileceği için, bu, büyük dosyaları kopyalamak için kullanılabilecek eşzamanlılık miktarını sınırlandırır.

  • Az sayıda büyük dosyanız varsa, size daha fazla eşzamanlılık sağlamak için bunları 256 MB dosya öbeklere bölmeniz gerekir.