马鞍山市网站建设_网站建设公司_Logo设计_seo优化
2025/12/22 21:13:54 网站建设 项目流程

我已经安装了Flink 2.0.1,它包含Flink SQL Gateway吗?

 

1. 它是官方标准组件吗?

是的。 从 Flink 1.16 版本开始,Flink SQL Gateway 就已经正式从外部项目合并到了 Flink 的核心发行包中。

只要你安装的是最近两年的主流版本(如 1.16, 1.17, 1.18, 1.19, 1.20),你的安装目录下一定已经包含了它。


2. 如何确认它在不在?

你可以进入你的 Flink 安装目录进行检查:

  • 脚本文件: 检查 bin/ 目录。你应该能看到 sql-gateway.sh 文件。

    ls bin/sql-gateway.sh
    
  • 库文件: 检查 lib/ 目录。你应该能看到类似 flink-sql-gateway-*.jar 的文件。


3. 如何启动它?

  1. 启动前置: 确保你的 Flink Session 集群(JobManager/TaskManager)已经启动。

  2. 启动 Gateway:

    sql-gateway.sh start -Dsql-gateway.endpoint.rest.address=0.0.0.0 -Dsql-gateway.endpoint.rest.port=8083

     

    Check log files to make sure it started successfully:

    (airflow-venv) frank@ZZHPC:~/download/flink-2.0.1/log$ lh | grep gateway
    -rw-r--r--  1 frank frank    0 Dec 22 21:01 flink-frank-sql-gateway-1-ZZHPC.out
    -rw-r--r--  1 frank frank  15K Dec 22 21:01 flink-frank-sql-gateway-1-ZZHPC.log

     

    (airflow-venv) frank@ZZHPC:~/download/flink-2.0.1/log$ netstat -tuln | grep 8083
    tcp6       0      0 :::8083                 :::*                    LISTEN

     

  3. 验证: 你可以通过 curl 访问它的 REST API 来验证:

    (airflow-venv) frank@ZZHPC:~/download/flink-2.0.1/log$ curl http://localhost:8083/v1/info
    {"productName":"Apache Flink","version":"2.0.1"}(airflow-venv)

     


4. 面试题:为什么要单独启动它?

如果面试官问:“既然有了 sql-client.sh,为什么还要单独起一个 sql-gateway.sh?”

你可以这样回答:

  • 多客户端接入: sql-client 只能一个人用命令行。sql-gateway 启动后,你可以同时让 ZeppelinDBeaver(通过 JDBC)或者你自研的 Web UI 同时连接进来。

  • 状态保持: SQL Gateway 维护了用户的 Session。即便你的 Zeppelin 页面刷新了,Gateway 里的临时表和视图依然存在。

  • JDBC 支持: Flink 提供了一个 SQL JDBC Driver,这个 Driver 底层就是通过 REST 协议去连接 SQL Gateway 的。

 

 

在 Zeppelin 中配置 Flink Interpreter 以连接 SQL Gateway,需要在 Zeppelin 的 Web 界面进行设置。

以下是具体的关键参数配置清单(在 Interpreter 设置页面找到 flink 分组):

1. 核心连接参数

这些参数决定了 Zeppelin 如何找到你的 SQL Gateway。

参数名 推荐值/示例 说明
flink.execution.mode remote 必须设置为 remote 模式才能连接外部 Gateway
flink.sql.gateway.address 192.168.1.100 运行 SQL Gateway 服务的 IP 地址。
flink.sql.gateway.port 8083 SQL Gateway 默认端口是 8083。
FLINK_HOME /opt/flink 非常重要:Zeppelin 本机也需要一份 Flink 二进制包,以便调用本地类库。

2. 运行时与资源配置

为了确保 SQL 任务能顺利提交,建议同时检查以下参数:

  • flink.address: 设置为你的 JobManager 地址(例如 localhost:8081)。

  • flink.main.container.image: 如果你在 Kubernetes 上运行,这里需要填入 Flink 的镜像名。

  • zeppelin.flink.enable.sql.gateway: 设置为 true


3. 如何在 Zeppelin 中使用(代码层)

配置完成后,在 Zeppelin 的笔记(Note)里,你需要使用专用的前缀来切换到 SQL Gateway 模式:

  • 流处理 SQL: %flink.ssql

  • 批处理 SQL: %flink.bsql

示例代码:

%flink.ssql(type=update)-- 这里的查询会通过 SQL Gateway 发送到 Flink 集群
SELECT window_start, window_end, COUNT(*) 
FROM TABLE(TUMBLE(TABLE MySensorTable, DESCRIPTOR(ts), INTERVAL '1' MINUTE))
GROUP BY window_start, window_end;

 

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询