Aracılığıyla paylaş


Zaman uyumsuz ilerleme izleme nedir?

Zaman uyumsuz ilerleme izleme, Yapılandırılmış Akış işlem hatlarının zaman uyumsuz olarak ve mikro toplu iş içindeki gerçek veri işlemeye paralel olarak ilerleme durumunu denetlemesine olanak sağlayarak offsetLog ve commitLogbakımıyla ilişkili gecikme süresini azaltır.

Zaman Uyumsuz İlerleme İzleme

Not

Zaman uyumsuz ilerleme izleme, Trigger.once veya Trigger.availableNow tetikleyicileriyle çalışmaz. Bu özelliği bu tetikleyicilerle etkinleştirme girişimi sorgu hatasına neden olur.

Gecikme süresini azaltmak için zaman uyumsuz ilerleme izleme nasıl çalışır?

Yapılandırılmış Akış, sorgu işlemeye yönelik ilerleme göstergesi olarak ofsetleri kalıcı hale getirme ve yönetmeye dayanır. Bu işlemler tamamlanana kadar veri işleme gerçekleşemediği için, uzaklık yönetimi işlemi işleme gecikmesini doğrudan etkiler. Asenkron ilerleme izleme, Yapılandırılmış Akış işlem hatlarının, ofset yönetim işlemlerinden etkilenmeden ilerleme kaydını tutmasını sağlar.

Denetim noktası sıklığını ne zaman yapılandırmanız gerekir?

Kullanıcılar ilerleme durumunun denetim noktası olarak ne sıklıkta olduğunu yapılandırabilir. Denetim noktası sıklığı için varsayılan ayarlar çoğu sorgu için iyi aktarım hızı sağlar. Ofset yönetimi işlemlerinin, işlenebileceğinden daha yüksek bir hızda gerçekleştiği ve bu durumun ofset yönetimi işlemlerinde giderek artan bir birikime yol açtığı senaryolar için sıklığı yapılandırmak faydalıdır. Bu büyüyen birikimi önlemek için veri işleme engellenir ya da yavaşlatılır, sonuç olarak zaman uyumsuz ilerleme izlemenin avantajlarını ortadan kaldıracak şekilde işleme davranışı eski haline döner.

Not

Hata kurtarma süresi, denetim noktası aralığı süresindeki artışla artar. Hata durumunda, bir işlem hattının önceki başarılı denetim noktasından önce tüm verileri yeniden işlemesi gerekir. Kullanıcılar, normal işleme sırasındaki düşük gecikme süresi ile hata durumunda kurtarma süresi arasındaki bu dengeyi göz önünde bulundurabilir.

Zaman uyumsuz ilerleme izleme ile ilişkili yapılandırmalar hangileridir?

Seçenek Değer Varsayılan Açıklama
eşzamanlı olmayan ilerleme takibi etkin doğru/yanlış yanlış zaman uyumsuz ilerleme izlemeyi etkinleştirme veya devre dışı bırakma
asyncProgressTrackingKontrolNoktasıAralığıMs Milisaniye 1000 offsetleri ve tamamlama onaylarını yaptığımız aralık

Kullanıcılar zaman uyumsuz ilerleme izleme özelliğini nasıl etkinleştirebilir?

Kullanıcılar bu özelliği etkinleştirmek için aşağıdaki koda benzer bir kod kullanabilir:

val stream = spark.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers", "host1:port1,host2:port2")
      .option("subscribe", "in")
      .load()

val query = stream.writeStream
     .format("kafka")
        .option("topic", "out")
     .option("checkpointLocation", "/tmp/checkpoint")
        .option("asyncProgressTrackingEnabled", "true")
     .start()

Zaman uyumsuz ilerleme izlemeyi kapatma

Eşzamansız ilerleme izleme etkinleştirildiğinde, çerçeve her toplu işlem için ilerlemeyi kontrol noktası olarak kaydetmez. Bu sorunu çözmek için, zaman uyumsuz ilerleme izlemeyi devre dışı bırakmadan önce aşağıdaki ayarlarla en az iki mikro toplu işlemi işleyin:

  • .option("asyncProgressTrackingEnabled", "true")
  • .option("asyncProgressTrackingCheckpointIntervalMs", 0)

En az iki mikro toplu işin işlenmesi tamamlandıktan sonra sorguyu sonlandırın. Artık zaman uyumsuz ilerleme izlemesini güvenli bir şekilde devre dışı bırakabilir ve sorguyu yeniden başlatabilirsiniz.

Bu adımı tamamlamadan zaman uyumsuz ilerleme izlemeyi devre dışı bırakmışsanız aşağıdaki hatayla karşılaşabilirsiniz:

java.lang.IllegalStateException: batch x doesn't exist

Sürücü günlüklerinde aşağıdaki hatayı görebilirsiniz:

The offset log for batch x doesn't exist, which is required to restart the query from the latest batch x from the offset log. Please ensure there are two subsequent offset logs available for the latest batch via manually deleting the offset file(s). Please also ensure the latest batch for commit log is equal or one batch earlier than the latest batch for offset log.

Zaman uyumsuz ilerleme izlemeyi devre dışı bırakmak için bu bölümdeki yönergelerin izlenmesi, bu hataları gidermenize ve akış iş yükünüzü onarmanıza olanak tanır.

Zaman uyumsuz ilerleme izlemeyle ilgili sınırlamalar

Bu özellik aşağıdaki sınırlamalara sahiptir:

  • Asenkron ilerleme izlemesi, yalnızca Kafka'nın çıktı olarak kullanıldığı durum bilgisi olmayan işlem hatlarında desteklenir.
  • Hata durumunda toplu iş için ofset aralıkları değiştirilebildiği için asenkron ilerleme izleme ile uçtan uca tam olarak bir kez işleme garanti edilmez. Kafka gibi bazı havuzlar hiçbir zaman tam olarak bir kez garanti vermez.