Apache flink Flink群集配置问题-没有可用插槽

Apache flink Flink群集配置问题-没有可用插槽,apache-flink,Apache Flink,我部署了Flink cluster,其并行配置如下: jobmanager.heap.mb: 2048 taskmanager.heap.mb: 2048 taskmanager.numberOfTaskSlots: 5 parallelism.default: 2 但是,如果我尝试运行任何示例或jar,即使使用-p标志,我也会收到以下错误: org.apache.flink.runtime.jobmanager.scheduler.NoResourceAvailableException:

我部署了Flink cluster,其并行配置如下:

jobmanager.heap.mb: 2048
taskmanager.heap.mb: 2048
taskmanager.numberOfTaskSlots: 5
parallelism.default: 2
但是,如果我尝试运行任何示例或jar,即使使用
-p
标志,我也会收到以下错误:

org.apache.flink.runtime.jobmanager.scheduler.NoResourceAvailableException:
没有足够的可用插槽来运行作业。您可以降低操作员并行性或增加配置中每个TaskManager的插槽数。
要调度的任务:接收器:未命名(1/1))@(未分配)-[SCHEDULED]>在共享组中具有组ID<22f48c2454702e474069e455c81a>。调度程序可用的资源:
实例数=0,插槽总数=0,可用插槽数=0
位于org.apache.flink.runtime.jobmanager.scheduler.scheduleTask(scheduler.java:255)
位于org.apache.flink.runtime.jobmanager.scheduler.scheduleInstance(scheduler.java:131)
位于org.apache.flink.runtime.executiongraph.Execution.scheduleforeexecution(Execution.java:303)
位于org.apache.flink.runtime.executiongraph.ExecutionVertex.scheduleForExecution(ExecutionVertex.java:453)
位于org.apache.flink.runtime.executiongraph.ExecutionJobVertex.scheduleAll(ExecutionJobVertex.java:326)
在org.apache.flink.runtime.executiongraph.executiongraph.scheduleForExecution(executiongraph.java:742)
在org.apache.flink.runtime.executiongraph.executiongraph.restart(executiongraph.java:889)上
在org.apache.flink.runtime.executiongraph.restart.FixedDelayRestartStrategy$1.call(FixedDelayRestartStrategy.java:80)
在akka.dispatch.Futures$$anonfun$future$1.apply(future.scala:94)
在scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
在scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
在scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
位于scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
位于scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
位于scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
在scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)中
正如仪表板所示,这并不令人惊讶:


我多次尝试重新启动群集,但它似乎没有使用配置。

异常只是意味着没有任务管理器,因此没有可用的插槽来运行作业。任务管理器完成任务的原因可能很多,例如未完成配置的运行时异常。只需查看日志以了解确切原因。 您需要重新启动集群,当任务管理器在仪表板中可用时,再次运行作业。
您可以在配置中定义适当的重启策略,如FIXED delay restart,以便在真正失败的情况下作业将重试。

我遇到了同样的问题,我记得何时会引发问题,这是因为我为测试新安装了JDK11,这将我的env var
JAVA_HOME
更改为
/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home.

因此,我将JAVA_HOME设置回JDK8使用: export
JAVA\u HOME=/Library/JAVA/JavaVirtualMachines/jdk1.8.0\u 45.jdk/Contents/HOME


一切都很顺利。这是我的Mac电脑的路径,你可以找到自己的
JAVA\u主页
。希望这会有所帮助。

我有一个与你类似的问题。我将flink目录的权限设置为775,然后解决了它。

最后,我得到了flink问题的解决方案。首先,我将解释根本原因,然后解释解决方案

根本原因:无法创建Java虚拟机。 请检查Flink日志并跟踪任务执行者日志

tail-500f flink-root-TASK EXCEUTOR-3-OSBOX.out发现以下日志

Invalid maximum direct memory size: -XX:MaxDirectMemorySize=8388607T
The specified size exceeds the maximum representable size.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
为什么会出现这种情况是因为Java版本不正确。操作系统是基于64位的,但我安装了jdk 32位

解决方案: 1.安装正确的JDK-1.8 64位[任务执行器中的安装错误消失后]

  • 编辑flink-conf.yaml文件更新 taskmanager.numberOfTaskSlots:10 parallelism.default:1
  • 我的问题得到了解决,Flink cluster在本地和云端都能完美运行


    您是否在主菜单的
    任务管理器
    部分看到任务管理器?似乎您没有正在运行的任务管理器或防火墙阻止它们的端口。所以,尝试检查任务管理器的日志(在/log目录中)并检查防火墙设置。实际上,我在
    任务管理器
    部分没有看到任何管理器。任务管理器的日志显示以下错误:
    线程“main”java.lang.UnsupportedClassVersionError:org/apache/flink/runtime/leaderretrieval/leaderRetrievalistener:Unsupported major.minor version 51.0
    在任务管理器节点上使用哪个版本的JRE/JDK?看起来不到7(51英寸),结果我的JobManager机器上有Java1.8,TaskManager机器上有Java1.6。在每台机器上更新到Java1.8后,flink集群都能正常工作(谢谢maxd)。但是,仪表板UI不遵循新群集及其配置,我是否可以重新启动它?是否将
    /conf/masters
    /conf/slaves
    文件中的有效IP设置为?