Share via


Durum bilgisi olan sorgular için zaman uyumsuz durum denetim noktası oluşturma

Not

Databricks Runtime 10.4 LTS ve üzerinde kullanılabilir.

Zaman uyumsuz durum denetim noktası oluşturma, akış sorguları için tam olarak bir kez garanti sağlar, ancak durum güncelleştirmelerinde performans sorunu olan bazı Yapılandırılmış Akış durum bilgisi olan iş yükleri için genel gecikme süresini azaltabilir. Bu, durum denetim noktası oluşturma işleminin tamamlanmasını beklemeden önceki mikro toplu işlemin tamamlanmasından hemen sonra bir sonraki mikro toplu işlemi işlemeye başlanarak gerçekleştirilir. Aşağıdaki tabloda, zaman uyumlu ve zaman uyumsuz denetim noktası oluşturmanın dezavantajları karşılaştırılarak:

Characteristic Zaman uyumlu denetim noktası oluşturma Zaman uyumsuz denetim noktası oluşturma
Gecikme süresi Her mikro toplu iş için daha yüksek gecikme süresi. Mikro toplu işlerde çakışma olabileceği için gecikme süresi azalır.
Yeniden başlat Yalnızca son toplu iş için hızlı kurtarmanın yeniden çalıştırılması gerekir. Mikro toplu işlemde olduğundan daha fazla yeniden başlatma gecikmesi yeniden çalıştırılması gerekebilir.

Zaman uyumsuz durum denetim noktası oluşturma özelliğinden yararlanabilecek akış işi özellikleri şunlardır:

  • İşin durum bilgisi olan bir veya daha fazla işlemi vardır (örneğin, toplama, flatMapGroupsWithState, mapGroupsWithState, akış akışı birleştirmeleri)
  • Durum denetim noktası gecikmesi, genel toplu yürütme gecikme süresine katkıda bulunan başlıcalardan biridir. Bu bilgiler StreamingQueryProgress olaylarında bulunabilir. Bu olaylar Spark sürücüsündeki log4j günlüklerinde de bulunur. Burada akış sorgusu ilerleme durumu ve genel toplu yürütme gecikme süresi üzerindeki durum denetim noktası etkisinin nasıl bulunup bulunamaya ilişkin bir örnek verilmiştir.
    • {
         "id" : "2e3495a2-de2c-4a6a-9a8e-f6d4c4796f19",
         "runId" : "e36e9d7e-d2b1-4a43-b0b3-e875e767e1fe",
         "...",
         "batchId" : 0,
         "durationMs" : {
           "...",
           "triggerExecution" : 547730,
           "..."
         },
         "stateOperators" : [ {
           "...",
           "commitTimeMs" : 3186626,
           "numShufflePartitions" : 64,
           "..."
         }]
      }
      
    • Yukarıdaki sorgu ilerleme durumu olayının durum denetim noktası gecikme süresi analizi

      • Toplu iş süresi (durationMs.triggerDuration) yaklaşık 547 saniyedir.
      • Durum deposu işleme gecikme süresi (stateOperations[0].commitTimeMs) yaklaşık 3.186 saniyedir. İşleme gecikmesi, durum deposu içeren görevler arasında toplanır. Bu durumda, bu tür 64 görev (stateOperators[0].numShufflePartitions) vardır.
      • Durum işleci içeren her görev denetim noktası için ortalama 50 sn (3.186/64) sürdü. Bu, toplu işlem süresine katkıda bulunan ek bir gecikme süresidir. 64 görevi de aynı anda çalıştırdığını varsayarsak, denetim noktası adımı toplu işlem süresinin yaklaşık %9'unda (50 sn / 547 sn) katkıda bulundu. Maksimum eşzamanlı görev 64'ten küçük olduğunda yüzde daha da yüksek olur.

Zaman uyumsuz durum denetim noktası oluşturmayı etkinleştirme

Zaman uyumsuz durum denetim noktası oluşturma için RocksDB tabanlı durum deposunu kullanmanız gerekir. Aşağıdaki yapılandırmaları ayarlayın:


spark.conf.set(
  "spark.databricks.streaming.statefulOperator.asyncCheckpoint.enabled",
  "true"
)

spark.conf.set(
  "spark.sql.streaming.stateStore.providerClass",
  "com.databricks.sql.streaming.state.RocksDBStateStoreProvider"
)

Zaman uyumsuz denetim noktası oluşturmayla ilgili sınırlamalar ve gereksinimler

Not

İşlem otomatik ölçeklendirmesi, Yapılandırılmış Akış iş yükleri için küme boyutunu azaltmayla ilgili sınırlamalara sahiptir. Databricks, akış iş yükleri için Gelişmiş Otomatik Ölçeklendirme ile Delta Live Tablolarının kullanılmasını önerir. Bkz . Gelişmiş Otomatik Ölçeklendirme ile Delta Live Tables işlem hatlarının küme kullanımını iyileştirme.

  • Herhangi bir veya daha fazla depodaki zaman uyumsuz bir denetim noktasındaki hatalar sorguda başarısız olur. Zaman uyumlu denetim noktası modunda, denetim noktası görevin bir parçası olarak yürütülür ve Spark sorguyu başarısız olmadan önce görevi birden çok kez yeniden dener. Bu mekanizma zaman uyumsuz durum denetim noktası oluşturma ile mevcut değildir. Ancak Databricks işi yeniden denemeleri kullanılarak bu tür hatalar otomatik olarak yeniden denenebilir.
  • Zaman uyumsuz denetim noktası oluşturma, durum deposu konumları mikro toplu yürütmeler arasında değiştirilmediğinde en iyi şekilde çalışır. Küme yeniden boyutlandırma, zaman uyumsuz durum denetim noktası oluşturma ile birlikte düzgün çalışmayabilir çünkü küme yeniden boyutlandırma olayının bir parçası olarak düğümler eklendikçe veya silindikçe durum depoları örneği yeniden dağıtılamayabilir.
  • Zaman uyumsuz durum denetim noktası oluşturma yalnızca RocksDB durum deposu sağlayıcısı uygulamasında desteklenir. Varsayılan bellek içi durum deposu uygulaması bunu desteklemez.