簡體   English   中英

無法創建 class 原因:com.esotericsoftware.kryo.KryoException:java.io.EOFException:沒有剩余字節

[英]Could not create class Caused by: com.esotericsoftware.kryo.KryoException: java.io.EOFException: No more bytes left

我發現在特定的小型集群和我的本地機器上運行作業時出現問題。 這項工作在大型機器上運行順利。 我正在使用:

  • com.twitter“冷協議”0.7.6
    • .排除 com.esotericsoftware.kryo “kryo”
  • com.google.protobuf“protobuf-java”3.18.1

我正在使用:

volumeMounts:
  - name: rocksdb-volume
    volume:
      emptyDir:
        sizeLimit: 5Gi
      name: rocksdb-volume
    volumeMount:
      mountPath: /opt/flink/rocksdb

登錄到一個任務管理器,我可以看到路徑/opt/flink/rocksdb有 1GB,而 k8s 沒有指示 DiskPressure。

並具有以下資源:

numberOfTaskManagers: 2
parallelism: 4
resources:
   taskmanager:
      cpu: 0.5
      memory: 6G

2 個 6G 的 TM 與其他負載更高但運行良好的集群相比太多了。

我收到以下錯誤:

[FlinkOperatorName] (2/2)#15 (c2f42784dab9c9046192b067c0115499) switched from RUNNING to FAILED with failure cause: java.lang.RuntimeException: Could not create class [ProtobufClassName]
    at com.twitter.chill.protobuf.ProtobufSerializer.read(ProtobufSerializer.java:76)
    at com.twitter.chill.protobuf.ProtobufSerializer.read(ProtobufSerializer.java:40)
    at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:761)
    at org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer.deserialize(KryoSerializer.java:354)
    at org.apache.flink.api.scala.typeutils.OptionSerializer.deserialize(OptionSerializer.scala:76)
    at org.apache.flink.api.scala.typeutils.OptionSerializer.deserialize(OptionSerializer.scala:29)
    at org.apache.flink.api.scala.typeutils.CaseClassSerializer.deserialize(CaseClassSerializer.scala:126)
    at org.apache.flink.api.scala.typeutils.CaseClassSerializer.deserialize(CaseClassSerializer.scala:32)
    at org.apache.flink.streaming.runtime.streamrecord.StreamElementSerializer.deserialize(StreamElementSerializer.java:191)
    at org.apache.flink.streaming.runtime.streamrecord.StreamElementSerializer.deserialize(StreamElementSerializer.java:46)
    at org.apache.flink.runtime.plugable.NonReusingDeserializationDelegate.read(NonReusingDeserializationDelegate.java:53)
    at org.apache.flink.runtime.io.network.api.serialization.SpillingAdaptiveSpanningRecordDeserializer.readNextRecord(SpillingAdaptiveSpanningRecordDeserializer.java:110)
    at org.apache.flink.runtime.io.network.api.serialization.SpillingAdaptiveSpanningRecordDeserializer.getNextRecord(SpillingAdaptiveSpanningRecordDeserializer.java:93)
    at org.apache.flink.streaming.runtime.io.AbstractStreamTaskNetworkInput.emitNext(AbstractStreamTaskNetworkInput.java:95)
    at org.apache.flink.streaming.runtime.io.StreamOneInputProcessor.processInput(StreamOneInputProcessor.java:65)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.processInput(StreamTask.java:496)
    at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:203)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:809)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:761)
    at org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:958)
    at org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:937)
    at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:766)
    at org.apache.flink.runtime.taskmanager.Task.run(Task.java:575)
    at java.base/java.lang.Thread.run(Unknown Source)
Caused by: com.esotericsoftware.kryo.KryoException: java.io.EOFException: No more bytes left.
    at org.apache.flink.api.java.typeutils.runtime.NoFetchingInput.readBytes(NoFetchingInput.java:128)
    at com.esotericsoftware.kryo.io.Input.readBytes(Input.java:314)
    at com.twitter.chill.protobuf.ProtobufSerializer.read(ProtobufSerializer.java:73)
    ... 23 more
Caused by: java.io.EOFException: No more bytes left.
    ... 26 more

Protobuf + Kryo read + EOFException 表明問題可能出在讀取檢查點或保存點上。

我應該看什么?

該問題與添加到作為此作業輸入的 Kafka 主題的錯誤墓碑有關。

Kafka 區分null和空的""值。 我錯誤地輸入了""而不是 null。


從錯誤堆棧跟蹤來看,問題不是發生在解串器代碼下,而是發生在其他地方。 不確定它如何構建一個 Protobuf Object 然后 Kryo 無法序列化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM