HDInsight ve Azure Data Lake Storage 1. Nesil'de Hive için performans ayarlama kılavuzu
Varsayılan ayarlar, birçok farklı kullanım örneğinde iyi performans sağlayacak şekilde ayarlanmıştır. Yoğun G/Ç kullanan sorgularda Hive, Azure Data Lake Storage 1. Nesil ile daha iyi performans elde etmek için ayarlanabilir.
Önkoşullar
- Bir Azure aboneliği. Bkz. Azure ücretsiz deneme sürümü edinme.
- bir 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 Hive çalıştırma. HDInsight'ta Hive işleri çalıştırma hakkında bilgi edinmek için bkz. HDInsight'ta Hive kullanma
- Data Lake Storage 1. Nesil performans ayarlama yönergeleri. Genel performans kavramları için bkz. Data Lake Storage 1. Nesil Performans Ayarlama Kılavuzu
Parametreler
Geliştirilmiş Data Lake Storage 1. Nesil performansı için ayar yapmak için en önemli ayarlar şunlardır:
hive.tez.container.size – her görev tarafından kullanılan bellek miktarı
tez.grouping.min-size – her eşleştiricinin en küçük boyutu
tez.grouping.max boyutlu – her eşleştiricinin maksimum boyutu
hive.exec.reducer.bytes.per.reducer – her bir azaltıcının boyutu
hive.tez.container.size - Kapsayıcı boyutu, her görev için kullanılabilir bellek miktarını belirler. Bu, Hive'da eşzamanlılığı denetlemeye yönelik ana giriştir.
tez.grouping.min-size – Bu parametre, her eşleyicinin en küçük boyutunu ayarlamanıza olanak tanır. Tez'in seçtiği eşleyici sayısı bu parametrenin değerinden küçükse, Tez burada ayarlanan değeri kullanır.
tez.grouping.max boyutlu : parametresi, her eşleyicinin boyut üst sınırını ayarlamanıza olanak tanır. Tez'in seçtiği eşleyici sayısı bu parametrenin değerinden büyükse, Tez burada ayarlanan değeri kullanır.
hive.exec.reducer.bytes.per.reducer – Bu parametre her bir azaltıcının boyutunu ayarlar. Varsayılan olarak, her azaltıcı 256 MB'tır.
Rehber
hive.exec.reducer.bytes.per.reducer ayarlayın : Veriler sıkıştırılmadığında varsayılan değer düzgün çalışır. Sıkıştırılmış veriler için, azaltıcının boyutunu azaltmanız gerekir.
set hive.tez.container.size – Her düğümde bellek yarn.nodemanager.resource.memory-mb tarafından belirtilir ve varsayılan olarak HDI kümesinde doğru şekilde ayarlanmalıdır. YARN'da uygun belleği ayarlama hakkında ek bilgi için bu gönderiye bakın.
G/Ç yoğunluklu iş yükleri, Tez kapsayıcı boyutunu azaltarak daha fazla paralellikten yararlanabilir. Bu, kullanıcıya eşzamanlılığı artıran daha fazla kapsayıcı sağlar. Ancak bazı Hive sorguları için önemli miktarda bellek gerekir (örneğin MapJoin). Görevin belleği yeterli değilse, çalışma zamanı sırasında bellek yetersiz özel durumu alırsınız. Yetersiz bellek özel durumları alırsanız, belleği artırmanız gerekir.
Çalışan veya paralellik olan eşzamanlı görev sayısı, toplam YARN belleğiyle sınırlanır. YARN kapsayıcılarının sayısı, kaç eş zamanlı görev çalıştırılacağını belirler. Düğüm başına YARN belleğini bulmak için Ambari'ye gidebilirsiniz. YARN'a gidin ve Yapılandırmalar sekmesini görüntüleyin. YARN belleği bu pencerede görüntülenir.
Toplam YARN belleği = düğümler * Düğüm başına YARN belleği YARN kapsayıcı sayısı = Toplam YARN belleği / Tez kapsayıcı boyutu
Data Lake Storage 1. Nesil kullanarak performansı geliştirmenin anahtarı eşzamanlılığı mümkün olduğunca artırmaktır. Tez, oluşturulması gereken görev sayısını otomatik olarak hesaplar, bu nedenle ayarlamanız gerekmez.
Örnek Hesaplama
8 düğüm D14 kümeniz olduğunu varsayalım.
Toplam YARN belleği = düğümler * Düğüm başına YARN belleği Toplam YARN belleği = 8 düğüm * 96 GB = 768 GB YARN kapsayıcısı sayısı = 768 GB / 3072 MB = 256
Sınırlamalar
Data Lake Storage 1. Nesil azaltma
Data Lake Storage 1. Nesil tarafından sağlanan bant genişliği sınırlarına ulaşmanız durumunda, görev hatalarını görmeye başlarsınız. Bu, görev günlüklerindeki azaltma hataları gözlemlenerek tanımlanabilir. Tez kapsayıcı boyutunu artırarak paralelliği azaltabilirsiniz. İşiniz için daha fazla eşzamanlılığa ihtiyacınız varsa lütfen bizimle iletişime geçin.
Kısıtlama alıp almadığınızdan emin olmak için istemci tarafında hata ayıklama günlüğünü etkinleştirmeniz gerekir. Bunu şu şekilde yapabilirsiniz:
Aşağıdaki özelliği Hive yapılandırmasındaki log4j özelliklerine yerleştirin. Bu işlem Ambari görünümünden yapılabilir: 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, hive günlük dosyasında HTTP 429 hata kodunu görürsünüz. Hive günlük dosyası /tmp/user>/<hive.log
Hive ayarlama hakkında daha fazla bilgi
Hive sorgularınızı ayarlamanıza yardımcı olacak birkaç blog aşağıdadır:
- HDInsight'ta Hadoop için Hive sorgularını iyileştirme
- Azure HDInsight'ta Hive sorgu dosyasını kodlama
- HDInsight'ta Hive'ı iyileştirme üzerine Ignite konuşması