从异常信息中可知JVM 认为你尝试使用的虚拟机选项 -XX:+UseG1GC 是一个实验性(Experimental) 功能。

为了防止用户无意中使用可能不稳定的实验功能,JVM要求必须显式地“解锁”这些选项。这就是为什么它提示你必须通过 -XX:+UnlockExperimentalVMOptions 来启用。
直接后果时由于 JVM 参数校验失败,Java 虚拟机根本无法创建,导致 Kafka 服务进程启动失败并退出。问题的根源在于 JVM 版本的变迁 和 Flink 默认配置的冲突。

由于使用的 Flink 比较新的版本,其 TaskManager 启动脚本中默认的 JVM 参数配置包含了 -XX:+UseG1GC,但由于我们使用的是 JDK 8 比较低的版本,所以导致冲突。

3. 解决方案

因某些原因暂时无法升级 Java,可以修改 Flink 的 TaskManager 启动脚本,增加解锁实验性选项的参数。

打开 bin/taskmanager.sh 文件,找到设置 JVM 参数的地方。通常你会在文件中看到类似这样的代码:

# if no other JVM options are set, set the GC to G1
if [ -z "${FLINK_ENV_JAVA_OPTS}" ] && [ -z "${FLINK_ENV_JAVA_OPTS_TM}" ]; then
    export JVM_ARGS="$JVM_ARGS -XX:+UseG1GC"
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐