【问题标题】:fail to upload jar in Flink 1.5 using java rest client使用java rest客户端无法在Flink 1.5中上传jar
【发布时间】:2018-10-25 16:27:59
【问题描述】:

使用 java REST 客户端将 jar 上传到 Flink 1.5.0 服务器时,我们收到错误响应 {"errors":["Internal server error: null"]}。相同的代码在 Flink 1.4.2 中可以正常工作。实际上我们可以看到 jar 已经从 Flink GUI 上传。但是错误的状态打破了逻辑。请问有什么建议吗?

        HttpPost uploadFile = new HttpPost(flinkJobManagerUrl + "/jars/upload");
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.addBinaryBody(
                "jarfile",
                new FileInputStream(f),
                ContentType.create("application/x-java-archive"),
                f.getName()
        );

        HttpEntity multipart = builder.build();
        uploadFile.setEntity(multipart);
        CloseableHttpResponse response = restClient.execute(uploadFile);
        rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

===========================

来自 JM 日志的错误:

018-06-01 16:05:46,514 WARN org.apache.flink.runtime.dispatcher.DispatcherRestEndpoint - 未处理的异常 org.apache.flink.shaded.netty4.io.netty.handler.codec.http.multipart.HttpPostRequestDecoder$EndOfDataDecoderException 在 org.apache.flink.shaded.netty4.io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.hasNext(HttpPostMultipartRequestDecoder.java:366) 在 org.apache.flink.shaded.netty4.io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.hasNext(HttpPostRequestDecoder.java:241) 在 org.apache.flink.runtime.rest.FileUploadHandler.channelRead0(FileUploadHandler.java:92) 在 org.apache.flink.runtime.rest.FileUploadHandler.channelRead0(FileUploadHandler.java:51) 在 org.apache.flink.shaded.netty4.io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) 在 org.apache.flink.shaded.netty4.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339) 在 org.apache.flink.shaded.netty4.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324) 在 org.apache.flink.shaded.netty4.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242) 在 org.apache.flink.shaded.netty4.io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:147) 在 org.apache.flink.shaded.netty4.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339) 在 org.apache.flink.shaded.netty4.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324) 在 org.apache.flink.shaded.netty4.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:847) 在 org.apache.flink.shaded.netty4.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) 在 org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) 在 org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 在 org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 在 org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 在 org.apache.flink.shaded.netty4.io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111) 在 org.apache.flink.shaded.netty4.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) 在 java.lang.Thread.run(Thread.java:748)


但过了一会儿你会看到从 GUI 上传的 jar。但是当运行它时,它会给出另一个异常:

2018-06-01 16:10:06,752 错误 org.apache.flink.runtime.webmonitor.handlers.JarRunHandler - REST 处理程序中发生异常。 org.apache.flink.runtime.rest.handler.RestHandlerException: 只需要一个值 [--KAFKA_IN a_O@192.168.56.120:9092, 192.168.56.121:9092, 192.168.56.122:9092/a_O_124 --ZK_SESSION_TIMEOUT 600ALIVE 600ALIVE--ZKK 1]。 在 org.apache.flink.runtime.rest.handler.util.HandlerRequestUtils.getQueryParameter(HandlerRequestUtils.java:56) 在 org.apache.flink.runtime.rest.handler.util.HandlerRequestUtils.getQueryParameter(HandlerRequestUtils.java:44) 在 org.apache.flink.runtime.webmonitor.handlers.JarRunHandler.handleRequest(JarRunHandler.java:102) 在 org.apache.flink.runtime.webmonitor.handlers.JarRunHandler.handleRequest(JarRunHandler.java:68) 在 org.apache.flink.runtime.rest.handler.AbstractRestHandler.respondToRequest(AbstractRestHandler.java:77) 在 org.apache.flink.runtime.rest.AbstractHandler.respondAsLeader(AbstractHandler.java:168) 在 org.apache.flink.runtime.rest.handler.RedirectHandler.lambda$null$0(RedirectHandler.java:139) 在 java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760) 在 java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:736) 在 java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:442) 在 org.apache.flink.shaded.netty4.io.netty.util.concurrent.SingleThreadEventExecutor.runAllTask​​s(SingleThreadEventExecutor.java:357) 在 org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357) 在 org.apache.flink.shaded.netty4.io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111) 在 org.apache.flink.shaded.netty4.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) 在 java.lang.Thread.run(Thread.java:748)

【问题讨论】:

  • 您能否与我们共享集群入口点/作业管理器日志。它们应该包含问题。
  • 上面更新了错误,@TillRohrmann 有什么线索吗?谢谢

标签: apache-flink flink-streaming


【解决方案1】:

第一个异常是由于 FileUploadHandler 中的错误引起的;它不能正确处理 EmptyLastHttpContent 消息。见https://issues.apache.org/jira/browse/FLINK-9500

第二个异常是由于程序参数中有空格引起的,从 1.5 开始不再支持。

【讨论】:

  • 谢谢@ChesnaySchepler,知道什么时候修复这个错误吗?
  • 1.5.1 我想,但我们还没有日期。 jar 仍应正确上传,因此您应该可以安全地忽略它。
  • 但根据 1.5.0 文档,程序参数看起来没有变化 :( 部分“来自命令行参数”ci.apache.org/projects/flink/flink-docs-release-1.5/dev/…
  • 那是 CLI 的。提交失败是因为 REST API 现在以不同方式解析查询参数,因为它实际上关心逗号(允许单个查询参数有多个值)。
【解决方案2】:

关于第二个例外,您可以将您的 programArgs 用逗号放入 post 请求正文中,如

{
  "programArgs":"--test=a,b"
}

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 2018-01-01
    • 2011-11-04
    • 1970-01-01
    相关资源
    最近更新 更多