Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure HDInsight'ta Apache Spark uygulamalarını iyileştirme stratejilerine genel bir bakış sunulmaktadır.
Genel bakış
Olası yaygın senaryolarla karşılaşabilirsiniz
- Aynı Spark işi, aynı HDInsight kümesinde eskisinden daha yavaş çalışıyor.
- HDInsight kümesindeki Spark işi, şirket içi veya diğer üçüncü taraf hizmet sağlayıcılarına göre daha yavaş işliyor.
- Spark işi bir HDI kümesinde başka bir HDI kümesine göre daha yavaş
Apache Spark işlerinizin performansı birden çok faktöre bağlıdır. Bu performans faktörleri şunlardır:
- Verileriniz nasıl depolanır?
- Küme nasıl yapılandırılır?
- Verileri işlerken kullanılan işlemler.
- Sağlıksız yarn servisi
- Hatalı boyutlandırılmış yürütücüler ve OutOfMemoryError nedeniyle bellek kısıtlamaları
- Çok fazla görev veya çok az görev
- Veri dengesizliği birkaç ağır görev veya yavaş görevlere neden oldu
- Hatalı düğümlerde görevler daha yavaş
1. Adım: Yarn hizmetinizin iyi durumda olup olmadığını denetleyin
- Ambari kullanıcı arabirimine gidin:
- ResourceManager veya NodeManager uyarılarının olup olmadığını denetleyin
- YARN > içindeki ResourceManager ve NodeManager durumunu denetleyin: Tüm NodeManager'lar Başlatılmış durumda olmalıdır ve yalnızca Aktif ResourceManager Başlatılmış durumda olmalıdır.
Yarn kullanıcı arabiriminin erişilebilir olup olmadığını denetleyin
https://YOURCLUSTERNAME.azurehdinsight.net/yarnui/hn/clusterResourceManager kaydında herhangi bir özel durum veya hata olup olmadığını denetleyin
/var/log/hadoop-yarn/yarn/hadoop-yarn-resourcemanager-*.log
Yarn Yaygın Sorunları bölümünde daha fazla bilgi bulabilirsiniz
2. Adım: Yeni uygulama kaynaklarınızı kullanılabilir yarn kaynaklarıyla karşılaştırma
Ambari UI > YARN > ÖZET 'ine gidin, ServiceMetrics'te KÜME BELLEĞİ'ne bakın
Yarn kuyruk ölçümlerini ayrıntılı olarak denetleyin:
- Yarn kullanıcı arabirimine gidin, Yarn zamanlayıcı ölçümlerini gözden geçirin
https://YOURCLUSTERNAME.azurehdinsight.net/yarnui/hn/cluster/scheduler - Alternatif olarak Yarn Rest API aracılığıyla yarn scheduler ölçümlerini de de kontrol edebilirsiniz. Örneğin,
curl -u "xxxx" -sS -G "https://YOURCLUSTERNAME.azurehdinsight.net/ws/v1/cluster/scheduler". ESP için etki alanı yöneticisi kullanıcısını kullanmalısınız.
- Yeni uygulamanız için toplam kaynakları hesaplama
- Tüm yürütücü kaynakları:
spark.executor.instances * (spark.executor.memory + spark.yarn.executor.memoryOverhead) and spark.executor.instances * spark.executor.cores. Spark yürütücüleri yapılandırmasında daha fazla bilgi edinin - ApplicationMaster
- Küme modunda
spark.driver.memoryvespark.driver.coreskullanın. - İstemci modunda,
spark.yarn.am.memory+spark.yarn.am.memoryOverheadvespark.yarn.am.coreskullanın
- Küme modunda
Not
yarn.scheduler.minimum-allocation-mb <= spark.executor.memory+spark.yarn.executor.memoryOverhead <= yarn.scheduler.maximum-allocation-mb
- Yeni uygulama toplam kaynaklarınızı, belirtilen kuyruğunuzdaki kullanılabilir yarn kaynaklarıyla karşılaştırın
3. Adım: Spark uygulamanızı izleme
Spark kullanıcı arabirimi veya Spark Geçmişi kullanıcı arabirimi aracılığıyla aşağıdaki belirtileri tanımlamamız gerekir:
- Hangi aşama yavaş
- Aşama sekmesindeki Olay Zaman Çizelgesi'nde toplam yürütücü CPU sanal çekirdekleri tam olarak kullanılıyor mu?
- Spark SQL kullanıyorsanız SQL sekmesindeki fiziksel plan nedir?
- Bir aşamada DAG çok mu uzun?
- Aşama sekmesinde görevlerin ölçümlerini gözlemleyin (giriş boyutu, yazma boyutunu karıştırma, GC Süresi)
Spark Uygulamalarınızı izleme konusunda daha fazla bilgi edinin
4. Adım: Spark uygulamanızı iyileştirme
Önbelleğe alma ve veri dengesizliği gibi bu zorlukların üstesinden gelmenize yardımcı olabilecek birçok iyileştirme vardır.
Aşağıdaki makalelerin her birinde Spark iyileştirmesinin farklı yönleri hakkında bilgi bulabilirsiniz.
- Apache Spark için veri depolamayı iyileştirme
- Apache Spark için veri işlemeyi iyileştirme
- Apache Spark için bellek kullanımını iyileştirme
- Apache Spark için HDInsight küme yapılandırmasını iyileştirme
Spark SQL bölümlerini iyileştirme
-
spark.sql.shuffle.partitionsvarsayılan olarak 200'dür. Birleştirmeler veya toplamalar için verileri karıştırırken iş gereksinimlerine göre ayarlayabiliriz. -
spark.sql.files.maxPartitionBytesHDI'de varsayılan olarak 1G'dir. Dosyaları okurken tek bir bölüme paketlenmesi gereken bayt sayısı üst sınırı. Bu yapılandırma yalnızca Parquet, JSON ve ORC gibi dosya tabanlı kaynaklar kullanılırken geçerlidir. - Spark 3.0'da AQE. Bkz. Uyarlamalı Sorgu Yürütme