HDInsight ve Azure Data Lake Storage 1. Nesil'de MapReduce için performans ayarlama kılavuzu
Ö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 üzerinde MapReduce kullanma. Daha fazla bilgi için bkz . HDInsight üzerinde Hadoop'ta MapReduce kullanma
- Data Lake Storage 1. Nesil için performans ayarlama yönergelerini gözden geçirin. Genel performans kavramları için bkz. Data Lake Storage 1. Nesil Performans Ayarlama Kılavuzu
Parametreler
MapReduce işlerini çalıştırırken, Data Lake Storage 1. Nesil performansını artırmak için yapılandırabileceğiniz en önemli parametreler şunlardır:
Parametre | Açıklama |
---|---|
Mapreduce.map.memory.mb |
Her eşleyiciye ayrılacak bellek miktarı. |
Mapreduce.job.maps |
İş başına eşleme görevlerinin sayısı. |
Mapreduce.reduce.memory.mb |
Her azaltıcıya ayrılacak bellek miktarı. |
Mapreduce.job.reduces |
İş başına azaltma görevlerinin sayısı. |
Mapreduce.map.memory / Mapreduce.reduce.memory
Eşleme ve/veya azaltma görevi için gereken bellek miktarına göre bu sayıyı ayarlayın. Yarn yapılandırması aracılığıyla Ambari'de ve mapreduce.reduce.memory
varsayılan değerlerini mapreduce.map.memory
görüntüleyebilirsiniz. Ambari'de YARN'a gidin ve Yapılandırmalar sekmesini görüntüleyin. YARN belleği görüntülenir.
Mapreduce.job.maps / Mapreduce.job.reduces
Bu, oluşturulacak en fazla eşleyici veya azaltıcı sayısını belirler. Bölme sayısı, MapReduce işi için kaç eşleyici oluşturulduğunu belirler. Bu nedenle, istenen eşleyici sayısından daha az bölme olduğunda istediğinizden daha az eşleyici alabilirsiniz.
Rehber
1. Adım: Çalışan iş sayısını belirleme
Varsayılan olarak, MapReduce işiniz için kümenin tamamını kullanır. Kullanılabilir kapsayıcılardan daha az eşleyici kullanarak kümenin daha azını kullanabilirsiniz. Bu belgedeki kılavuzda, uygulamanızın kümenizde çalışan tek uygulama olduğu varsayılır.
2. Adım: mapreduce.map.memory/mapreduce.reduce.memory değerini ayarlama
Eşleme ve azaltma görevleri için belleğin boyutu, işinize bağlı olacaktır. Eşzamanlılığı artırmak istiyorsanız bellek boyutunu küçültebilirsiniz. Eşzamanlı olarak çalışan görevlerin sayısı kapsayıcı sayısına bağlıdır. Eşleyici veya azaltıcı başına bellek miktarını azaltarak daha fazla kapsayıcı oluşturulabilir ve bu da eşleştiricilerin veya azaltıcıların eşzamanlı olarak çalışmasını sağlar. Bellek miktarının çok fazla azaltılması bazı işlemlerin belleğin dolmasına neden olabilir. İşinizi çalıştırırken yığın hatası alırsanız, eşleyici veya azaltıcı başına belleği artırın. Daha fazla kapsayıcı eklemek, her ek kapsayıcı için ek yük ekleyip performansı düşürebilir. Başka bir alternatif, daha fazla bellek miktarına sahip bir küme kullanarak veya kümenizdeki düğüm sayısını artırarak daha fazla bellek elde etmektir. Daha fazla bellek, daha fazla kapsayıcının kullanılmasını sağlar ve bu da daha fazla eşzamanlılık anlamına gelir.
3. Adım: Toplam YARN belleğini belirleme
mapreduce.job.maps/mapreduce.job.reduces ayarını yapmak için, kullanılabilir toplam YARN belleği miktarını göz önünde bulundurun. Bu bilgileri Ambari'de bulabilirsiniz. YARN'a gidin ve Yapılandırmalar sekmesini görüntüleyin. YARN belleği bu pencerede görüntülenir. Toplam YARN belleğini almak için YARN belleğini kümenizdeki düğüm sayısıyla çarpın.
Total YARN memory = nodes * YARN memory per node
Boş bir küme kullanıyorsanız, bellek kümenizin toplam YARN belleği olabilir. Diğer uygulamalar bellek kullanıyorsa, eşleyici veya azaltıcı sayısını kullanmak istediğiniz kapsayıcı sayısına düşürerek kümenizin belleğinin yalnızca bir bölümünü kullanmayı seçebilirsiniz.
4. Adım: YARN kapsayıcılarının sayısını hesaplama
YARN kapsayıcıları, iş için kullanılabilir eşzamanlılık miktarını belirler. Toplam YARN belleğini alın ve mapreduce.map.memory olarak bölün.
# of YARN containers = total YARN memory / mapreduce.map.memory
5. Adım: mapreduce.job.maps/mapreduce.job.reduces değerini ayarlama
mapreduce.job.maps/mapreduce.job.reduces değerini en az kullanılabilir kapsayıcı sayısına ayarlayın. Daha iyi performans elde edip etmediğinize bakmak için eşleyici ve azaltıcı sayısını artırarak daha fazla deneme yapabilirsiniz. Daha fazla eşleyicinin ek yüke sahip olacağını, bu nedenle çok fazla eşleyicinin performansı düşürebileceğini unutmayın.
CPU zamanlaması ve CPU yalıtımı varsayılan olarak kapalıdır, bu nedenle YARN kapsayıcılarının sayısı bellek tarafından kısıtlanır.
Örnek hesaplama
Şu anda 8 D14 düğümünden oluşan bir kümeniz olduğunu ve G/Ç yoğunluklu bir iş çalıştırmak istediğinizi varsayalım. Yapmanız gereken hesaplamalar şunlardır:
1. Adım: Çalışan iş sayısını belirleme
Örneğimizde, yalnızca işimizin çalıştığını varsayarız.
2. Adım: mapreduce.map.memory/mapreduce.reduce.memory değerini ayarlama
Örneğimizde G/Ç yoğunluklu bir iş çalıştırıyor ve eşleme görevleri için 3 GB belleğin yeterli olduğuna karar vereceksiniz.
mapreduce.map.memory = 3GB
3. Adım: Toplam YARN belleğini belirleme
total memory from the cluster is 8 nodes * 96GB of YARN memory for a D14 = 768GB
4. Adım: YARN kapsayıcılarının sayısını hesaplama
# of YARN containers = 768 GB of available memory / 3 GB of memory = 256
5. Adım: mapreduce.job.maps/mapreduce.job.reduces değerini ayarlama
mapreduce.map.jobs = 256
Sınırlamalar
Data Lake Storage 1. Nesil azaltma
Çok kiracılı bir hizmet olarak Data Lake Storage 1. Nesil hesap düzeyinde bant genişliği sınırlarını ayarlar. Bu sınırlara gelirseniz, görev hatalarını görmeye başlarsınız. Bu, görev günlüklerindeki azaltma hataları gözlemlenerek tanımlanabilir. İşiniz için daha fazla bant genişliğine ihtiyacınız varsa lütfen bizimle iletişime geçin.
Azaltılıp azaltılmadığınızdan emin olmak için istemci tarafında hata ayıklama günlüğünü etkinleştirmeniz gerekir. Bunu şu şekilde yapabilirsiniz:
Ambari > YARN Config > Advanced yarn-log4j > içindeki log4j özelliklerine aşağıdaki özelliği yerleştirin: log4j.logger.com.microsoft.azure.datalake.store=DEBUG
Yapılandırmanın etkili olması için tüm düğümleri/hizmeti yeniden başlatın.
Kısıtlanıyorsanız YARN günlük dosyasında HTTP 429 hata kodunu görürsünüz. YARN günlük dosyası /tmp/user>/<yarn.log
Çalıştırılacak örnekler
MapReduce'un Data Lake Storage 1. Nesil üzerinde nasıl çalıştığını göstermek için, aşağıdaki ayarlarla bir kümede çalıştırılan bazı örnek kodlar aşağıda verilmiştir:
- 16 düğüm D14v2
- HDI 3.6 çalıştıran Hadoop kümesi
Bir başlangıç noktası için MapReduce Teragen, Terasort ve Teravalidate çalıştırmaya yönelik bazı örnek komutlar aşağıda verilmiştir. Bu komutları kaynaklarınıza göre ayarlayabilirsiniz.
Teragen
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teragen -Dmapreduce.job.maps=2048 -Dmapreduce.map.memory.mb=3072 10000000000 adl://example/data/1TB-sort-input
Terasort
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar terasort -Dmapreduce.job.maps=2048 -Dmapreduce.map.memory.mb=3072 -Dmapreduce.job.reduces=512 -Dmapreduce.reduce.memory.mb=3072 adl://example/data/1TB-sort-input adl://example/data/1TB-sort-output
Teravalidate
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teravalidate -Dmapreduce.job.maps=512 -Dmapreduce.map.memory.mb=3072 adl://example/data/1TB-sort-output adl://example/data/1TB-sort-validate