环境准备与初体验:本地 Standalone 集群搭建、Flink SQL Client 启动、第一个 SELECT 'Hello Flink' 查询
说实话,很多初学者一上来就盯着复杂的流处理逻辑看,结果环境都没配通,热情先凉了一半。我个人习惯是——先把环境跑起来,看到输出,心里才有底。这一章我们就干三件事:搭一个本地 Standalone 集群、启动 SQL Client、跑出你的第一个 Flink SQL 查询。
1. 环境依赖:先确认你的机器准备好了
在动手之前,先检查一下基础环境。Flink 依赖 Java,这是硬门槛。
| 依赖项 | 版本要求 | 验证命令 |
|---|---|---|
| Java | Java 8 或 11(推荐 11) | java -version |
| SSH(可选) | 用于远程节点通信 | ssh localhost |
确认 Java 没问题后,去 Flink 官网下载一个稳定版本。我个人推荐 Flink 1.17 或 1.18,社区活跃,坑也少。下载后解压到本地目录,比如 /opt/flink 或 ~/flink。
2. 本地 Standalone 集群搭建
Standalone 模式是最简单的部署方式。说白了,就是 Flink 自己管理资源,不依赖 YARN 或 Kubernetes。适合本地开发和测试。
2.1 启动集群
进入 Flink 解压目录,执行启动脚本:
cd /opt/flink
./bin/start-cluster.sh
启动后,你会看到类似这样的输出:
Starting cluster.
Starting standalonesession daemon on host localhost.
Starting taskexecutor daemon on host localhost.
嗯,这里要注意:如果启动失败,八成是端口被占用了。Flink 默认使用 8081(Web UI)和 6123(RPC)。你可以用 netstat -tlnp | grep 8081 检查一下。
2.2 验证集群状态
打开浏览器,访问 http://localhost:8081。你会看到 Flink 的 Web Dashboard。如果页面正常显示,说明集群已经跑起来了。
在 Dashboard 上,你可以看到:
- Job Manager 状态:Running
- Task Managers 数量:默认 1 个
- Slots 数量:默认 1 个(可以调整)
conf/flink-conf.yaml 中修改 taskmanager.numberOfTaskSlots: 4,然后重启集群。我在项目中经常调大这个值,方便并行测试。
2.3 关闭集群
用完记得关掉,别占着资源:
./bin/stop-cluster.sh
3. Flink SQL Client 启动
集群跑起来后,我们启动 SQL Client。这是一个交互式命令行工具,让你可以直接写 SQL 查询 Flink 表。
3.1 启动 SQL Client
./bin/sql-client.sh
启动后,你会看到类似这样的界面:
Flink SQL>
如果启动失败,检查一下集群是否在运行。SQL Client 需要连接到一个正在运行的 Job Manager。
No job manager found 的错误。原因很简单——忘了先启动集群。记住顺序:先 start-cluster.sh,再 sql-client.sh。
3.2 配置 SQL Client(可选)
SQL Client 支持通过 YAML 文件配置。你可以在 conf/sql-client-defaults.yaml 中设置 Catalog、Table 等。不过刚开始,我们先用默认配置就够了。
4. 第一个 SELECT 'Hello Flink' 查询
好,环境都准备好了。现在我们来跑第一个查询。在 SQL Client 中输入:
Flink SQL> SELECT 'Hello Flink';
按下回车,你会看到:
+----+--------------+
| op | EXPR$0 |
+----+--------------+
| +I | Hello Flink |
+----+--------------+
1 row in set
看到这个输出,说明你的 Flink SQL 环境已经完全通了。这个查询虽然简单,但它验证了整个链路:
- 集群正常运行
- SQL Client 连接成功
- SQL 解析和执行引擎工作正常
5. 知识体系:本章核心逻辑
为了让你更直观地理解本章的内容,我画了一张流程图。它展示了从环境准备到第一个查询的完整链路。
6. 常见问题与避坑指南
我在带团队的时候,发现新手最容易在这几个地方卡住。列出来,你遇到了直接对照排查。
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 集群启动失败 | 端口被占用 | 检查 8081、6123 端口,释放后重试 |
| SQL Client 连不上 | 集群未启动 | 先执行 start-cluster.sh |
| 查询无结果 | SQL 语法错误 | 检查分号、引号是否匹配 |
| Web UI 打不开 | 防火墙或绑定地址问题 | 检查 rest.bind-address 配置 |
/etc/hosts 中 localhost 被映射到了 IPv6 地址。改成 127.0.0.1 就好了。这种小问题最坑人,建议你遇到类似情况先检查网络配置。
7. 本章小结
这一章我们完成了三件事:
- 搭建了本地 Standalone 集群
- 启动了 Flink SQL Client
- 执行了第一个 SELECT 查询
说白了,环境准备是后续所有操作的基础。你想想看,如果连 SELECT 'Hello Flink' 都跑不出来,后面那些复杂的窗口聚合、维表 Join 就更别想了。所以这一步一定要走稳。
嗯,到这里,你的 Flink SQL 开发环境已经就绪了。接下来就可以开始真正接触 Flink SQL 的核心概念了。