Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 14467|Válasz: 1

A Kafka Windows rendszer egy ideig leáll a lejárat után

[Linket másol]
Közzétéve 2021. 07. 12. 10:57:01 | | | |
1: Háttér

Korábban használtam a kafkát Linux környezetben, és magával a kafkával nem volt gond. Azonban egy jelenleg dolgozó projektnek kompatibilisnek kell lennie a Windows-szal és a Linux-szal, és amikor a Kafkát használom az ablak környezetében, azt tapasztaltam, hogy maga a Kafka nem kompatibilis annyira a Windows-szel, mint a Linux.

2: Probléma

Amikor a Kafkát az ablak alatt teszteltem, azt tapasztaltam, hogy a Kafkának hiba volt a indítás után egy ideig:

Egy másik program használja a fájlt, és a folyamat nem fér hozzá.
Az alábbi megoldások nem oldják meg teljesen a problémát, és nem ajánlottak

Windows Kafka HIBA Nem sikerült tisztítani a naplót __consumer_offsets
https://www.itsvse.com/thread-9980-1-1.html




[2021-07-06 09:06:10,800] HIBA Nem sikerült tisztítani a naplót a __consumer_offsets-42-nél a C:\tmp\kafka-logs rendszerében IOException (kafka.server.LogDirFailureChannel) miatt
java.nio.file.FileSystemException: C:\tmp\kafka-logs\__consumer_offsets-42\00000000000000000000.timeindex.cleaned ->
C:\tmp\kafka-logs\__consumer_offsets-42\00000000000000000000.timeindex.swap: 另一个程序正在使用此文件,进程无法访问。

        at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
        at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
        a sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:387) oldalon
        a sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287) címen
        java.nio.file.Files.move(Files.java:1395) címen
        az org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:904) címen
        a kafka.log.AbstractIndex.renameTo(AbstractIndex.scala:210) címen
        at kafka.log.LazyIndex$IndexValue.renameTo(LazyIndex.scala:155)
        a kafka.log.LazyIndex.$anonfun$renameTo$1(LazyIndex.scala:79)
        a kafka.log.LazyIndex.renameTo(LazyIndex.scala:79)
        a kafka.log.LogSegment.changeFileSuffixes(LogSegment.scala:496) címen
        at kafka.log.Log.$anonfun$replaceSegments$4(Log.scala:2402)
        at kafka.log.Log.$anonfun$replaceSegments$4$adapted(Log.scala:2402)
        a scala.collection.immutable.List.foreach címen (List.scala:333)
        at kafka.log.Log.replaceSegments(Log.scala:2402)
        a kafka.log.Cleaner.cleanSegments(LogCleaner.scala:613) címen.
        a kafka.log.Cleaner.$anonfun$doClean$6(LogCleaner.scala:538)
        a kafka.log.Cleaner.$anonfun$doClean$6$adapted(LogCleaner.scala:537)
        a scala.collection.immutable.List.foreach címen (List.scala:333)
        a kafka.log.Cleaner.doClean(LogCleaner.scala:537)
        a kafka.log.Cleaner.clean(LogCleaner.scala:511) címen.
        a kafka.log.LogCleaner$CleanerThread.cleanLog(LogCleaner.scala:380) címen
        a kafka.log.LogCleaner$CleanerThread.cleanFilthiestLog(LogCleaner.scala:352) címen
        a kafka.log.LogCleaner$CleanerThread.tryCleanFilthiestLog(LogCleaner.scala:332) címen
        a kafka.log.LogCleaner$CleanerThread.doWork(LogCleaner.scala:321) címen
        a kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:96) címen
        Elnyomott: java.nio.file.FileSystemException: C:\tmp\kafka-logs\__consumer_offsets-42\000000000000000000000000000.timeindex.clean.> C:\tmp\kafka-logs\__consumer_offsets-42\ 0000000000000000000000000.timeindex.swap: Egy másik program használja ezt a fájlt, és a folyamat elérhetetlen.

                at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
                at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
                a sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:301) címen
                a sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287) címen
                java.nio.file.Files.move(Files.java:1395) címen
                az org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:901) címen
                ... Még 20

3: Ok

A Kafka naplótisztítási szabályzat azt idézi elő, hogy Windows környezetben nem lehet átnevezni a fájlt, miközben megnyitja a tisztítandó naplót (Linux környezetben ez lehetséges), ami a Kafka összeomlásához vezet.

Az interneten a leggyakoribb megoldás az, hogy "kiürítik a kafka naplófájljait és újraindítják a kafkát", ami nyilvánvalóan irreális egy gyártási környezetben. Így kezdetben a következő két megoldást találtam ki a helyzetre:

1. megoldás: Módosítsuk a naplótisztítási szabályzatot, hogy a naplótisztítási időt végtelenre (-1) módosítsuk, hogy a kafka adatnaplókat véglegesen tárolhassuk
Hátrányok: (1) A lemezhely tovább nő
2. lehetőség: Építsünk egy virtuális gépet Windowson (a docker ugyanaz, de problémásabb), majd telepítsd a Kafkát a virtuális gépben
Hátrányok: (1) Az O&M személyzetnek kell némi Linux O&M ismeretet (2) Növelni a memóriafogyasztást

Nyilvánvalóan mindkét lehetőség hiányosságai elviselhetetlenek voltak számomra, ezért a Kafka közösséghez fordultam segítségért.

Kattintson ide az istenek imádatáról szóló beszélgetésért:A hiperlink bejelentkezés látható.

Úgy értik, hogy a Kafka problémája az ablak alatt nem olyan egyszerű, mint azt elképzeltük.Eddig nincs hivatalos megoldás。 Más szóval: (Ne használd a kafkát az ablak alatt! )

3. megoldás: De még így is fennáll a szükség arra, hogy a kafkát az ablak alatt használja, így még mindig sok isten figyel és megoldásokat javasol. Az egyik nagy isten fejlesztette ki a kafka forráskódot erre a problémára. Tesztelés után a megoldása megoldotta a problémát az ablak alatt, így a kafka elérhetővé vált az ablak alatt. Azonban ehhez a megoldáshoz a Kafka közreműködője azt mondta, hogy lehet, hogy nem biztonságos (vagyis a javítás nem integrálható a hivatalos verzióba).

4: Megoldás (a végén a letölthető kafka csomaghoz tartozik)
Bár a Kafka tisztviselői szerint a javítás nem túl biztonságos, eddig nem tett semmit. És van igény, így némi megfontolás után még mindig a 3-as opció módszerét tervezem használni, hogy véglegesen megoldjam a problémát, így betesszük a javítást és újrafordítjuk a kafkát.

4.1: Kafka patch verzió letöltése

Töltse le ennek a szerzőnek a kafka patch változatát

A hiperlink bejelentkezés látható.

4.2: A Kafka patch verzió fordítása
Mivel a kafka fordítás a gradle-en keresztül történik, először be kell állítanod a gradle-t

A gradle konfigurálásáról lásd ezt a cikket (újranyomtatva, a szabálysértést töröljük) a gradle telepítése és konfigurálása Windows alatt:A hiperlink bejelentkezés látható.

A Kafka fordításáról információért a githubon találhatod------ Hogyan fordítsuk le Kafkát a Gradle segítségével:A hiperlink bejelentkezés látható.

Fordítás után kaphatsz egy Kafka csomagot, amit Windows alatt is használhatsz.

A "másolás-beillesztés" koncepciójához igazodva (hiszen a forráskód fordítása még mindig elég időigényes), itt van egy letölthető link a kafka csomaghoz, amit én fordítottam, és közvetlenül letöltheted és használhatod.

kafka_2.12-2.3.0_window Letöltési cím az anti-leállás verzióhoz:

A hiperlink bejelentkezés látható.

Eredeti link:A hiperlink bejelentkezés látható.







Előző:A MySQL lekérdezéseket hajt végre egy adatbázis tábla annotációira.
Következő:SQL Server Összefoglaló a partíciós táblákról
Közzétéve 2021. 07. 12. 21:16:33 |
A fórumfőnököt, aki még nem játszott, annyira mélyen tiszteli
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com