Java 卡夫卡->;风暴->;flink:意外的块数据

Java 卡夫卡->;风暴->;flink:意外的块数据,java,apache-storm,apache-flink,Java,Apache Storm,Apache Flink,我正在将拓扑结构从storm移动到flink。拓扑已缩减为KafkaSpout->Bolt。螺栓只是计算数据包,而不是试图解码它们 编译后的.jar通过flink-c提交给flink,并出现以下错误: java.lang.Exception: Call to registerInputOutput() of invokable failed at org.apache.flink.runtime.taskmanager.Task.run(Task.java:529)

我正在将拓扑结构从storm移动到flink。拓扑已缩减为
KafkaSpout->Bolt
。螺栓只是计算数据包,而不是试图解码它们

编译后的.jar通过
flink-c
提交给flink,并出现以下错误:

java.lang.Exception: Call to registerInputOutput() of invokable failed
        at org.apache.flink.runtime.taskmanager.Task.run(Task.java:529)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot instantiate user function.
        at org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:190)
        at org.apache.flink.streaming.runtime.tasks.StreamTask.registerInputOutput(StreamTask.java:174)
        at org.apache.flink.runtime.taskmanager.Task.run(Task.java:526)
        ... 1 more
Caused by: java.io.StreamCorruptedException: unexpected block data
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1365)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
        at org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:294)
        at org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:255)
        at org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:175)
        ... 3 more
我的问题:

  • 我是否错过了带有卡夫卡式输出的配置步骤?这是工作时,在香草风暴使用
  • 我需要使用storm库的特定版本吗?我的构建中包含了0.9.4
  • 还有什么我可能错过的
  • 我应该用暴风雪卡夫卡斯波特还是用弗林克写我自己的呢


    编辑:

    以下是相关代码:

    拓扑结构: 初始化:
    该螺栓是基于。execute()。那里没有其他代码。

    我刚看过这个。现在有一个问题,但我在本地解决了。您可以将此热修复应用于代码,并自行构建兼容层

  • KafkaSpout
    注册度量。但是,兼容性层目前不支持度量。您需要删除
    FlinkTopologyContext.registerMetric(…)
    中的异常,只需返回
    null
    。(已经有一个开放的PR在集成度量,因此我不想把这个热修复程序推到master branch中)
  • 此外,您需要手动向查询中添加一些配置参数:
  • 我只是在这里编了一些值:

    Config c = new Config();
    List<String> zkServers = new ArrayList<String>();
    zkServers.add("localhost");
    c.put(Config.STORM_ZOOKEEPER_SERVERS, zkServers);
    c.put(Config.STORM_ZOOKEEPER_PORT, 2181);
    c.put(Config.STORM_ZOOKEEPER_SESSION_TIMEOUT, 30);
    c.put(Config.STORM_ZOOKEEPER_CONNECTION_TIMEOUT, 30);
    c.put(Config.STORM_ZOOKEEPER_RETRY_TIMES, 3);
    c.put(Config.STORM_ZOOKEEPER_RETRY_INTERVAL, 5);
    
    这对我来说很有效,使用Kafka_2.10-0.8.1.1
    flinklocluster
    在Eclipse中执行

    它还可以在通过
    bin/start local streaming.sh启动的本地Flink集群中工作。为此,使用
    bin/flink run
    命令,您需要使用
    FlinkSubmitter
    而不是
    flinklocluster
    。此外,您的jar需要以下依赖项:

    <include>org.apache.storm:storm-kafka</include>
    <include>org.apache.kafka:kafka_2.10</include>
    <include>org.apache.curator:curator-client</include>
    <include>org.apache.curator:curator-framework</include>
    <include>com.google.guava:guava</include>
    <include>com.yammer.metrics:metrics-core</include>
    
    org.apache.storm:storm kafka
    org.apache.kafka:kafka_2.10
    策展人:策展人客户
    策展人:策展人框架
    番石榴:番石榴
    metrics:metrics核心
    
    Storm的卡夫卡斯波特从未在弗林克进行过测试。你能把你的密码寄给我吗?我不知道怎么联系你。更新了一些代码剪贴。谢谢。我来看看。顺便说一句:;)
    Config c = new Config();
    List<String> zkServers = new ArrayList<String>();
    zkServers.add("localhost");
    c.put(Config.STORM_ZOOKEEPER_SERVERS, zkServers);
    c.put(Config.STORM_ZOOKEEPER_PORT, 2181);
    c.put(Config.STORM_ZOOKEEPER_SESSION_TIMEOUT, 30);
    c.put(Config.STORM_ZOOKEEPER_CONNECTION_TIMEOUT, 30);
    c.put(Config.STORM_ZOOKEEPER_RETRY_TIMES, 3);
    c.put(Config.STORM_ZOOKEEPER_RETRY_INTERVAL, 5);
    
    <dependency>
        <groupId>org.apache.storm</groupId>
        <artifactId>storm-kafka</artifactId>
        <version>0.9.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.10</artifactId>
        <version>0.8.1.1</version>
    </dependency>
    
    <include>org.apache.storm:storm-kafka</include>
    <include>org.apache.kafka:kafka_2.10</include>
    <include>org.apache.curator:curator-client</include>
    <include>org.apache.curator:curator-framework</include>
    <include>com.google.guava:guava</include>
    <include>com.yammer.metrics:metrics-core</include>