Megosztás:


Mi az aszinkron folyamatkövetés?

Az aszinkron folyamatkövetés lehetővé teszi, hogy a strukturált streamelési folyamatok aszinkron módon és a mikrokötegen belüli tényleges adatfeldolgozással párhuzamosan ellenőrizzék a folyamat előrehaladását, csökkentve a offsetLog és a commitLogfenntartásával járó késést.

aszinkron folyamatkövetési

Jegyzet

Az aszinkron folyamatkövetés nem működik Trigger.once vagy Trigger.availableNow eseményindítókkal. Ha ezekkel az eseményindítókkal próbálja engedélyezni ezt a funkciót, az lekérdezési hibát eredményez.

Hogyan működik az aszinkron folyamatkövetés a késés csökkentése érdekében?

A strukturált streamelés a lekérdezésfeldolgozás folyamatjelzőjeként az eltolások megőrzésére és kezelésére támaszkodik. Az eltoláskezelési művelet közvetlenül befolyásolja a feldolgozási késést, mivel a műveletek befejezéséig nem történhet adatfeldolgozás. Az aszinkron folyamatkövetés lehetővé teszi, hogy a strukturált streamelési folyamatok az eltoláskezelési műveletek befolyásolása nélkül rögzítsék az előrehaladást.

Mikor kell konfigurálni az ellenőrzőpont gyakoriságát?

A felhasználók konfigurálhatják a folyamat ellenőrzésének gyakoriságát. Az ellenőrzőpont-gyakoriság alapértelmezett beállításai jó átviteli sebességet biztosítanak a legtöbb lekérdezéshez. A gyakoriság konfigurálása olyan helyzetekben hasznos, amikor az eltoláskezelési műveletek a feldolgozhatónál magasabb sebességgel történnek, ami egyre növekvő eltoláskezelési feladatokat eredményez. A növekvő hátralék elkerülése érdekében az adatfeldolgozás le van tiltva vagy lelassul, lényegében visszaállítva a feldolgozási viselkedést az aszinkron folyamatkövetés előnyeinek kiküszöbölése érdekében.

Jegyzet

Az ellenőrzőpont-időköz növelésével a hibahelyreállítási idő megnő. Hiba esetén a folyamatnak újra kell feldolgoznia az összes adatot az előző sikeres ellenőrzőpont előtt. A felhasználók figyelembe vehetik ezt a kompromisszumot a normál feldolgozás és a helyreállítási idő kisebb késése között meghibásodás esetén.

Milyen konfigurációk vannak társítva az aszinkron folyamatkövetéshez?

Opció Érték Alapértelmezett Leírás
aszinkronElőrehaladásKövetésEngedélyezve igaz/hamis téves aszinkron folyamatkövetés engedélyezése vagy letiltása
asyncHaladásNyomkövetésiEllenőrzésiIdőközMs Milliszekundum 1000 az eltolások és a befejezések véglegesítésének időköze

Hogyan engedélyezhetik a felhasználók az aszinkron folyamatkövetést?

A felhasználók az alábbi kódhoz hasonló kódot használhatnak a funkció engedélyezéséhez:

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()

Az aszinkron folyamatkövetés kikapcsolása

Ha az aszinkron folyamatkövetés engedélyezve van, a keretrendszer nem ellenőrzi minden köteg állapotát. A probléma megoldásához az aszinkron folyamatkövetés letiltása előtt dolgozzon fel legalább két mikroköteget a következő beállításokkal:

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

Állítsa le a lekérdezést, miután legalább két mikroköteg feldolgozása befejeződött. Most már biztonságosan letilthatja az aszinkron folyamatkövetést, és újraindíthatja a lekérdezést.

Ha a lépés végrehajtása nélkül letiltotta az aszinkron folyamatkövetést, a következő hibaüzenet jelenhet meg:

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

Az illesztőprogram-naplókban a következő hiba jelenhet meg:

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.

Az aszinkron folyamatkövetés letiltásához kövesse az ebben a szakaszban található utasításokat, így elháríthatja ezeket a hibákat, és kijavíthatja a streamelési számítási feladatokat.

Az aszinkron folyamatkövetés korlátai

Ez a funkció a következő korlátozásokkal rendelkezik:

  • Az aszinkron folyamatkövetés csak állapot nélküli adatfolyamokban támogatott, ha a Kafkát célként használja.
  • Az aszinkron folyamatkövetés nem garantálja a végpontok közötti feldolgozást, mert a köteg eltolástartományai hiba esetén módosíthatók. Egyes adatátviteli végpontok, például a Kafka, nem biztosítanak pontosan egyszeri garanciát.