Docker Standalone模式部署Flink后任务提交成功但不执行问题咨询
可能的问题原因及排查方案
- Slot资源未完成分配
从提供的日志可以看到ResourceManager已经收到了1个slot的申请,但没有后续slot分配完成、算子切换为RUNNING状态的日志,大概率是slot资源不足导致任务无法真正执行。你可以先检查flink-conf.yaml中taskmanager.numberOfTaskSlots的配置值,必须≥1才能满足你的任务需求;另外确认容器分配的CPU、内存资源是否满足Flink TaskManager的启动要求,资源不足会导致TaskManager无法正常初始化slot。你也可以打开Flink UI的Task Managers页面,确认是否有正常注册的TaskManager,以及可用slot数量是否≥1。 - 目录映射或权限异常
你的docker-compose配置将宿主机/flink/data挂载到容器内/data1,首先确认你的Flink程序配置的待读取目录是否为容器内的正确路径/data1,而非本地环境的专属路径;其次排查权限问题:Flink容器默认使用flink用户运行,你可以进入容器执行ls -l /data1检查flink用户是否有该目录的读权限,本地环境运行时通常使用权限更高的用户不会触发该问题,但容器环境会受权限限制。 - 文件监测逻辑未触发
如果你使用的是Flink官方的StreamingFileSource,检查是否配置了过长的文件扫描间隔,导致新增文件无法被及时识别;如果是自定义的文件Source,检查是否存在仅处理程序启动后新生成文件的逻辑,若测试文件是在容器启动前就放入目录的,会被直接跳过。 - 配置路径不匹配
确认你的processor.properties中配置的文件目录、端口等参数是否已经适配容器环境,部分开发者会在本地测试时使用相对路径或者本地专属路径,打包镜像时没有修改为容器内的对应路径,会导致程序找不到目标目录,自然不会产生处理逻辑。
内容的提问来源于stack exchange,提问作者Ignacio Blanco
相关产品推荐
相关产品推荐

