plantpulse-warehouse (数据仓库 / 湖仓)
角色
将 Cassandra 中的时序数据以 Apache Iceberg 格式归档到 MinIO 的湖仓模块。用于长期保留、分析查询性能优化和与其他 BI 工具集成。
| 项目 | 值 |
|---|---|
| 模块名 | plantpulse-warehouse |
| 安装路径 | /opt/kopens/plantpulse-platform/plantpulse-warehouse/ |
| 端口 | 9600 |
| 格式 | Apache Iceberg V2 |
| 存储 | MinIO (S3) |
架构
目录结构
plantpulse-warehouse/
├── app/ # 웨어하우스 서비스
├── bin/start.sh stop.sh log-viewer.sh
├── config/
├── etc/ # PID 관리
├── lib/ # Spark JAR
├── logs/system.log
└── s3/
├── archive.sh # 아카이빙
└── optimize.sh # 테이블 최적화
归档 (archive.sh)
# 전일 데이터 아카이빙 (기본)
/opt/kopens/plantpulse-platform/plantpulse-warehouse/s3/archive.sh
# 특정 날짜
/opt/kopens/plantpulse-platform/plantpulse-warehouse/s3/archive.sh 2026-05-29
- 基准性能:100万条记录约 60秒
- 源:Cassandra
tm_tag_point→ MinIOplantpulse-iceberg/warehouse/tag_point/ - 分区:
dt=YYYY-MM-DD/hh=HH/
Iceberg 表优化 (optimize.sh)
合并小文件、删除过期快照、清理元数据。
/opt/kopens/plantpulse-platform/plantpulse-warehouse/s3/optimize.sh
推荐频率:每周一次夜间执行。可通过 Kestra 工作流自动化。
运维命令
cd /opt/kopens/plantpulse-platform/plantpulse-datalake-cli/bin
./restart-warehouse.sh
./pd status # 9600 RUNNING 확인
# 표준 헬스체크 (익명, 순수 liveness — 공통 3개 필드 + 시스템/JVM 메트릭 포함)
curl -fsS http://127.0.0.1:9600/api/health
# → {"status":"UP","service":"plantpulse-warehouse-s3","ts":..., ...}
常见问题
| 症状 | 原因 | 处置 |
|---|---|---|
| 归档 Job 失败 | Spark / Hive 未就绪 | pd restart analytics 后重试 |
| 小文件激增 | optimize.sh 未执行 | 每周定期运行 |
| MinIO 磁盘不足 | 未设置保留周期 | Iceberg 过期快照删除 + 生命周期策略 |
| Kyuubi 查询 OOM | 大表 / 缺少分区谓词 | 显式指定 WHERE dt = '...' |
SQL 查询示例
USE iceberg;
-- 메타데이터
DESCRIBE TABLE EXTENDED tag_point;
-- 5월 집계
SELECT tag_id, count(*) AS rows, min(time), max(time)
FROM tag_point
WHERE dt BETWEEN '2026-05-01' AND '2026-05-31'
GROUP BY tag_id
ORDER BY rows DESC
LIMIT 100;
-- 스냅샷 이력
SELECT * FROM tag_point.snapshots;
SELECT * FROM tag_point.history;