Apache Spark uygulamalarında hata ayıklamak ve tanılamak için genişletilmiş Apache Spark geçmiş sunucusunu kullanma

Bu makalede, tamamlanan ve çalışan Apache Spark uygulamalarında hata ayıklamak ve tanılamak için genişletilmiş Apache Spark geçmiş sunucusunun nasıl kullanılacağına ilişkin yönergeler sağlanır.

Apache Spark geçmiş sunucusuna erişme

Apache Spark geçmiş sunucusu, tamamlanmış ve çalışan Spark uygulamaları için web kullanıcı arabirimidir. İlerleme göstergesi not defterinden veya Apache Spark uygulama ayrıntı sayfasından Apache Spark web kullanıcı arabirimini (UI) açabilirsiniz.

İlerleme göstergesi not defterinden Spark web kullanıcı arabirimini açma

Apache Spark işi tetiklendiğinde, Spark web kullanıcı arabirimini açma düğmesi ilerleme göstergesindeki Diğer eylem seçeneğinin içindedir. Spark web kullanıcı arabirimi'ni seçin ve birkaç saniye bekleyin, ardından Spark kullanıcı arabirimi sayfası görüntülenir.

İlerleme göstergesi not defterinden Spark web kullanıcı arabirimini açmayı gösteren ekran görüntüsü.

Apache Spark uygulama ayrıntı sayfasından Spark web kullanıcı arabirimini açma

Spark web kullanıcı arabirimi, Apache Spark uygulama ayrıntı sayfası aracılığıyla da açılabilir. Sayfanın sol tarafındaki İzleyici seçin ve ardından bir Apache Spark uygulaması seçin. Uygulamanın ayrıntı sayfası görüntülenir.

Apache Spark uygulama ayrıntı sayfasından Spark web kullanıcı arabirimini açma işlemini gösteren ekran görüntüsü.

Durumu çalışan bir Apache Spark uygulaması için düğme spark kullanıcı arabirimini gösterir. Spark kullanıcı arabirimi'ni seçtiğinizde Spark kullanıcı arabirimi sayfası görüntülenir.

Düğme, ekran görüntüsünde Spark UI'nin çalışır durumda olduğunu gösterir.

Durumu sona eren bir Apache Spark uygulaması için, sonlandırılan durum Durduruldu, Başarısız, İptal Edildi veya Tamamlandı olabilir. Bu düğme Spark geçmiş sunucusunu gösterir. Spark geçmişi sunucusu'nu seçtiğinizde Spark kullanıcı arabirimi sayfası görüntülenir.

Düğmeyi gösteren ekran görüntüsü spark kullanıcı arabirimini uç durumunda görüntüler.

Büyük Olay Günlükleri için Anlık Görüntü Tabanlı Yükleme

Spark Geçmiş Sunucusu için büyük olay günlüğü senaryoları için iyileştirilmiş yeni bir anlık görüntü tabanlı yükleme yöntemi kullanıma sunulmuştur.

Bu geliştirmeyle Spark kullanıcı arabirimi, tam yeniden yürütmenin tamamlanmasını beklemek yerine kullanılabilir verileri aşamalı olarak gösterir. Olay günlüğü boyutu 6 GB veya daha büyük olduğunda, ek yükleme süresinin (genellikle birkaç dakika) gerekebileceğini belirtmek için bir yükleme iletisi görüntülenir.

Kısmi anlık görüntü hazır olur olmaz, kullanıcı arabirimi bu verileri kullanarak görüntülenir. Üstteki ileti çubuğu, verilerin arka planda hala işlendiğini gösterir. Tam yeniden yürütme tamamlandıktan sonra ileti çubuğu otomatik olarak kaldırılır ve tam görünüm görüntülenir.

Bu deneyimle şunları yapabilirsiniz:

  • Büyük olay günlükleri (≥ 6 GB) için net bir yükleme iletisi görün; böylece sistemin yanıt vermemeye değil etkin bir şekilde işlediğini bilirsiniz
  • Açıkça etiketlenmiş bir önizleme bandı aracılığıyla kısmi bir anlık görüntüye erkenden göz atın; böylece tam tekrar oynatmayı beklemeden görevleri ve aşamaları inceleyebilirsiniz.
  • İşleme tamamlandıktan sonra veri kümesinin tamamını yüklemek için sayfayı daha sonra yenileyin

Spark Geçmişi verileri tamamen yüklendiğinde, kısmi yükleme ileti çubuğu kaybolur ve tam deneyim sağlanır.

Düğmeyi gösteren ekran görüntüsü, büyük olay günlükleri için anlık görüntü tabanlı yüklemeyi görüntüler.

Apache Spark Geçmiş Sunucusu'nu keşfedin

Apache Spark Geçmiş Sunucusu, Spark uygulama yürütme ayrıntılarını olay günlüklerinden yeniden oluşturan web tabanlı bir kullanıcı arabirimi (UI) sağlar. Kullanıcıların çalışma zamanı yaşam döngülerinin ötesinde tamamlanmış veya çalışan uygulamaları analiz etmelerini sağlar.

Geçmiş Sunucusu kullanıcı arabirimi, her biri uygulama davranışını, performansını ve kaynak kullanımını anlamak için farklı bir perspektif sunan birden çok sekmeden oluşur.

İşler sekmesi

İşler sekmesi, Spark uygulaması içindeki tüm işlere üst düzey bir genel bakış sağlar.

Bu görünümü kullanarak:

  • Görev durumunu izleyin (çalışıyor, başarılı oldu veya başarısız oldu)
  • İş sürelerini karşılaştırma
  • Başarısız veya yavaş çalışan işleri hızla belirleme

Aşamalar sekmesi

Aşamalar sekmesi her aşama için ayrıntılı yürütme bilgilerini gösterir.

Bu görünümü kullanarak:

  • Aşama düzeyinde performansı analiz etme
  • Görev dağıtım ve karıştırma ölçümlerini gözden geçirme
  • Çarpık veriler veya pahalı işlemler gibi performans sorunlarını belirleme

Aşama sekmesini gösteren ekran görüntüsü.

Aşama numarası sınırı

Performansın dikkate alınması için, grafik varsayılan olarak yalnızca Spark uygulamasının 500'den az aşaması olduğunda kullanılabilir. Çok fazla aşama varsa, aşağıdaki gibi bir hatayla başarısız olur:

The number of stages in this application exceeds limit (500), graph page is disabled in this case.

Geçici bir çözüm olarak, bir Spark uygulaması başlatmadan önce sınırı artırmak için lütfen bu Spark yapılandırmasını uygulayın:

spark.ui.enhancement.maxGraphStages 1000

Ancak, içeriğin tarayıcı tarafından getirilip işlenemeyecek kadar büyük olabileceğinden, bunun sayfanın ve API'nin performansının kötü olduğuna dikkat edin.

Depolama sekmesi

Depolama sekmesi önbelleğe alınan veriler hakkındaki bilgileri gösterir.

Bu görünümü kullanarak:

  • Önbelleğe alınmış veri kümeleri için bellek ve disk kullanımını anlama
  • Önbelleğe almanın etkili olup olmadığını doğrulama

Ortam sekmesi

Ortam sekmesinde çalışma zamanı yapılandırması ve ortam ayrıntıları listelenir.

Bu görünümü kullanarak:

  • Spark yapılandırma ayarlarını inceleme
  • Ortam değişkenlerini ve bağımlılıklarını doğrulama
  • Yapılandırmayla ilgili sorunları giderme

Yürütücüler sekmesi

Yürütücüler sekmesi yürütücüler arasında kaynak kullanımını görüntüler.

Bu görünümü kullanarak:

  • CPU ve bellek kullanımını izleme
  • Yürütücüler arasında görev dağıtımlarını analiz etme
  • Yürütücü hatalarını veya dengesizliklerini belirleme

Grafik sekmesi

Grafik sekmesi, bir Spark işinin yürütülmesini, aşamalar arasındaki ilişkileri temsil eden, yönlendirilmiş bir döngüsel grafik (DAG) olarak görselleştirir.

Bu görünümü kullanarak:

  • bir işin aşamalara ve bağımlılıklarına nasıl ayrıldığını anlama
  • Genel iş süresini belirleyen kritik yolları belirleme
  • Başarısız veya yeniden denenmiş aşamaları algılama
  • Görevlerin zaman içinde nasıl ilerlediğini gözlemlemek için iş yürütmesini yeniden oynatın

Bu sekme özellikle yürütme akışını anlamak ve üst düzey performans sorunlarını belirlemek için kullanışlıdır.

Grafı gösteren ekran görüntüsü.

Tanılama sekmesi

Tanılama sekmesi aşağıdakiler dahil olmak üzere gelişmiş analiz özellikleri sağlar:

  • Veri dengesizliği algılama
  • Zaman dengesizliği analizi
  • Yürütücü Kullanım Analizi

Sekmeleri sırasıyla seçerek Veri Dengesizliği, Zaman Dengesizliği ve Yürütücü Kullanım Analizi'ni denetleyin.

SparkUI tanılama veri dengesizliği sekmesini yeniden gösteren ekran görüntüsü.

Bu sekme, iş yürütmedeki performans sorunlarını ve verimsizliklerini belirlemeye yardımcı olur.

Veri Dengesizliği

Veri Dengesizliği sekmesini seçtiğinizde, ilgili çarpık görevler belirtilen parametrelere göre görüntülenir.

  • Parametreleri Belirtme - İlk bölümde, Veri Dengesizliği algılamak için kullanılan parametreler görüntülenir. Varsayılan kural şudur: okuma görevi verileri ortalama görev verilerinin üç katı kadardır ve okunan görev verileri 10 MB'tan fazladır. Dengesiz görevler için kendi kuralınızı tanımlamak istiyorsanız, parametrelerinizi seçebilirsiniz. Çarpık Aşama ve Eğme Karakteri bölümleri buna göre yenilenir.

  • Çarpık Aşama - İkinci bölümde, daha önce belirtilen ölçütlere uyan çarpık görevler içeren aşamalar görüntülenir. Bir aşamada birden fazla çarpık görev varsa, çarpık aşama tablosu yalnızca en dengesiz görevi (örneğin, veri dengesizliği için en büyük veri) görüntüler.

    Spark ui tanılama veri dengesizliği sekmesini gösteren ekran görüntüsü.

  • EğriltMe Grafiği - Eğriltme aşaması tablosundaki bir satır seçildiğinde, eğriltme grafiği veri okuma ve yürütme süresine göre daha fazla görev dağıtımı ayrıntısı görüntüler. Eğilmiş görevler kırmızı ve normal görevler mavi olarak işaretlenir. Grafikte en fazla 100 örnek görev görüntülenir ve görev ayrıntıları sağ alt panelde görüntülenir.

    10. aşama için spark ui eğme grafiğini gösteren ekran görüntüsü.

Zaman Dengesizliği

Zaman Dengesizliği sekmesi, görev yürütme süresine göre dengesiz görevleri görüntüler.

  • Parametreleri Belirtme - İlk bölümde, zaman dengesizliklerini algılamak için kullanılan parametreler görüntülenir. Zaman dengesizliği algılamak için varsayılan ölçüt: görev yürütme süresi ortalama yürütme süresinin üç katı, görev yürütme süresi ise 30 saniyeden uzundur. Parametreleri gereksinimlerinize göre değiştirebilirsiniz. Eğik Aşama ve Eğiklik Grafiği, daha önce açıklanan Veri Dengesizliği sekmesi gibi ilgili aşamaları ve görev bilgilerini görüntüler.

  • Zaman Dengesizliği'ni seçin, ardından Filtrelenmiş sonuç, Parametreleri Belirtme bölümünde ayarlanan parametrelere göre Çarpık Aşama bölümünde görüntülenir. Eğilmiş Aşama bölümünde bir öğe seçin, ardından ilgili grafik bölüm 3'te taslağı oluşturulur ve görev ayrıntıları sağ alt panelde görüntülenir.

    Spark ui tanılama süresi dengesizliği bölümünü gösteren ekran görüntüsü.

Yürütücü Kullanım Analizi

Bu özellik artık Fabric'de kullanım dışı bırakılmıştır. Bunu yine de geçici bir çözüm olarak kullanmak istiyorsanız, URL'de "/diagnostic" yolunun arkasına açıkça "/executorusage" ekleyerek sayfaya erişin, örneğin:

URL'nin nasıl değiştirileceği gösteren ekran görüntüsü.

SQL/DataFrame sekmesi

Spark SQL kullanan iş yükleri için SQL sekmesi sorgu düzeyinde içgörüler sağlar.

Bu görünümü kullanarak:

  • Sorgu yürütme planlarını analiz etme
  • Sorgu süresini ve performansını gözden geçirme

Note

Belirli sekmelerin kullanılabilirliği iş yükü türüne ve etkin Spark özelliklerine bağlıdır.

Spark Yürütücü Dönen Günlükleri: Büyük ve Uzun İşler için Daha Kolay Erişim

Spark uygulamaları ölçek ve süre olarak büyümeye devam ettikçe, verimli günlük yönetimi ve analizi giderek daha kritik hale gelmiştir. Bu gelişen gereksinimleri karşılamak için Spark Geçmiş Sunucusu (tamamlanmış uygulamalar için) ve Spark kullanıcı arabiriminde (çalışan uygulamalar için) geliştirmeler sunarak Spark 3.4 ve üzeri için yürütücü sıralı günlükleri etkinleştirdik.

Bu geliştirmeyle, yürütücü günlüğü 16 MB'ı aştığında veya Spark işi bir saatten fazla çalıştığında sistem günlükleri otomatik olarak saatlik bölümlere ayırır. Bu, son derece büyük dosyalarla uğraşmadan günlüklerde gezinmeyi, görüntülemeyi ve indirmeyi kolaylaştırır.

Şimdi şunları yapabilirsiniz:

  • Belirli yürütme pencerelerini hızla saptamak için günlükleri saate göre görüntüleme
  • İş çalışmaya devam ederken en son etkin günlüklere erişin.
  • Tek tek saatlik günlükleri veya tüm günlükleri gerektiği gibi birlikte indirin

Bu özellik, kullanıcıların belirli bir zaman noktasındaki günlükleri kolayca bulmalarını ve analiz etmelerini sağlarken, büyük bir tek günlük dosyasını indirme veya açma zahmetini önler.

Aşağıda Yürütücü Sıralı Günlükler görünümüne bir örnek verilmiştir:

Spark yürütücüsü sıralı günlüklerini gösteren ekran görüntüsü.