Aracılığıyla paylaş


İşlem hatlarında yüksek başlatma sürelerini düzeltme

İşlem hatları, güncel kalmalarını sağlamak için birçok akışı olan birçok veri kümesi içerebilir. Çalışma hatları, güncellemeleri ve kümeleri verimli bir şekilde güncellemek için otomatik olarak yönetir. Ancak, çok sayıda akışı yönetmenin bazı ek yükleri vardır ve bazen bu durum beklenenden daha büyük başlatmaya ve hatta işleme sırasında yönetim ek yüküne yol açabilir.

Tetiklenen işlem hatlarının başlatılmasını beklerken beş dakikadan uzun başlatma süreleri gibi gecikmelerle karşılanıyorsanız, veri kümeleri aynı kaynak verileri kullansa bile işlemeyi birkaç işlem hattına bölmeyi göz önünde bulundurun.

Uyarı

Tetiklenen işlem hatları her tetiklendiğinde başlatma adımlarını gerçekleştirir. Sürekli işlem hatları yalnızca durdurulup yeniden başlatıldığında başlatma adımlarını gerçekleştirir. Bu bölüm en çok tetiklenen işlem hattı başlatmayı iyileştirmek için kullanışlıdır.

İşlem hattını bölmeyi ne zaman düşünmelisiniz?

Bir işlem hattını bölmenin performans nedenleriyle avantajlı olabileceği birkaç durum vardır.

  • INITIALIZING ve SETTING_UP_TABLES aşamaları istediğinizden uzun sürer ve genel işlem hattı sürenizi etkiler. Bu işlem 5 dakikadan uzunsa, işlem hattı bölünerek iyileştirilebilir.
  • Kümeyi yöneten sürücü, tek bir işlem hattı içinde çok sayıda (30-40'tan fazla) akış tablosu çalıştırırken performans sorununa neden olabilir. Sürücünüz yanıt vermiyorsa akış sorguları için süreniz artar ve bu da güncelleştirmenizin toplam süresini etkiler.
  • Birkaç akış tablosu akışına sahip tetiklenen bir işlem hattı, tüm paralelleştirilebilir akış güncelleştirmelerini paralel olarak gerçekleştiremeyebilir.

Performans sorunlarıyla ilgili ayrıntılar

Bu bölümde, tek bir işlem hattında birçok tablo ve akış bulunmasından kaynaklanabilir performans sorunlarının bazıları açıklanmaktadır.

BAŞLATMA ve TABLOLARI_AYARLAMA aşamalarında performans sorunları

Çalışmanın ilk aşamaları, işlem hattının karmaşıklığına bağlı olarak bir performans darboğazı olabilir.

BAŞLATMA aşaması

Bu aşamada, bağımlılık grafiğini oluşturmaya ve tablo güncelleştirmelerinin sırasını belirlemeye yönelik planlar da dahil olmak üzere mantıksal planlar oluşturulur.

SETTING_UP_TABLES aşaması

Bu aşamada, önceki aşamada oluşturulan planlar temelinde aşağıdaki işlemler gerçekleştirilir:

  • İşlem hattında tanımlanan tüm tablolar için şema doğrulaması ve çözümlemesi.
  • Bağımlılık grafiğini oluşturun ve tablo yürütme sırasını belirleyin.
  • Önceki güncelleştirmelerden bu yana her veri kümesinin işlem hattında etkin olup olmadığını veya yeni olup olmadığını denetleyin.
  • İlk güncelleştirmede akış tabloları oluşturun ve gerçekleştirilmiş görünümler için her işlem hattı güncelleştirmesi sırasında gereken geçici görünümleri veya yedekleme tablolarını oluşturun.

INITIALIZING ve Tabloları Kurma Neden Daha Uzun Sürebilir?

Birçok veri kümesi için birçok akışa sahip büyük işlem hatları birkaç nedenden dolayı daha uzun sürebilir:

  • Birçok akışı ve karmaşık bağımlılıkları olan işlem hatları için bu aşamalar, yapılacak iş hacmi nedeniyle daha uzun sürebilir.
  • Karmaşık dönüştürmeler, Auto CDC dönüşümleri de dahil olmak üzere, belirli dönüşümler temelinde tabloların oluşturulmasını gerektiren işlemler nedeniyle performans darboğazına neden olabilir.
  • Ayrıca, önemli sayıda akışın bir güncelleştirmenin parçası olmasa bile yavaşlığa neden olabileceği senaryolar da vardır. Örneğin, 700'den fazla akışı olan ve her tetikleyici için bir yapılandırmaya göre 50'den az akışın güncelleştirildiği bir işlem hattı düşünün. Bu örnekte, her çalıştırmanın 700 tablonun tümü için bazı adımlardan geçmesi, veri çerçevelerini alması ve ardından çalıştırılacakları seçmesi gerekir.

Sürücüdeki performans sorunları

Sürücü, çalışma sırasındaki güncelleştirmeleri yönetir. Kümedeki hangi örneklerin her akışı işleyeceklerine karar vermek için her tablo için bir mantık yürütmesi gerekir. Tek bir işlem hattı içinde birden fazla (30-40'tan fazla) akış tablosu çalıştırırken, sürücü küme genelindeki işi işlediğinden CPU kaynakları için bir darboğaza dönüşebilir.

Sürücü bellek sorunlarıyla da karşılaşabilir. Paralel akış sayısı 30 veya daha fazla olduğunda bu durum daha sık gerçekleşebilir. Sürücü belleği sorunlarına neden olabilecek belirli sayıda akış veya veri kümesi yoktur, ancak paralel olarak çalışan görevlerin karmaşıklık düzeyine bağlıdır.

Akış akışları paralel olarak çalıştırılabilir, ancak bu, sürücünün tüm akışlar için eşzamanlı olarak bellek ve CPU kullanmasını gerektirir. Tetiklenen işlem hattında sürücü, bellek ve CPU kısıtlamalarını önlemek için akışların bir alt kümesini bir kerede paralel olarak işleyebilir.

Tüm bu durumlarda, işlem hatlarının her birinde en uygun akış kümesi olacak şekilde bölünmesi başlatma ve işleme süresini hızlandırabilir.

İşlem hatlarını bölmenin tavizleri

Tüm akışlarınız aynı işlem hattı içinde olduğunda, Lakeflow Spark Bildirimli İşlem Hatları bağımlılıkları sizin için yönetir. Birden çok işlem hattı olduğunda, işlem hatları arasındaki bağımlılıkları yönetmeniz gerekir.

  • Bağımlılık Birden çok yukarı akış işlem hattına (bir yerine) bağlı olan bir aşağı akış işlem hattınız olabilir. Örneğin, pipeline_A , pipeline_B, ve pipeline_C olmak üzere üç işlem hattınız varsa ve pipeline_C, hem pipeline_A hem de pipeline_B'e bağımlıysa, pipeline_C yalnızca pipeline_A ve pipeline_B kendi güncellemelerini tamamladıktan sonra güncellenmelidir. Bu sorunu gidermenin bir yolu, bağımlılıkları düzgün şekilde modelleyerek her işlem hattını bir görev olarak bir görev grubunda yönetmektir; böylece yalnızca pipeline_C ve pipeline_A tamamlandıktan sonra güncellenir.

  • Eşzamanlılık İşlem hattı içinde tamamlanması çok farklı süreler alan çeşitli akışlarınız olabilir; örneğin, flow_A 15 saniyede güncellenirken, flow_B birkaç dakika sürebilir. İşlem hatlarınızı bölmeden önce sorgu sürelerine bakmak ve daha kısa sorguları birlikte gruplandırmak yararlı olabilir.

İşlem hatlarınızı bölmek için plan yapma

Başlamadan önce işlem hattınızın bölünmesini görselleştirebilirsiniz. Burada 25 tabloyu işleyen bir kaynak işlem hattının grafiği yer alır. Tek bir kök veri kaynağı, her biri 2 görünüme sahip olan 8 segmente ayrılır.

çok sayıda tablonun grafikleri, birden çok işlem hattına bölünmeden önce

İşlem hattı bölündükten sonra iki işlem hattı vardır. Biri tek kök veri kaynağını ve 4 segmenti ve ilişkili görünümleri işler. İkinci işlem hattı diğer 4 segmenti ve bunların ilişkili görünümlerini işler. İkinci işlem hattı, kök veri kaynağını güncelleştirmek için ilk işlem hattına dayanır.

tek bir büyük işlem hattından ayrılan iki işlem hattının grafiği

İşlem hattını tam yeniden yükleme olmadan bölme

İşlem hattı bölme işlemini planladıktan sonra, gereken yeni işlem hatlarını oluşturun ve işlem hattının yükünü dengelemek için tabloları işlem hatları arasında taşıyın. Tam yeniden yüklemeye neden olmadan tabloları taşıyabilirsiniz.

Ayrıntılar için bkz. Tabloları işlem hatları arasında taşıma.

Bu yaklaşımda bazı sınırlamalar vardır:

  • İşlem hatları Unity Kataloğu'nda olmalıdır.
  • Kaynak ve hedef işlem hatları aynı çalışma alanında olmalıdır. Çalışma alanları arası taşımalar desteklenmez.
  • Hedef işlem hattı, taşımadan önce bir kez oluşturulup çalıştırılmalıdır (başarısız olsa bile).
  • Varsayılan yayımlama modunu kullanan bir işlem hattındaki tabloyu eski yayımlama modunu kullanan bir tabloya taşıyamazsınız. Daha fazla ayrıntı için bkz . LIVE şeması (eski).