Azure Databricks performans sorunlarını giderme
Bu makalede, Azure Databricks üzerinde Spark işlerinde performans sorunlarını bulmak için izleme panoları 'nın nasıl kullanılacağı açıklanır.
Azure Databricks , büyük veri analizlerini hızla geliştirmeyi ve dağıtmayı kolaylaştıran Apache Sparktabanlı bir analiz hizmetidir. Performans sorunlarını izleme ve sorun giderme, iş yüklerinin Azure Databricks iş yükleri için kritik öneme sahiptir. Yaygın performans sorunlarını belirlemek için telemetri verilerine göre izleme görselleştirmelerini kullanmak faydalıdır.
Önkoşullar
Bu makalede gösterilen Grafana panoları ayarlamak için:
Databricks kümenizi, Azure Databricks Izleme kitaplığını kullanarak bir Log Analytics çalışma alanına telemetri gönderecek şekilde yapılandırın. ayrıntılar için GitHub benioku dosyasınabakın.
Bir sanal makinede Grafana dağıtın. Azure Databricks ölçümleri görselleştirmek için panoları kullanmakonusuna bakın.
Dağıtılan Grafana panosu, zaman serisi görselleştirmeler kümesi içerir. Her bir grafik, bir Apache Spark işle ilgili ölçüm, işin aşamaları ve her bir aşamayı oluşturan görevler için zaman serisi çizisidir.
Azure Databricks performansa genel bakış
Azure Databricks, genel amaçlı dağıtılmış bir bilgi işlem sistemi olan Apache Spark temel alır. İşolarak bilinen uygulama kodu, Küme Yöneticisi tarafından koordine edilen bir Apache Spark kümesinde yürütülür. Genel olarak, bir iş en üst düzey hesaplama birimidir. Bir iş Spark uygulaması tarafından gerçekleştirilen tamamlanmış işlemi temsil eder. Tipik bir işlem, bir kaynaktan veri okumayı, veri dönüştürmelerini uygulamayı ve sonuçları depolamaya veya başka bir hedefe yazmayı içerir.
İşler aşamalarhalinde bölünür. İş aşamalı olarak ilerler, bu da sonraki aşamaların daha önceki aşamaların tamamlanmasını beklemesi gerektiği anlamına gelir. Aşamalar, Spark kümesinin birden çok düğümünde paralel olarak yürütülebilecek aynı görev gruplarını içerir. Görevler, verilerin bir alt kümesinde gerçekleşirken en ayrıntılı yürütme birimidir.
Sonraki bölümlerde, performans sorunlarını gidermek için yararlı olan bazı Pano görselleştirmeleri açıklanır.
İş ve aşama gecikmesi
İş gecikmesi, tamamlanana kadar başladığı bir iş yürütme süresi olur. Mantıksal nesnelerin görselleştirmesine izin vermek için, küme ve uygulama KIMLIĞI başına iş yürütmesinin yüzdebirlik değeri olarak gösterilir. Aşağıdaki grafikte, 50. yüzdebirlik 10 saniye içinde sürekli olduğu halde 90. yüzdebirlik değerinin 50 saniyeye ulaştığı bir iş geçmişi gösterilmektedir.

Gecikme süresi boyunca ani artışlar arayan, küme ve uygulama tarafından iş yürütmeyi araştırın. Yüksek gecikme süresine sahip kümeler ve uygulamalar tanımlandıktan sonra, aşama gecikmesini araştırmak için üzerinde geçiş yapın.
Aşama gecikmesi Ayrıca, aykırı ların görselleştirmesine izin vermek için yüzdebirlik değeri olarak gösterilir. Aşama gecikmesi küme, uygulama ve aşama adına göre bölünür. Hangi görevlerin aşamanın tamamlandığını geri tuttuklarını belirlemek için grafikteki görev gecikmesinin sivri artışlarını belirler.

Küme üretilen iş grafiği, dakikada tamamlanan işlerin, aşamaların ve görevlerin sayısını gösterir. Bu, iş yükünü iş başına göreli aşama ve görev sayısı açısından anlamanıza yardımcı olur. Burada, dakika başına iş sayısının 2 ve 6 arasında olduğunu, aşamaların sayısının dakikada yaklaşık 12 – 24 olduğunu görebilirsiniz.

Görev yürütme gecikmesi toplamı
Bu görselleştirme, bir kümede çalışan ana bilgisayar başına görev yürütme gecikme süresinin toplamını gösterir. Ana bilgisayar bir kümede yavaşlamama veya yürütücü başına hatalı görev ayırma nedeniyle yavaş çalışan görevleri algılamak için bu grafiği kullanın. Aşağıdaki grafikte, çoğu konağın en fazla 30 saniyelik bir toplamı vardır. Ancak, ana bilgisayarların ikisi de 10 dakikadan kısa bir süre içinde yer alan toplamlara sahiptir. Konaklar yavaş çalışıyor ya da Yürütücü başına görev sayısı hatalı ayrıldı.

Yürütücü başına görev sayısı, iki yürütmelere orantısız sayıda görev atandığını ve performans sorununa neden olduğunu gösterir.

Aşama başına görev ölçümleri
Görev ölçümleri görselleştirmesi, bir görev yürütmesinin maliyet dökümünü sağlar. Bunu kullanarak, serileştirme ve seri durumundan çıkarma gibi görevlerde harcanan göreli süreyi görebilirsiniz. Bu veriler, verileri teslim etmek için yayın değişkenlerini kullanarak, en iyileştirmek üzere fırsatları gösterebilir. Görev ölçümleri Ayrıca bir görev için karışık veri boyutunu ve okuma ve yazma zamanlarını karışık olarak gösterir. Bu değerler yüksekse, çok fazla verinin ağ üzerinden hareket ettirilmesi anlamına gelir.
Başka bir görev ölçümü, bir görevi zamanlamak için geçen süreyi ölçen Zamanlayıcı gecikmesi olur. İdeal olarak, bu değer, görevi gerçekten yürütmek için harcanan süre olan Yürütücü işlem süresine kıyasla düşük olmalıdır.
Aşağıdaki grafikte, Yürütücü işlem süresini (1,1 s) aşan bir Zamanlayıcı gecikme süresi (3,7 s) gösterilmektedir. Bu da daha fazla zaman, görevlerin fiili çalışmayı yapmaktan önce zamanlanmasını beklerken harcanacaktır.

Bu durumda, soruna çok fazla sayıda bölüm olması neden olmuştur ve bu da fazla yüke neden olur. Bölüm sayısının azaltılması Zamanlayıcı gecikme süresini düşürüyor. Bir sonraki grafikte, görevi yürütmenin en fazla ne zaman harcandığını gösterilmektedir.

Akış performansı ve gecikme süresi
Akış üretimi doğrudan yapılandırılmış akış ile ilgilidir. Akış işleme ile ilişkili iki önemli ölçüm vardır: saniye başına giriş satırı ve saniye başına işlenen satır. Saniye başına giriş satırları, saniye başına düşen satır sayısını aşarsa, akış işleme sisteminin arkasında kaldığı anlamına gelir. Ayrıca, giriş verileri Event Hubs veya Kafka 'tan geliyorsa, saniye başına giriş satırları Ön uçtaki veri alımı ile devam etmelidir.
İki iş, benzer küme işleme ve çok farklı akış ölçümlerine sahip olabilir. Aşağıdaki ekran görüntüsünde iki farklı iş yükü gösterilmektedir. Bunlar, küme işleme (işler, aşamalar ve dakika başına görev) bakımından benzerdir. Ancak ikinci çalıştırma 12.000 satır/sn ve 4.000 satır/sn ile işlenir.

Akış işleme, genellikle işlenen veri kaydı sayısını ölçtüğünden küme aktarım hızına göre daha iyi bir iş ölçümdür.
Yürütücü başına kaynak tüketimi
Bu ölçümler, her bir yürütücünün gerçekleştirdiği işi anlamanıza yardımcı olur.
Yüzde ölçümleri , bir yürütücüsünün, genel Yürütücü işlem zamanına göre harcanan sürenin oranı olarak ifade edilen çeşitli şeyler üzerinde ne kadar zaman harcadığını ölçer. Ölçümler şunlardır:
- Seri hale getirme süresi yüzdesi
- % Seri durumdan çıkarma zamanı
- % CPU yürütücü zamanı
- % JVM saati
Bu görselleştirmeler, bu ölçümlerin her birinin genel yürütücü işlemeye ne kadar katkıda bulunduğunu gösterir.

Karıştırma ölçümleri , yürüticiler genelinde oluşan verilerle ilgili ölçümlerdir.
- G/ç 'yi karıştır
- Belleği karıştır
- Dosya sistemi kullanımı
- Disk kullanımı
Yaygın performans sorunları
Spark 'ta yaygın olarak karşılaşılan iki performans sorunu, görev ve en iyi olmayan karışık bölüm sayısıdır.
Görev çlayıcıları
Bir işteki aşamalar, önceki aşamaları daha sonra engelleyen aşamalar ile sırayla yürütülür. Bir görev, diğer görevlerden daha yavaş bir karışık bölüm çalıştırırsa, aşamanın sona bitebilmesi için kümedeki tüm görevlerin yavaş görevin yakalanmasını beklemesi gerekir. Bu durum aşağıdaki nedenlerden kaynaklanabilir:
Bir konak veya konak grubu yavaş çalışıyor. Belirtiler: yüksek görev, aşama veya iş gecikmesi ve düşük küme performansı. Konak başına görev gecikme sürelerinin toplamı eşit olarak dağıtılmayacaktır. Ancak, kaynak tüketimi yürütme genelinde eşit olarak dağıtılır.
Görevlerin yürütülmesi için pahalı bir toplama (veri eğriltme) vardır. Belirtiler: yüksek görev gecikmesi, yüksek aşamalı gecikme süresi, yüksek iş gecikmesi veya düşük küme performansı, ancak konak başına gecikme sürelerinin toplamı eşit olarak dağıtılır. Kaynak tüketimi, yürüticileri arasında eşit olarak dağıtılır.
Bölümlerin boyutu eşit değilse, daha büyük bir bölüm, dengesiz görev yürütülmesine neden olabilir (Bölüm eğriltme). Belirtiler: yürütücü kaynak tüketimi, kümede çalışan diğer yürüticilerine göre yüksek. Bu yürütücü üzerinde çalışan tüm görevler yavaş çalışır ve işlem hattında aşama yürütmesini tutacaktır. Bu aşamalar, aşama engelleriolarak kabul edilir.
En uygun olmayan karışık bölüm sayısı
Yapılandırılmış akış sorgusu sırasında, bir görevi bir yürütücü için atama, küme için Kaynak yoğunluklu bir işlemdir. Karıştırma verileri en iyi boyut değilse, bir görevin gecikmesi miktarı aktarım hızını ve gecikme süresini olumsuz etkileyecek. Çok az bölüm varsa, kümedeki çekirdekler az kullanılır, bu da inefficiency işlemeye yol açabilir. Bunun tersine, çok fazla bölüm varsa, az sayıda görev için yönetim ek yükü çok fazla olabilir.
Küme üzerinde bölüm eğriltme ve hatalı yürütme sorunlarını gidermek için kaynak tüketim ölçümlerini kullanın. Bir bölüm eğriltilmiş ise, yürütücü kaynakları, kümede çalışan diğer yürüticilerine göre yükseltilir.
Örneğin, aşağıdaki grafik, ilk iki yürütme sırasında kullanılan belleğin diğer yürüticiden daha büyük olduğunu gösterir:
