Запуск интерфейса командной строки клиента SQL в режиме шлюза
Примечание.
Мы отставим Azure HDInsight в AKS 31 января 2025 г. До 31 января 2025 г. необходимо перенести рабочие нагрузки в Microsoft Fabric или эквивалентный продукт Azure, чтобы избежать резкого прекращения рабочих нагрузок. Оставшиеся кластеры в подписке будут остановлены и удалены из узла.
До даты выхода на пенсию будет доступна только базовая поддержка.
Внимание
Эта функция в настоящее время доступна для предварительного ознакомления. Дополнительные условия использования для предварительных версий Microsoft Azure включают более юридические термины, применимые к функциям Azure, которые находятся в бета-версии, в предварительной версии или в противном случае еще не выпущены в общую доступность. Сведения об этой конкретной предварительной версии см. в статье Azure HDInsight в предварительной версии AKS. Для вопросов или предложений функций отправьте запрос на AskHDInsight с подробными сведениями и следуйте за нами для получения дополнительных обновлений в сообществе Azure HDInsight.
В этом руководстве описано, как запустить интерфейс командной строки клиента SQL в режиме шлюза в кластере Apache Flink 1.17.0 в HDInsight в AKS. В режиме шлюза ИНТЕРФЕЙС командной строки отправляет SQL в указанный удаленный шлюз для выполнения инструкций.
./bin/sql-client.sh gateway --endpoint <gateway address>
Примечание.
В кластере Apache Flink в HDInsight в AKS все внешние подключения будут проходить через 443 порт. Но во внутреннем режиме он перенаправляет запрос на службу шлюза SQL, прослушивающую порт 8083.
Проверьте службу шлюза SQL на стороне AKS:
Что такое клиент SQL в Flink?
API таблицы и SQL Flink позволяет работать с запросами, написанными на языке SQL, но эти запросы нуждаются в внедрении в программу таблиц, написанную в Java или Scala. Кроме того, перед отправкой в кластер эти программы необходимо упаковать с помощью средства сборки. Эта функция ограничивает использование Flink к программистам Java/Scala.
Клиент SQL предназначен для упрощения написания, отладки и отправки программ таблиц в кластер Flink без одной строки кода Java или Scala. Интерфейс командной строки SQL Client позволяет получать и визуализировать результаты в режиме реального времени из запущенного распределенного приложения в командной строке.
Дополнительные сведения см . в статье о вводе клиента Flink SQL CLI на сайте webssh.
Что такое шлюз SQL в Flink
Шлюз SQL — это служба, которая позволяет нескольким клиентам удаленно выполнять SQL в параллелизме. Он предоставляет простой способ отправки задания Flink, поиска метаданных и анализа данных в Интернете.
Дополнительные сведения см. в статье SQL Gateway.
Запуск интерфейса командной строки клиента SQL в режиме шлюза в Flink-cli
В кластере Apache Flink в HDInsight в AKS запустите интерфейс командной строки клиента SQL в режиме шлюза, выполнив команду:
./bin/sql-client.sh gateway --endpoint host:port
or
./bin/sql-client.sh gateway --endpoint https://fqdn/sql-gateway
Получите конечную точку кластера (узел или полное доменное имя) в портал Azure.
Тестирование
Подготовка
Скачивание интерфейса командной строки Flink
- Скачайте Flink CLI с https://aka.ms/hdionaksflink117clilinux локального компьютера Windows.
Установите подсистема Windows для Linux, чтобы сделать эту работу на локальном компьютере Windows.
Откройте команду 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
Установка конечной точки, идентификатора клиента и порта 443 в flink-conf.yaml
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
Разрешенный локальный общедоступный IP-адрес Windows с портом 443 с поддержкой VPN в HDInsight для входящего трафика сетевой безопасности подсети кластера AKS.
Запустите sql-client.sh в режиме шлюза в Flink-cli в Flink SQL.
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
Прежде чем запрашивать любую таблицу с внешним источником, подготовьте связанные jars. В следующих примерах выполняется запрос таблицы kafka, таблицы mysql в Flink SQL. Скачайте JAR-файл и поместите его в кластер Flink, подключенный к хранилищу Azure Data Lake Storage 2-го поколения.
Jars в Azure Data Lake Storage 2-го поколения в портал Azure:
Используйте уже созданную таблицу и поместите ее в хранилище метаданных Hive для управления, а затем выполните запрос.
Примечание.
В этом примере все jar-диски в HDInsight в AKS по умолчанию Azure Data Lake Storage 2-го поколения. Контейнер и учетная запись хранения не должны совпадать с указанными во время создания кластера. При необходимости можно указать другую учетную запись хранения и предоставить управляемому удостоверению пользователя кластера роль владельца данных BLOB-объектов хранилища на стороне Azure Data Lake Storage 2-го поколения.
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 |
Справочные материалы
Интерфейс командной строки Apache Flink® (CLI) в HDInsight в кластерах AKS