当前位置: 首页 > news >正文

Flink SQL执行SQL错误排查

通过命令${FLINK_HOME}/bin/sql-client.sh embedded -i ${FLINK_HOME}/conf/sql_client_init.sql -s yarn-session
启动FLINK SQL Client后,执行一个简单的sql出错了,报错如下:

Flink SQL> select 1;Caused by: org.apache.flink.shaded.netty4.io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:8081
Caused by: java.net.ConnectException: Connection refusedat sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:1.8.0_191]at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) ~[?:1.8.0_191]at org.apache.flink.shaded.netty4.io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:330) ~[flink-dist_2.12-1.13.6.jar:1.13.6]at org.apache.flink.shaded.netty4.io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334) ~[flink-dist_2.12-1.13.6.jar:1.13.6]at org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:702) ~[flink-dist_2.12-1.13.6.jar:1.13.6]at org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650) ~[flink-dist_2.12-1.13.6.jar:1.13.6]at org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576) ~[flink-dist_2.12-1.13.6.jar:1.13.6]at org.apache.flink.shaded.netty4.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) ~[flink-dist_2.12-1.13.6.jar:1.13.6]at org.apache.flink.shaded.netty4.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[flink-dist_2.12-1.13.6.jar:1.13.6]at org.apache.flink.shaded.netty4.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[flink-dist_2.12-1.13.6.jar:1.13.6]at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_191]

从报错信息来看,Flink SQL执行select 1时,尝试连接 localhost:8081(Flink Web UI默认端口)失败,核心原因是Flink集群(或Session)未启动,或客户端配置的连接地址与集群实际地址不匹配。

错误原因拆解:

Flink SQL执行查询时,需要与Flink集群的 JobManager 通信(默认通过8081端口交互)。报错Connection refused说明:

  1. Flink集群未启动:本地/目标机器上没有运行Flink JobManager进程,8081端口未被监听。
  2. 客户端连接地址配置错误:Flink客户端默认连接localhost:8081,但实际Flink集群部署在其他机器(如之前的hadoop103),导致连接本地失败。
  3. 端口被占用或防火墙拦截:8081端口被其他进程占用,或防火墙禁止访问该端口(可能性较低,因select 1是轻量查询,优先排查前两点)。

解决步骤:

1. 确认Flink集群状态(优先检查)

首先判断Flink集群是否已启动,以及8081端口是否被监听:

# 1. 检查本地Flink进程(JobManager/TaskManager)
jps  # 正常启动会显示 "StandaloneSessionClusterEntrypoint"(JobManager)和 "TaskManagerRunner"(TaskManager)# 2. 检查8081端口是否被监听
netstat -tuln | grep 8081  # Linux/Mac
# 或 Windows 命令:netstat -ano | findstr "8081"# 若以上命令无输出,说明Flink集群未启动,需启动集群
2. 启动Flink集群(根据部署模式选择)

根据你之前使用的YARN集群模式,选择对应的启动方式:

方式1:启动Flink YARN Session Cluster(会话模式,适合多作业共享)
# 启动YARN会话集群(指定资源,如2个TaskManager,每个4GB内存)
$FLINK_HOME/bin/yarn-session.sh -n 2 -tm 4096 -s 2
# 启动成功后,会显示 JobManager 的 Web UI 地址(如 http://hadoop104:39911)
# 同时记录下 YARN 应用ID(如 application_xxxxxx_0001)

或以后台方式启动yarn-session,方便我们对资源进行管理:

$FLINK_HOME/bin/yarn-session.sh -d

方式2:直接提交Per-Job Cluster(单作业模式,无需预先启动会话)

若不想启动长期会话,可在执行SQL时直接指定YARN集群模式,自动创建单作业集群:

# 启动Flink SQL客户端,并指定连接YARN集群
$FLINK_HOME/bin/sql-client.sh embedded -m yarn-cluster
# 进入客户端后,直接执行 select 1;
3. 修正Flink客户端连接地址(若集群不在本地)

若Flink集群部署在远程机器(如hadoop103),而非本地localhost,需强制指定客户端连接的JobManager地址:

# 方式1:启动SQL客户端时,直接指定远程JobManager地址(需替换为实际地址和端口)
$FLINK_HOME/bin/sql-client.sh embedded -m hadoop103:8081# 方式2:若使用YARN Session,启动时指定YARN应用ID(确保会话已启动)
$FLINK_HOME/bin/sql-client.sh embedded -m yarn-cluster -yid application_xxxxxx_0001

注意:YARN Session的JobManager端口不是固定8081(YARN会动态分配端口),需从YARN Session启动日志中获取实际端口(如之前的hadoop104:39911)。

4. 验证连接是否正常

启动集群后,先通过Web UI确认集群可用:

  • 访问JobManager Web UI地址(如http://hadoop104:39911),若能打开页面,说明集群正常。
  • 再执行select 1;,此时客户端能正常连接集群,查询会成功执行。

常见问题排查:

  • YARN资源不足导致启动失败:若yarn-session.sh启动失败,查看YARN日志(yarn logs -applicationId 应用ID),确认是否因内存/CPU不足导致,可减少-tm(TaskManager内存)或-n(TaskManager数量)。
  • 端口被占用:若netstat显示8081已被占用,修改Flink配置flink-conf.yaml中的rest.port为其他空闲端口(如8082),重启集群。

总结:

该错误的核心是“Flink客户端找不到可连接的JobManager”,通过启动Flink集群(YARN Session或Per-Job)确保客户端连接地址正确,即可解决。优先选择方式2(-m yarn-cluster),无需手动管理端口,适配YARN动态分配的特性。

http://www.xdnf.cn/news/1360135.html

相关文章:

  • MySQL的安装和卸载指南(入门到入土)
  • ZKmall模块商城的推荐数据体系:从多维度采集到高效存储的实践
  • 从“小麻烦”到“大难题”:Spring Boot 配置文件的坑与解
  • 04-ArkTS编程语言入门
  • 使用UE5开发《红色警戒3》类战略养成游戏的硬件配置指南
  • 源码导航页
  • Linux网络启程
  • 毛选一卷解析
  • 时间复杂度
  • C++STL底层原理:探秘标准模板库的内部机制
  • 大数据毕业设计选题推荐:基于Spark+Django的学生创业数据分析可视化系统详解 毕业设计/选题推荐/深度学习/数据分析/数据挖掘/机器学习/随机森林
  • Go语言IDE安装与配置(VSCode)
  • wpf之DockPanel
  • Python 闭包详解
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十三)菜单、右键菜单
  • JDK版本报错
  • Function + 枚举 + Map:轻量路由器的最佳实践
  • [GeographicLib] LocalCartesian用法
  • 时序数据库选型“下半场”:从性能竞赛到生态博弈,四大主流架构深度横评
  • Palantir Foundry 领先其他数据平台5到10年:一位使用者的深入观察
  • 门面设计模式
  • 第4章 SPSS简介与数据库构建
  • 网络协议---TCP
  • 最大连续1的个数Ⅲ-滑动窗口
  • 2025/8/24 DockerDesktop安装使用
  • 【网络运维】Shell 脚本编程:while 循环与 until 循环
  • 审核问题——应用未配置图标的前景图和后景图
  • JUC——AQS
  • 客流特征识别误报率↓76%!陌讯多模态时序融合算法在智慧零售的实战解析
  • 蓝凌EKP产品:从 XML 到 JSON ——表单存储的性能优化实践