flink standalone集群命令行提交被拒绝
·
1:现象描述
flink standalone集群通过8081web页面提交任务,可以正常运行,
用flink run 命令提交提示:
Caused by: org.apache.flink.shaded.netty4.io.netty.channel.AbstractChannel$AnnotatedConnectException: 拒绝连接: /101.120.102.147:27210
Caused by: java.net.ConnectException: 拒绝连接
2: 解决方式
1:查询 ipv4/ipv6
[root@localhost-03 ~]# netstat -nlutp | grep 8081
tcp6 0 0 :::8081 :::* LISTEN 3075396/java
[root@hatc-03 ~]# netstat -nlutp | grep 6123
tcp6 0 0 :::6123 :::* LISTEN 3075396/java
此时端口正常都指向tcp6
2:可能的原因
Flink 命令行工具使用 Netty 异步 HTTP 客户端 连接 REST API。当它尝试连接时:
发起一个非阻塞连接请求
连接状态变为 EINPROGRESS(进行中),但连接从未完成建立.
IPv6 地址解析问题
系统返回 ::ffff:10.120.92.47(IPv4映射的IPv6地址)
Netty 客户端在处理这种"混合地址"时可能有 bug
// flink 使用异步的 Netty 客户端
Bootstrap b = new Bootstrap();
b.group(eventLoopGroup)
.channel(NioSocketChannel.class)
.handler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) {
// 异步处理器
}
});
// 发起异步连接
ChannelFuture f = b.connect(host, port); // 这里可能卡住
f.sync(); // 等待连接完成 ← 可能在这里超时/卡住
curl 使用简单直接的 IPv4 连接,避开了这个问题
执行:
strace -f -e trace=connect ./bin/flink list 2>&1 | grep -A2 -B2 "connect"
显示:[pid 3246233] connect(28, {sa_family=AF_INET6, sin6_port=htons(8081), … inet_pton(AF_INET6, “::ffff:101.120.102.147”, &sin6_addr) …}
连接的是 IPv6 地址 ::ffff:10.120.92.47(IPv4映射的IPv6地址)
解决方案1:
备份原文件
cp /etc/hosts /etc/hosts.backup
创建新的 hosts 文件,确保 IPv4 在前
cat > /etc/hosts << 'EOF'
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
101.120.102.147 hatc-03
EOF
刷新 DNS 缓存
systemctl restart systemd-resolved 2>/dev/null || true
解决方案2:
# 1. 上传 JAR
curl -4 -s -X POST -H "Expect:" \
-F "jarfile=@/data/module/flink/jars/cngd_12_19.jar" \
http://127.0.0.1:8081/jars/upload
# 会返回类似 {"filename":"cngd_12_19.jar","status":"success"}
# 复制 filename 的值
{"filename":"/data/soft/instance/flink-1.18.1/flink-web-upload/flink-web-upload/2207ff46-ed74-41c4-9f4b-80196496854b_cngd_12_19.jar","status":"success"}[root@hatc-03 sh]#
# 2. 提交作业(替换 YOUR_FILENAME)
curl -4 -X POST "http://127.0.0.1:8081/jars/2207ff46-ed74-41c4-9f4b-80196496854b_cngd_12_19.jar/run" \
-H "Content-Type: application/json" \
-d '{
"entryClass": "com.hatc.app.dwd.apply.grid.AirspaceActivityGridApp",
"parallelism": 1
}'
更多推荐


所有评论(0)