在网关模式下启动 SQL 客户端 CLI

重要

AKS 上的 Azure HDInsight 已于 2025 年 1 月 31 日停用。 了解更多 的信息,请参阅此公告

需要将工作负荷迁移到 Microsoft Fabric 或等效的 Azure 产品,以避免工作负荷突然终止。

重要

此功能目前以预览版提供。 Microsoft Azure 预览版补充使用条款 包括适用于 beta 版、预览版或尚未正式发布为一般可用的 Azure 功能的更多法律条款。 有关此特定预览版的信息,请参阅 Azure HDInsight on AKS 预览版信息。 有关问题或功能建议,请在 AskHDInsight 上提交请求,提供详细信息。关注我们以获取有关 Azure HDInsight 社区的更多更新。

本教程介绍如何在 AKS 上的 HDInsight 上的 Apache Flink 群集 1.17.0 中在网关模式下启动 SQL 客户端 CLI。 在网关模式下,CLI 将 SQL 提交到指定的远程网关以执行语句。

./bin/sql-client.sh gateway --endpoint <gateway address>

注意

在 AKS 上的 HDInsight 上的 Apache Flink 群集中,任何外部连接都将通过 443 端口进行。 但在内部,它会将请求重新路由到 sql-gateway 服务,该服务监听端口 8083。

在 AKS 端检查 SQL 网关服务:

显示如何检查 SQL 网关的屏幕截图。

Flink 的表 & SQL API 使可以使用以 SQL 语言编写的查询,但这些查询需要在用 Java 或 Scala 编写的表程序中嵌入。 此外,在提交到群集之前,需要使用构建工具将这些程序打包。 此功能将 Flink 的使用限制为 Java/Scala 程序员。

SQL 客户端旨在提供一种简单的方法,无需一行 Java 或 Scala 代码即可将表程序写入、调试和提交到 Flink 群集。 SQL 客户端 CLI 允许从命令行上运行的分布式应用程序检索和可视化实时结果。

有关详细信息,请参阅 如何在 webssh上输入 Flink SQL CLI 客户端。

SQL 网关是一项服务,允许远程中的多个客户端以并发方式执行 SQL。 它提供了一种简单的方法来提交 Flink 作业、查找元数据并在线分析数据。

有关详细信息,请参阅 SQL 网关

在 AKS 上的 HDInsight 上的 Apache Flink 群集中,通过运行以下命令在网关模式下启动 SQL 客户端 CLI:

./bin/sql-client.sh gateway --endpoint host:port
 
or
 
./bin/sql-client.sh gateway --endpoint https://fqdn/sql-gateway

在 Azure 门户中获取群集终结点(主机或 fqdn)。

显示群集终结点的屏幕截图。

测试

制备

  1. 从本地 Windows 计算机中的 https://aka.ms/hdionaksflink117clilinux 下载 Flink CLI。

安装适用于 Linux 的 Windows 子系统,以便在本地 Windows 计算机上执行此作。

  1. 打开 Windows 命令并运行(将 JAVA_HOME 和 flink-cli 路径替换为你自己的)以下载 flink-cli:

    Windows Subsystem for Linux --distribution Ubuntu 
    export JAVA_HOME=/mnt/c/Work/99_tools/zulu11.56.19-ca-jdk11.0.15-linux_x64
    cd <folder>
    wget https://hdiconfigactions.blob.core.windows.net/hiloflink17blob/flink-cli.tgz
    tar -xvf flink-cli.tgz
    
  2. 在 flink-conf.yaml 中设置终结点、租户 ID 和端口 443

    user@MININT-481C9TJ:/mnt/c/Users/user/flink-cli$ cd conf
    user@MININT-481C9TJ:/mnt/c/Users/user/flink-cli/conf$ ls -l
    total 8
    -rwxrwxrwx 1 user user 2451 Feb 26 20:33 flink-conf.yaml
    -rwxrwxrwx 1 user user 2946 Feb 23 14:13 log4j-cli.properties
    
    user@MININT-481C9TJ:/mnt/c/Users/user/flink-cli/conf$ cat flink-conf.yaml
    
    rest.address: <flink cluster endpoint on Azure portal>
    azure.tenant.id: <tenant ID>
    rest.port: 443
    
  3. 将本地 Windows 公共 IP 地址(启用了端口 443 和 VPN)加入允许列表,以便在 AKS 集群子网的网络安全入站中启用 HDInsight。

    显示如何允许公共 IP 地址的屏幕截图。

  4. 在 Flink-cli 到 Flink SQL 的网关模式下运行 sql-client.sh。

    bin/sql-client.sh gateway --endpoint https://fqdn/sql-gateway
    

    user@MININT-481C9TJ:/mnt/c/Users/user/flink-cli$ bin/sql-client.sh gateway --endpoint https://fqdn/sql-gateway
    
                                       ▒▓██▓██▒
                                   ▓████▒▒█▓▒▓███▓▒
                                ▓███▓░░        ▒▒▒▓██▒  ▒
                              ░██▒   ▒▒▓▓█▓▓▒░      ▒████
                              ██▒         ░▒▓███▒    ▒█▒█▒
                                ░▓█            ███   ▓░▒██
                                  ▓█       ▒▒▒▒▒▓██▓░▒░▓▓█
                                █░ █   ▒▒░       ███▓▓█ ▒█▒▒▒
                                ████░   ▒▓█▓      ██▒▒▒ ▓███▒
                             ░▒█▓▓██       ▓█▒    ▓█▒▓██▓ ░█░
                       ▓░▒▓████▒ ██         ▒█    █▓░▒█▒░▒█▒
                      ███▓░██▓  ▓█           █   █▓ ▒▓█▓▓█▒
                    ░██▓  ░█░            █  █▒ ▒█████▓▒ ██▓░▒
                   ███░ ░ █░          ▓ ░█ █████▒░░    ░█░▓  ▓░
                  ██▓█ ▒▒▓▒          ▓███████▓░       ▒█▒ ▒▓ ▓██▓
               ▒██▓ ▓█ █▓█       ░▒█████▓▓▒░         ██▒▒  █ ▒  ▓█▒
               ▓█▓  ▓█ ██▓ ░▓▓▓▓▓▓▓▒              ▒██▓           ░█▒
               ▓█    █ ▓███▓▒░              ░▓▓▓███▓          ░▒░ ▓█
               ██▓    ██▒    ░▒▓▓███▓▓▓▓▓██████▓▒            ▓███  █
              ▓███▒ ███   ░▓▓▒░░   ░▓████▓░                  ░▒▓▒  █▓
              █▓▒▒▓▓██  ░▒▒░░░▒▒▒▒▓██▓░                            █▓
              ██ ▓░▒█   ▓▓▓▓▒░░  ▒█▓       ▒▓▓██▓    ▓▒          ▒▒▓
              ▓█▓ ▓▒█  █▓░  ░▒▓▓██▒            ░▓█▒   ▒▒▒░▒▒▓█████▒
               ██░ ▓█▒█▒  ▒▓▓▒  ▓█                █░      ░░░░   ░█▒
               ▓█   ▒█▓   ░     █░                ▒█              █▓
                █▓   ██         █░                 ▓▓        ▒█▓▓▓▒█░
                 █▓ ░▓██░       ▓▒                  ▓█▓▒░░░▒▓█░    ▒█
                  ██   ▓█▓░      ▒                    ░▒█▒██▒      ▓▓
                   ▓█▒   ▒█▓▒░                         ▒▒ █▒█▓▒▒░░▒██
                    ░██▒    ▒▓▓▒                     ▓██▓▒█▒ ░▓▓▓▓▒█▓
                      ░▓██▒                          ▓░  ▒█▓█  ░░▒▒▒
                          ▒▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▓▓  ▓░▒█░
    
        ______ _ _       _       _____  ____  _         _____ _ _            _  BETA
       |  ____| (_)     | |     / ____|/ __ \| |       / ____| (_)          | |
       | |__  | |_ _ __ | | __ | (___ | |  | | |      | |    | |_  ___ _ __ | |_
       |  __| | | | '_ \| |/ /  \___ \| |  | | |      | |    | | |/ _ \ '_ \| __|
       | |    | | | | | |   <   ____) | |__| | |____  | |____| | |  __/ | | | |_
       |_|    |_|_|_| |_|_|\_\ |_____/ \___\_\______|  \_____|_|_|\___|_| |_|\__|
    
            Welcome! Enter 'HELP;' to list all available commands. 'QUIT;' to exit.
    
    Command history file path: /home/user/.flink-sql-history
    
  5. 在使用外部数据源查询任何表之前,请准备相关的 jar。 以下示例查询 Flink SQL 中的 Kafka 表和 MySQL 表。 下载 jar 并将其放入 Flink 群集附加的 Azure Data Lake Storage gen2 存储中。

    Azure 门户中 Azure Data Lake Storage gen2 中的 Jar:

    显示 Azure 门户中 jar 文件的屏幕截图。

  6. 使用已创建的表并将其放入 Hive 元存储进行管理,然后运行查询。

    注意

    在此示例中,AKS 上的 HDInsight 中的所有 jar 默认为 Azure Data Lake Storage Gen2。 在创建群集期间,容器和存储帐户不需要与指定相同。 如果需要,可以指定另一个存储帐户,并在 Azure Data Lake Storage Gen2 上将群集用户托管标识授予存储 Blob 数据所有者角色。

    CREATE CATALOG myhive WITH (
        'type' = 'hive'
    );
    
    USE CATALOG myhive;
    
    // ADD jar into environment
    ADD JAR 'abfs://<container>@<storage name>.dfs.core.windows.net/jar/flink-connector-jdbc-3.1.0-1.17.jar';
    ADD JAR 'abfs://<container>@<storage name>.dfs.core.windows.net/jar/mysql-connector-j-8.0.33.jar';
    ADD JAR 'abfs://<container>@<storage name>.dfs.core.windows.net/jar/kafka-clients-3.2.0.jar';
    ADD JAR 'abfs://<container>@<storage name>.dfs.core.windows.net/jar/flink-connector-kafka-1.17.0.jar';
    
    Flink SQL> show jars;
    ----------------------------------------------------------------------------------------------+
    |                                                                                         jars |
    +----------------------------------------------------------------------------------------------+
    |    abfs://<container>@<storage name>.dfs.core.windows.net/jar/flink-connector-kafka-1.17.0.jar |
    | abfs://<container>@<storage name>.dfs.core.windows.net/jar/flink-connector-jdbc-3.1.0-1.17.jar |
    |             abfs://<container>@<storage name>.dfs.core.windows.net/jar/kafka-clients-3.2.0.jar |
    |        abfs://<container>@<storage name>.dfs.core.windows.net/jar/mysql-connector-j-8.0.33.jar |
    +----------------------------------------------------------------------------------------------+
    4 rows in set
    
    Flink SQL> SET 'sql-client.execution.result-mode' = 'tableau';
    [INFO] Execute statement succeed.
    
    Flink SQL> show tables;
    +----------------------+
    |           table name |
    +----------------------+
    | flightsintervaldata1 |
    |    kafka_user_orders |
    |           kafkatable |
    |    mysql_user_orders |
    |               orders |
    +----------------------+
    5 rows in set
    
    // mysql cdc table
    Flink SQL> select * from mysql_user_orders;
    +----+-------------+----------------------------+-------------+--------------------------------+--------------+-------------+--------------+
    | op |    order_id |                 order_date | customer_id |                  customer_name |        price |  product_id | order_status |
    +----+-------------+----------------------------+-------------+--------------------------------+--------------+-------------+--------------+
    | +I |       10001 | 2023-07-16 10:08:22.000000 |           1 |                           Jark |     50.00000 |
    102 |        FALSE |
    | +I |       10002 | 2023-07-16 10:11:09.000000 |           2 |                          Sally |     15.00000 |
    105 |        FALSE |
    | +I |       10003 | 2023-07-16 10:11:09.000000 |           3 |                          Sally |     25.00000 |
    
    

参考

AKS 群集上的 HDInsight 上的 Apache Flink® Command-Line 接口(CLI)