开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

请问下,flink是docker部署的,怎么使用sql gateway?

请问下,flink是docker部署的,怎么使用sql gateway?

展开
收起
十一0204 2023-04-11 09:41:17 655 0
3 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    阿里云 Flink 是基于 Docker 部署的,可以通过在容器中运行 SQL Gateway 来实现使用 SQL 界面访问 Flink 集群。

    下面是一些基本步骤:

    1. 在 Docker 中运行 SQL Gateway 容器。您可以使用以下命令从 Docker Hub 下载 SQL Gateway 镜像:
    docker pull flinksql/sql-gateway
    

    然后,使用以下命令在容器中启动 SQL Gateway:

    docker run -d -p 8083:8083 flinksql/sql-gateway
    

    这将在容器中启动 SQL Gateway,将其映射到主机的 8083 端口上。

    1. 配置 SQL Gateway。您可以在 SQL Gateway 的配置文件中指定 Flink 集群的 URL 和端口。默认情况下,SQL Gateway 的配置文件位于 /opt/sql-gateway/conf/sql-gateway.yaml。

    例如,您可以在配置文件中添加以下配置:

    flink:
      url: "http://<flink-master>:8081"
    

    其中 <flink-master> 是 Flink 集群的主节点的 IP 地址或域名。

    1. 使用 SQL Gateway 访问 Flink 集群。您可以在浏览器中访问 SQL Gateway 的 Web 界面,并使用 SQL 语句来查询 Flink 集群中的数据。

    例如,您可以在浏览器中访问以下 URL:

    http://<sql-gateway>:8083
    

    其中 <sql-gateway> 是 SQL Gateway 容器所在主机的 IP 地址或域名。

    2023-04-26 22:15:21
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    要在Flink上使用SQL Gateway,你需要在Docker中部署Apache Flink集群。以下是一些步骤:

    在Docker中创建一个新的网络,以便将所有组件连接起来。

    docker network create flink-network 下载并运行Apache Flink镜像,并将其加入上述网络:

    docker run
    --name flink-jobmanager
    --network flink-network
    -p 8081:8081
    -d
    apache/flink:1.13.0 jobmanager docker run
    --name flink-taskmanager
    --network flink-network
    -e JOB_MANAGER_RPC_ADDRESS=flink-jobmanager
    -d
    apache/flink:1.13.0 taskmanager 下载并运行Apache ZooKeeper镜像,也将其加入上述网络:

    docker run
    --name zookeeper
    --network flink-network
    -p 2181:2181
    -d
    zookeeper:3.6.3 下载并运行Apache Kafka镜像,并将其加入上述网络:

    docker run
    --name kafka
    --network flink-network
    -p 9092:9092
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
    -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
    -d
    confluentinc/cp-kafka:5.5.1 在Flink中启用SQL Gateway:

    docker exec -it flink-jobmanager ./bin/sql-client.sh embedded 运行SQL Gateway后,在控制台提示符下,您可以执行以下操作:

    使用以下命令测试连接的Flink群集:

    !connect jdbc:flink://flink-jobmanager:8081 执行Flink SQL查询:

    SELECT * FROM test_table; 需要注意的是,这些步骤只是一些示例性步骤,每个组件的版本、配置细节和运行环境都会有所不同。在实际情况中,您需要根据您的环境和要求调整配置和设置。

    2023-04-17 16:41:31
    赞同 展开评论 打赏
  • 坚持这件事孤独又漫长。

    使用sql gateway可以直接在Flink的WebUI上执行SQL查询并查看结果。需要完成以下步骤:

    1. 在docker-compose中配置sql-gateway镜像:
    services:
      sql-gateway:
        image: ververica/sql-gateway:latest
        ports:
          - "8082:8082"
        environment:
          - SQL_GATEWAY_JOB_MANAGER_ADDRESS=http://jobmanager:8081
    
    1. 在docker-compose中添加一个network:
    networks:
      default:
        name: flink-network
    
    1. 在Flink的jobmanager中添加以下配置:
    rest.port: 8081
    rest.address: jobmanager
    rest.bind-address: 0.0.0.0
    rest.mode: bind
    
    1. 重新启动docker-compose

    2. 通过http://localhost:8082/访问SQL Gateway Web UI

    3. 在SQL Gateway中使用以下语句创建一个表:

    CREATE TABLE orders (
      user_id INT,
      amount FLOAT,
      order_time TIMESTAMP(3),
      WATERMARK FOR order_time AS order_time - INTERVAL '5' SECOND
    ) WITH (
      'connector.type' = 'kafka',
      'connector.version' = 'universal',
      'connector.topic' = 'orders',
      'connector.startup-mode' = 'earliest-offset',
      'connector.properties.bootstrap.servers' = 'kafka:9092',
      'format.type' = 'json'
    );
    
    1. 通过SQL Gateway执行查询,例如:
    SELECT user_id, SUM(amount)
    FROM orders
    WHERE order_time BETWEEN TIMESTAMP '2023-04-01 00:00:00' AND TIMESTAMP '2023-04-10 00:00:00'
    GROUP BY user_id
    
    2023-04-11 10:46:39
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载