Запуск интерфейса командной строки клиента SQL в режиме шлюза
Важный
Azure HDInsight на AKS прекращено 31 января 2025 г. Дополнительные сведения с этим объявлением.
Необходимо перенести рабочие нагрузки в Microsoft Fabric или эквивалентный продукт Azure, чтобы избежать резкого завершения рабочих нагрузок.
Важный
Эта функция сейчас доступна в предварительной версии. Дополнительные условия использования для предварительных версий Microsoft Azure включают дополнительные юридические термины, применимые к функциям Azure, которые находятся в бета-версии, в предварительной версии или в противном случае еще не выпущены в общую доступность. Сведения об этой конкретной предварительной версии см. в Azure HDInsight в предварительной версии AKS. Для вопросов или предложений по функциям, пожалуйста, отправьте запрос на AskHDInsight с подробными сведениями и следите за обновлениями в Azure HDInsight Community.
В этом руководстве описано, как запустить интерфейс командной строки клиента 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?
Таблица Flink & API SQL позволяет работать с запросами, написанными на языке SQL, но эти запросы нуждаются в внедрении в программу таблиц, написанную в Java или Scala. Кроме того, перед отправкой в кластер эти программы необходимо упаковать с помощью средства сборки. Эта возможность ограничивает использование Flink для программистов Java/Scala.
Клиент SQL предназначен для упрощения написания, отладки и отправки программ таблиц в кластер Flink без одной строки кода Java или Scala. Интерфейс командной строки SQL Client позволяет получать и визуализировать результаты в режиме реального времени из запущенного распределенного приложения в командной строке.
Дополнительные сведения см. в разделе о том, как войти в клиент Flink SQL CLI через webssh.
Что такое шлюз SQL в Flink
Шлюз SQL — это служба, которая позволяет нескольким клиентам удаленно выполнять SQL в параллелизме. Он предоставляет простой способ отправки задания Flink, поиска метаданных и анализа данных в Интернете.
Дополнительные сведения см. в шлюза SQL.
Запуск интерфейса командной строки клиента 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
Прежде чем запрашивать таблицу, связанную с внешним источником, подготовьте связанные JAR-файлы. В следующих примерах выполняется запрос к таблицам 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 второго поколения. Контейнер и учетная запись хранения не должны совпадать с указанными во время создания кластера. При необходимости можно указать другую учетную запись хранения и предоставить управляемому пользователем кластеру удостоверение владельца данных 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 |
Ссылка
Интерфейс (CLI) Command-Line Apache Flink® в HDInsight в кластерах AKS