per-job cluster 提交flink cdc任务 提交多个后就报错8082端口占用 查看后每台机器的8082 ui都开启了 解决方案只有rest.bind-port设置范围端口吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用 Per-Job Cluster 模式提交 Flink CDC 任务时,如果提交多个任务后出现 8082 端口被占用 的问题,并且发现每台机器的 8082 UI 都开启了,这通常是由于每个 Per-Job Cluster 默认会启动一个独立的 Flink Web UI,而默认端口为 8082。当多个任务同时运行时,可能会导致端口冲突。
以下是解决该问题的详细方案:
rest.bind-port
参数为了避免端口冲突,可以通过设置 rest.bind-port
参数来指定一个端口范围,而不是使用默认的 8082 端口。这是最直接的解决方案。
在提交 Flink 作业时,通过命令行参数或配置文件添加以下参数:
-Drest.bind-port=<起始端口>-<结束端口>
例如:
flink run -t yarn-per-job \
-Drest.bind-port=8083-8183 \
/path/to/your-flink-cdc-job.jar
这样,Flink 会在指定的端口范围内动态分配 Web UI 端口,避免冲突。
如果您的场景允许,可以考虑使用 Session 模式 提交任务,而不是 Per-Job Cluster 模式。Session 模式下,所有任务共享同一个 Flink 集群和 Web UI,因此不会出现端口冲突的问题。
./bin/yarn-session.sh -n <taskmanager数量> -jm <jobmanager内存> -tm <taskmanager内存>
flink run -t yarn-session /path/to/your-flink-cdc-job.jar
如果您使用的是 Kubernetes 或 YARN 作为资源管理器,可以通过调整资源配置来避免端口冲突。
flink-conf.yaml
文件,显式设置 rest.bind-port
参数:
rest.bind-port: 8083-8183
yarn-site.xml
或 Flink 的配置文件,确保每个任务的 Web UI 端口动态分配。如果不需要为每个任务单独开启 Web UI,可以通过禁用 Web UI 来避免端口冲突。
-Drest.enabled=false
如果端口冲突问题频繁发生,可能是集群资源不足或配置不合理导致的。建议检查以下内容: - 虚拟交换机 IP 地址是否充足:如果 Kubernetes 集群中的虚拟交换机 IP 地址不足,可能会导致网络资源分配失败。 - 内存和 CPU 配置是否合理:确保每个任务的资源配置(如 TaskManager 内存、Slot 数量)符合实际需求,避免资源浪费或过度分配。
针对 8082 端口被占用 的问题,推荐的解决方案是 设置 rest.bind-port
参数范围,以动态分配端口。此外,根据实际需求,可以选择切换到 Session 模式 或优化集群资源配置。如果 Web UI 不是必需的,也可以选择关闭 Web UI 以避免端口冲突。
重要提醒:在生产环境中,建议始终保留 Web UI 或其他监控手段,以便及时排查任务运行状态和性能问题。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。