Dinky与Flink集成实践指南:从环境搭建到任务开发

Dinky与Flink集成实践指南:从环境搭建到任务开发

【免费下载链接】dinky Dinky is an out-of-the-box, one-stop, real-time computing platform dedicated to the construction and practice of Unified Streaming & Batch and Unified Data Lake & Data Warehouse. Based on Apache Flink, Dinky provides the ability to connect many big data frameworks including OLAP and Data Lake. 【免费下载链接】dinky 项目地址: https://gitcode.com/gh_mirrors/di/dinky

前言

Dinky作为一个强大的FlinkSQL开发运维平台,与Flink的深度集成是其核心功能之一。本文将详细介绍如何从零开始搭建Dinky环境,并实现与Flink的完美集成,最后通过一个完整的Datagen任务示例展示开发流程。

环境准备

系统要求

在开始之前,请确保您的系统满足以下基本要求:

  • JDK环境:1.8或11版本
  • 数据库:MySQL 5.7+(也可选择PostgreSQL或内置H2)
  • Flink版本:1.14+(Dinky 1.0.0+支持)

Flink环境搭建

我们以Flink 1.18.0的Standalone模式为例:

  1. 下载和解压

    wget https://archive.apache.org/dist/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz
    tar -zxvf flink-1.18.0-bin-scala_2.12.tgz
    mv flink-1.18.0 flink
    
  2. 配置环境变量: 将以下内容添加到~/.bashrc文件末尾:

    export FLINK_HOME=/opt/flink
    export PATH=$PATH:$FLINK_HOME/bin
    

    然后执行source ~/.bashrc使配置生效。

  3. 启动集群

    cd flink
    ./bin/start-cluster.sh
    
  4. 验证: 访问http://<your-ip>:8081,确认Flink Web UI可正常访问。

Dinky环境搭建

  1. 下载和解压

    wget https://<dinky-download-url>/dinky-release-1.0.0-rc2.tar.gz
    tar -zxvf dinky-release-1.0.0-rc2.tar.gz
    mv dinky-release-1.0.0-rc2 dinky
    
  2. 数据库配置(以MySQL为例):

    • 创建dinky数据库
    • 执行初始化SQL脚本:dinky/sql/dinky-mysql.sql
    • 修改conf/application-mysql.yml中的数据库连接信息
    • 修改conf/application.yml中的spring.profiles.active为mysql

Dinky与Flink集成关键步骤

依赖管理

  1. 基础依赖复制

    cp -r /opt/flink/lib/* /opt/dinky/extends/
    
  2. 额外依赖处理

    • 添加commons-cli依赖:
      wget https://repo1.maven.org/maven2/commons-cli/commons-cli/1.6.0/commons-cli-1.6.0.jar -P /opt/dinky/extends/
      
    • 替换planner依赖:
      rm -f /opt/dinky/extends/flink-table-planner-loader-1.18.0.jar
      cp /opt/flink/opt/flink-table-planner_2.12-1.18.0.jar /opt/dinky/extends/
      
  3. 重启Flink集群以确保依赖变更生效。

启动Dinky

cd dinky
./auto.sh start 1.18  # 1.18对应您的Flink版本

访问http://<your-ip>:8888,使用默认账号admin/admin登录。

实战:开发Datagen示例任务

任务创建步骤

  1. 进入"数据开发" → 项目 → 新建根目录
  2. 右键"新建作业" → 选择"FlinkSQL"类型
  3. 输入以下SQL代码:
-- 基础配置
set execution.checkpointing.checkpoints-after-tasks-finish.enabled=true;
SET pipeline.operator-chaining=false;
set state.backend.type=rocksdb;
set execution.checkpointing.interval=8000;
set state.checkpoints.num-retained=10;
set cluster.evenly-spread-out-slots=true;

-- 创建数据源表
DROP TABLE IF EXISTS source_table3;
CREATE TABLE IF NOT EXISTS
  source_table3 (
    `order_id` BIGINT,
    `product` BIGINT,
    `amount` BIGINT,
    `order_time` as CAST(CURRENT_TIMESTAMP AS TIMESTAMP(3)), 
    WATERMARK FOR order_time AS order_time - INTERVAL '2' SECOND
  )
WITH
  (
    'connector' = 'datagen',
    'rows-per-second' = '1',
    'fields.order_id.min' = '1',
    'fields.order_id.max' = '2',
    'fields.amount.min' = '1',
    'fields.amount.max' = '10',
    'fields.product.min' = '1',
    'fields.product.max' = '2'
  );

-- 创建结果表
DROP TABLE IF EXISTS sink_table5;
CREATE TABLE IF NOT EXISTS
  sink_table5 (
    `product` BIGINT,
    `amount` BIGINT,
    `order_time` TIMESTAMP(3),
    `one_minute_sum` BIGINT
  )
WITH
  ('connector' = 'print');

-- 执行计算逻辑
INSERT INTO
  sink_table5
SELECT
  product,
  amount,
  order_time,
  SUM(amount) OVER (
    PARTITION BY
      product
    ORDER BY
      order_time
      RANGE BETWEEN INTERVAL '1' MINUTE PRECEDING
      AND CURRENT ROW
  ) as one_minute_sum
FROM
  source_table3;

任务配置与运行

  1. 在右侧"任务配置"面板中设置适当参数
  2. 点击保存(Ctrl+S)
  3. 使用DAG和检查功能验证任务
  4. 点击运行按钮提交任务
  5. 在"运维中心"监控任务状态

进阶集成建议

  1. 连接器扩展:可根据需要添加Kafka、JDBC等连接器依赖
  2. 高可用配置:生产环境建议配置ZooKeeper实现高可用
  3. 资源优化:根据业务需求调整并行度和资源分配
  4. 版本兼容性:保持Dinky与Flink版本的匹配

常见问题排查

  1. 依赖冲突:检查extends目录下是否有重复或冲突的jar包
  2. 连接失败:确认Flink集群地址和端口配置正确
  3. 任务提交失败:检查日志中的具体错误信息
  4. 性能问题:适当调整checkpoint间隔和状态后端配置

通过本文的指导,您应该已经完成了Dinky与Flink的集成,并成功运行了第一个FlinkSQL任务。后续可以根据业务需求开发更复杂的数据处理流程。

【免费下载链接】dinky Dinky is an out-of-the-box, one-stop, real-time computing platform dedicated to the construction and practice of Unified Streaming & Batch and Unified Data Lake & Data Warehouse. Based on Apache Flink, Dinky provides the ability to connect many big data frameworks including OLAP and Data Lake. 【免费下载链接】dinky 项目地址: https://gitcode.com/gh_mirrors/di/dinky

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值