Flink使用之SQL Client

前言

Flink提供了SQL Client端,有了它我们可以像Hive的beeline一样直接在控制台编写SQL并提交作业。这里与FlinkSQL不同的是,虽然FlinkSQL实现了可以在Flink程序中写SQL,但还是需要写一些java和scala代码,Flink提供了SQL Client可以帮助不会写java和scala的程序员快速上手。

如何使用

Flink SQL client支持运行在standalone集群和Yarn集群上。在提交任务的命令有所不同。

SQL client运行于standalone模式:

  1. 事先启动一个Flink standalone集群

./start-cluster.sh

  1. 启动sql-client on standalone
1
./sql-client.sh embedded

注意。如果使用standalone模式运行,需要事先启动一个Flink standalone集群。方法如下

1
./start-cluster.sh

默认情况下,这个sql-client上面所跑的任务,会提交到flink的standalone集群上,如果你没有bin/start-cluster.sh启动standalon集群,那么sql-client进程可以启动起来,但是在实际执行sql的时候,会报如下连接拒绝的错误

运行到Yarn集群上:

  1. 启动一个yarn-session集群
1
2
3
4
5
6
# 进入flink安装目录
cd {Flink_ENV}
# 执行
./bin/yarn-session.sh -s 2 -jm 1024 -tm 2048 -nm test1 -d
# -d 表示detach()放在后台执行
# -nm 名字
  1. 启动sql-client on yarn-session

./sql-client.sh embedded -s yarn-session

1
2
3
4
或者bin/sql-client.sh embedded -e sql-env.yaml
# sql-env.yaml文件内容为:
configuration:
execution.target: yarn-session

大家可能会问:SQL slient怎么知道提交到哪个yarn app上?

指定yarn-session方式启动的时候会看到如下日志:

1
INFO  org.apache.flink.yarn.cli.FlinkYarnSessionCli                [] - Found Yarn properties file under /tmp/.yarn-properties-root.

Flink每次启动yarn-session,都会创建一个/tmp/.yarn-properties-root文件(root为用户名,源码位于FlinkYarnSessionCli)。内容如下:

1
2
dynamicPropertiesString=
applicationID=application_xxxxxxxxxxxxx_xxxx

记录了最近一次提交的yarn session对应的application ID。SQL client如果使用yarn session模式启动,会查找/tmp/.yarn-properties-root文件中指定的application id,将SQL提交到这个yarn session上运行。

参考:

Flink官网

CSDN博客


觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭



wechat pay



alipay

Flink使用之SQL Client
http://yuting0907.github.io/2022/08/20/Flink使用之SQL-Client/
作者
Echo Yu
发布于
2022年8月20日
许可协议