Apache StreamPark 功能和使用场景介绍、使用步骤详细示例

Apache StreamPark 是一个专注于流处理应用程序开发和管理的开源平台,旨在简化 Apache Flink 和 Apache Spark 等流处理引擎的使用复杂度。它提供了一站式的应用开发、部署、监控和运维能力。

以下是关于 Apache StreamPark 的功能介绍、使用场景及详细使用步骤示例。


一、 核心功能介绍

  1. 应用开发与管理
    • 代码托管: 支持 Git/SVN 拉取代码,也支持直接在平台上编写 SQL/Scala/Java 代码。
    • 多引擎支持: 原生支持 Apache Flink 和 Apache Spark,同时兼容 DataStream API、Table API 和 SQL。
    • 版本管理: 内置应用版本控制,支持一键回滚。
  2. 自动化构建与部署
    • 自动构建: 集成 Maven/Gradle/SBT,自动完成项目编译打包。
    • 多种部署模式: 支持 Remote、YARN-Application、YARN-Session、Kubernetes Session/Application/Native 等多种部署模式。
    • CI/CD 集成: 提供 REST API,易于与 Jenkins/GitLab CI 集成。
  3. 智能运维与监控
    • 状态感知: 实时追踪作业状态(Created, Running, Failed, Finished 等)。
    • 自动重启: 配置失败重试策略,异常时自动恢复。
    • Checkpoint/Savepoint 管理: 可视化触发、查看和从指定 Savepoint 恢复。
    • 告警通知: 支持邮件、钉钉、企业微信、Webhook 等多种告警渠道。
  4. SQL 在线开发
    • 提供 Web IDE 进行 Flink SQL 编写。
    • 支持语法高亮、智能提示、SQL 校验和血缘分析。
  5. 资源与配置管理
    • 统一管理 Flink Home、Maven 仓库、系统参数。
    • 支持动态参数注入,区分开发/测试/生产环境配置。

二、 典型使用场景

场景 描述 StreamPark 价值
实时数仓 ETL Kafka → Flink → Doris/StarRocks/ClickHouse 简化 SQL 作业管理,统一调度数百个 ETL 任务
实时监控大屏 业务指标实时聚合计算 快速部署、秒级状态反馈、故障自动恢复
CDC 数据同步 MySQL/PG Binlog → 下游存储 管理复杂的 CDC Connector 配置和断点续传
算法模型推理 实时特征工程 + 模型预测 支持自定义 Jar 包部署,管理模型文件版本
多租户平台 企业内部大数据平台 权限隔离、资源配额、统一入口降低使用门槛

前置准备
bash 复制代码
# 1. 克隆并启动 StreamPark (Docker 方式最简)
git clone https://github.com/apache/incubator-streampark.git
cd incubator-streampark/docker
docker-compose up -d

# 2. 访问 Web UI
# 默认地址: http://localhost:10000
# 默认账号: admin / streampark

进入 Setting → Flink Home,添加你的 Flink 安装路径:

复制代码
Flink Name: flink-1.17
Flink Home: /opt/flink-1.17.1   # 容器内或主机路径

进入 StreamPark → Application → Add New

配置项 示例值 说明
Development Mode Custom Code / Flink SQL 选择 Flink SQL
Execution Mode remote / yarn-application 根据集群选择
Flink Version flink-1.17 关联已配置的 Flink
Application Name kafka-to-doris-demo 应用名称
Step 3: 编写 SQL 代码

在 SQL 编辑器中输入:

sql 复制代码
-- 源表定义
CREATE TABLE source_kafka (
    user_id BIGINT,
    item_id BIGINT,
    behavior STRING,
    ts TIMESTAMP(3),
    WATERMARK FOR ts AS ts - INTERVAL '5' SECOND
) WITH (
    'connector' = 'kafka',
    'topic' = 'user_behavior',
    'properties.bootstrap.servers' = 'kafka:9092',
    'format' = 'json',
    'scan.startup.mode' = 'latest-offset'
);

-- 目标表定义
CREATE TABLE sink_doris (
    window_start TIMESTAMP(3),
    window_end TIMESTAMP(3),
    behavior STRING,
    cnt BIGINT
) WITH (
    'connector' = 'doris',
    'fenodes' = 'doris-fe:8030',
    'table.identifier' = 'db.behavior_summary',
    'username' = 'root',
    'password' = ''
);

-- 核心逻辑
INSERT INTO sink_doris
SELECT 
    TUMBLE_START(ts, INTERVAL '1' MINUTE) AS window_start,
    TUMBLE_END(ts, INTERVAL '1' MINUTE) AS window_end,
    behavior,
    COUNT(*) AS cnt
FROM source_kafka
GROUP BY TUMBLE(ts, INTERVAL '1' MINUTE), behavior;
Step 4: 配置运行参数
yaml 复制代码
# Parallelism & Checkpoint 配置
parallelism.default: 2
execution.checkpointing.interval: 30s
execution.checkpointing.mode: EXACTLY_ONCE
state.backend: hashmap
state.checkpoints.dir: hdfs:///streampark/checkpoints
state.savepoints.dir: hdfs:///streampark/savepoints

# 自定义参数(可在SQL中通过 ${param} 引用)
kafka.brokers: kafka:9092
Step 5: 构建与启动
  1. 点击 Build → 平台自动校验 SQL 语法并解析依赖
  2. 点击 Start → 选择是否从 Savepoint 恢复
  3. 观察 Flame Graph / Timeline 确认作业进入 RUNNING 状态
Step 6: 运维操作
  • 触发 Savepoint: Application 列表 → 操作栏 → Savepoint → Trigger
  • 查看日志: 点击应用名 → Log 标签页 → 实时查看 TM/JM 日志
  • 修改 SQL: Stop (with savepoint) → Edit SQL → Build → Start (from savepoint)
  • 告警配置: Setting → Alert → 添加钉钉/邮件组 → 绑定到应用

四、 最佳实践建议

  1. 生产环境务必开启 Checkpoint ,并配置 state.checkpoints.dir 到 HDFS/S3
  2. Stop 时选择 "with savepoint",避免数据丢失
  3. SQL 作业优先使用 Catalog 管理表元数据,避免重复 DDL
  4. K8s 部署推荐使用 Native 模式,获得更好的资源弹性
  5. 定期清理过期 Checkpoint/Savepoint,防止存储膨胀
  6. 利用 Pipeline 功能 将多个关联 SQL 合并为一个作业,减少资源开销
相关推荐
慧一居士1 天前
Hologres 功能及使用场景介绍,实践详细步骤示例
数据仓库
哥本哈士奇1 天前
dbt+SQLServer构建数据仓库(10):macro 以及 data vault的应用实例
大数据·数据仓库·sqlserver
Francek Chen1 天前
【大数据处理与分析】数据仓库Hive:02 数据湖
大数据·数据仓库·hive·hadoop·分布式·数据分析
自由能燃气设备3 天前
燃气容积式热水器厂家选购指南:2026年商用热水设备采购避坑手册
大数据·数据库·数据仓库·人工智能
哥本哈士奇3 天前
dbt+SQLServer构建数据仓库(8):Vibe Coding用dbt构建data vault数仓
数据仓库·sqlserver
ha_lydms4 天前
使用DataWorks导入 Maxcompute 数据
大数据·数据仓库·dataworks·maxcompute·hologres·odps·数据同步
ZCBUS实时计算5 天前
金融证券实时数仓建设实践:轻量化实时计算平台落地,实现交易数据端到端秒级处理
大数据·数据库·数据仓库·金融·flink·dba·etl
爱看报的猿5 天前
【金仓数据库征文】MySQL至金仓KES异构数据库平滑迁移与性能深度调优实战
数据库·数据仓库·mysql·金仓数据库征文
fastjson_5 天前
Hive的介绍和使用
数据仓库·hive·hadoop