运行本地主机集群时出现异常

问题描述 投票:0回答:2

我是 Flink 新手。我在计算机上运行本地集群时遇到问题。部分关键软件信息如下:

  • Flink 版本:Scala 2.11 为 1.13.0;
  • 操作系统:Fedora 34;
  • Java版本:16;
  • Scala 版本:2.11.12。

当我通过命令行启动本地集群时,从命令行看来一切都很好,但我无法访问

localhost:8081
。无法打开。此外,当我运行 Flink 示例时出现异常:

[root@localhost flink-1.13.0]# ./bin/start-cluster.sh
Starting cluster.
Starting standalonesession daemon on host fedora.
Starting taskexecutor daemon on host fedora.
[root@localhost flink-1.13.0]# ./bin/flink run examples/streaming/WordCount.jar
Executing WordCount example with default input data set.
Use --input to specify file input.
Printing result to stdout. Use --output to specify output path.

------------------------------------------------------------
 The program finished with the following exception:

org.apache.flink.client.program.ProgramInvocationException: The main method caused an error: Unable to make field private final byte[] java.lang.String.value accessible: module java.base does not "opens java.lang" to unnamed module @2baf3d81
at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:372)
at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:222)
at org.apache.flink.client.ClientUtils.executeProgram(ClientUtils.java:114)
at org.apache.flink.client.cli.CliFrontend.executeProgram(CliFrontend.java:812)
at org.apache.flink.client.cli.CliFrontend.run(CliFrontend.java:246)
at org.apache.flink.client.cli.CliFrontend.parseAndRun(CliFrontend.java:1054)
at org.apache.flink.client.cli.CliFrontend.lambda$main$10(CliFrontend.java:1132)
at org.apache.flink.runtime.security.contexts.NoOpSecurityContext.runSecured(NoOpSecurityContext.java:28)
at org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1132)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final byte[] java.lang.String.value accessible: module java.base does not "opens java.lang" to unnamed module @2baf3d81
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:177)
at java.base/java.lang.reflect.Field.setAccessible(Field.java:171)
at org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:106)
at org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:132)
at org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:132)
at org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:69)
at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.clean(StreamExecutionEnvironment.java:2053)
at org.apache.flink.streaming.api.datastream.DataStream.clean(DataStream.java:203)
at org.apache.flink.streaming.api.datastream.DataStream.addSink(DataStream.java:1243)
at org.apache.flink.streaming.api.datastream.DataStream.print(DataStream.java:937)
at org.apache.flink.streaming.examples.wordcount.WordCount.main(WordCount.java:94)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:355)
... 8 more

我尝试在线搜索解决方案,但到目前为止对我没有任何用处。

java localhost apache-flink
2个回答
3
投票

Flink 不支持 Java 16。您需要 Java 8 或 11。


0
投票

这不是这个问题的直接答案,但仍然相关。

  • InaccessibleObjectException
    :
    Flink 1.18 添加了对(最高?)Java 17 的支持。但仍然有可能遇到这个问题。存在一种解决方法,可能也适用于 Flink 1.13 / Java 16。

    通过添加 --add-opens 可以在整个集群上防止该问题。由于某种原因,该选项未应用于独立执行模式,导致失败。您可以通过

    将其添加到独立模式
    env FLINK_ENV_JAVA_OPTS=--add-opens=java.base/java.lang=ALL-UNNAMED \
      ./bin/flink run ./examples/streaming/WordCount.jar
    

    (可能会出现更多错误,您可能需要添加更多

    --add-opens

  • 无法访问

    localhost:8081
    的WebUI: 独立模式下默认未配置 WebUI,您可以在命令行上启用该选项:

    ./bin/flink run -D rest.port=8081 ./examples/streaming/WordCount.jar
    
© www.soinside.com 2019 - 2024. All rights reserved.