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.
Not
Databricks Runtime 10.4 LTS ve üzerinde kullanılabilir.
Asenkron durum kontrol noktası, akış sorguları için kesinlikle bir kere çalışır garantisi sağlar, ancak durum güncellemelerinde darboğaz yaşayan bazı Yapılandırılmış Akış durum bilgisi olan iş yükleri için genel gecikmeyi 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 ödünleri karşılaştırılmaktadır.
| Karakteristik | Eşzamanlı kontrol noktası | Eşzamansız denetim noktası |
|---|---|---|
| Gecikme süresi | Her mikro parti için daha yüksek gecikme süresi. | Mikro toplu işlerin örtüşmesi sayesinde gecikme süresi azalır. |
| Yeniden başlat | Yalnızca son toplu işin yeniden çalıştırılması gerektiğinden hızlı bir kurtarma sağlanır. | Birden fazla mikro toplu işlemin yeniden çalıştırılması gerekebileceğinden, daha yüksek bir yeniden başlatma gecikmesi olabilir. |
Uyumsuz durum kontrol noktası oluşturma özelliğinden yararlanabilecek akış işi özellikleri şunlardır:
- Görevin durum bilgisine sahip 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 ilerlemesi ve durum denetim noktasının genel toplu iş yürütme gecikmesi üzerindeki etkisinin nasıl bulunacağına dair bir örnek sunulmaktadır.
-
{ "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 operatörü içeren her görev, kontrol noktası için ortalama 50 saniye sürdü (3.186/64). 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.
- Toplu iş süresi (
-
Eşzamansız durum kontrol 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ştirilmiş otomatik ölçeklendirme ile Lakeflow Spark Bildirimli İşlem Hatlarının kullanılmasını önerir. Bkz. Otomatik Ölçeklendirme ile Lakeflow Spark Bildirimli İşlem Hatlarının küme kullanımını iyileştirme.
- Asenkron bir kontrol noktasındaki herhangi bir depoda veya birden fazla depoda yapılan herhangi bir hata sorgunun başarısız olmasına neden 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 asenkron durum kontrol noktasında mevcut değildir. Databricks, iş hatası durumunda otomatik yeniden denemeler için sürekli çalışan işlerin kullanılmasını önerir. Bkz. İşleri sürekli çalıştırma.
- Asenkron denetim noktaları, 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 kontrol noktaları 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 depolama örneği yeniden dağıtılabilir.
- 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.