Comment récupérer de l'erreur suivante qui a commencé à se produire après une panne de serveur? Zookeeper ne démarre pas et le message suivant s'affiche à plusieurs reprises sur le journal.
2017-05-27 01:02:08,072 [myid:] - INFO [main:Environment@100] - Server environment:Java.library.path=/usr/Java/packages/lib/AMD64:/usr/lib64:/lib64:/lib:/usr/lib
2017-05-27 01:02:08,072 [myid:] - INFO [main:Environment@100] - Server environment:Java.io.tmpdir=/tmp
2017-05-27 01:02:08,072 [myid:] - INFO [main:Environment@100] - Server environment:Java.compiler=<NA>
2017-05-27 01:02:08,072 [myid:] - INFO [main:Environment@100] - Server environment:os.name=Linux
2017-05-27 01:02:08,072 [myid:] - INFO [main:Environment@100] - Server environment:os.Arch=AMD64
2017-05-27 01:02:08,073 [myid:] - INFO [main:Environment@100] - Server environment:os.version=3.10.0-514.16.1.el7.x86_64
2017-05-27 01:02:08,073 [myid:] - INFO [main:Environment@100] - Server environment:user.name=zookeeper
2017-05-27 01:02:08,073 [myid:] - INFO [main:Environment@100] - Server environment:user.home=/opt/zookeeper
2017-05-27 01:02:08,073 [myid:] - INFO [main:Environment@100] - Server environment:user.dir=/
2017-05-27 01:02:08,074 [myid:] - INFO [main:ZooKeeperServer@829] - tickTime set to 2000
2017-05-27 01:02:08,074 [myid:] - INFO [main:ZooKeeperServer@838] - minSessionTimeout set to -1
2017-05-27 01:02:08,074 [myid:] - INFO [main:ZooKeeperServer@847] - maxSessionTimeout set to -1
2017-05-27 01:02:08,080 [myid:] - INFO [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181
2017-05-27 01:02:08,385 [myid:] - ERROR [main:Util@239] - Last transaction was partial.
2017-05-27 01:02:08,400 [myid:] - ERROR [main:Util@239] - Last transaction was partial.
2017-05-27 01:02:08,403 [myid:] - ERROR [main:Util@239] - Last transaction was partial.
2017-05-27 01:02:08,403 [myid:] - ERROR [main:Util@239] - Last transaction was partial.
2017-05-27 01:02:08,404 [myid:] - ERROR [main:Util@239] - Last transaction was partial.
2017-05-27 01:02:08,404 [myid:] - ERROR [main:ZooKeeperServerMain@64] - Unexpected exception, exiting abnormally
Java.io.EOFException
at Java.io.DataInputStream.readInt(DataInputStream.Java:392)
at org.Apache.jute.BinaryInputArchive.readInt(BinaryInputArchive.Java:63)
at org.Apache.zookeeper.server.persistence.FileHeader.deserialize(FileHeader.Java:64)
at org.Apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.inStreamCreated(FileTxnLog.Java:585)
at org.Apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.createInputArchive(FileTxnLog.Java:604)
at org.Apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.goToNextLog(FileTxnLog.Java:570)
at org.Apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.Java:652)
at org.Apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.Java:166)
at org.Apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.Java:223)
at org.Apache.zookeeper.server.ZooKeeperServer.loadData(ZooKeeperServer.Java:283)
at org.Apache.zookeeper.server.ZooKeeperServer.startdata(ZooKeeperServer.Java:410)
at org.Apache.zookeeper.server.NIOServerCnxnFactory.startup(NIOServerCnxnFactory.Java:118)
at org.Apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.Java:119)
at org.Apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.Java:87)
at org.Apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.Java:53)
at org.Apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.Java:116)
at org.Apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.Java:78)
merci IPVP
Il semble que vous ayez rencontré un bogue connu d'Apache ZooKeeper. Il existe plusieurs problèmes Apache JIRA liés à cela: ZOOKEEPER-1621 et ZOOKEEPER-2332 . Consultez les commentaires de ces problèmes si vous êtes intéressé par l'analyse des causes profondes et quelques correctifs proposés.
Malheureusement, il n'y a pas de version Apache ZooKeeper contenant un correctif pour le bogue pour le moment. Vous pouvez essayer quelques solutions de contournement:
La solution pour moi était de trouver le fichier journal de longueur 0 dans/hadoop/zookeeper/version-2 (ou quel que soit l'emplacement de votre dataDir) et de le supprimer. Démarrez ensuite ZooKeeper.
La solution pour moi était de trouver le fichier journal dernier (qui avait une longueur de 0 octet)
Vous le trouverez dans le version-2
répertoire
ls -l -r --sort=time
-rw-r--r-- 1 chris chris 67108880 Jan 24 10:37 log.23c6a70
-rw-r--r-- 1 chris chris 0 Jan 24 10:37 log.23d3fb4
J'ai d'abord essayé de supprimer l'instantané et les 2 derniers fichiers journaux qui fonctionnent également, mais vous auriez ensuite une version "un peu" plus ancienne.
-rw-r--r-- 1 chris chris 3685904 Jan 24 00:56 snapshot.23c6a6e
Vous devez peut-être supprimer le dernier fichier d'instantané et le dernier fichier journal ensemble et le fichier journal de longueur 0 pour être sûr.
btw. Le fichier journal et l'instantané ont le même modèle HEX qui doit correspondre
log .23c6a 70
instantané .23c6a 6e
Ils doivent correspondre et être cohérents et ce problème devrait être résolu.