plantpulse-batch (批处理)
角色
基于计划的批处理作业执行器。执行日/时/月级统计聚合、数据清理、报告生成、OEE/RAM/EMS 插件计算。
| 项目 | 值 |
|---|---|
| 模块名 | plantpulse-batch |
| 安装路径 | /opt/kopens/plantpulse-platform/plantpulse-batch/ |
| 端口 | 9500 |
| 调度器 | Quartz (PostgreSQL JDBC store) |
主要职责
- 按小时 / 按日 / 按月聚合 (标签 → 资产)
- OEE / RAM / EMS 插件计算
- 自动报告生成
- 应用数据保留周期
- 数据完整性验证
架构
目录结构
plantpulse-batch/
├── config/
│ └── plantpulse-batch.properties # 배치 설정 (외부화 — 배포해도 유지)
├── bin/start.sh stop.sh log-viewer.sh
├── logs/system.log
└── server/ # 내장 Tomcat (webapps/ROOT.war)
└── conf/server.xml
主要配置
plantpulse-batch/config/plantpulse-batch.properties — configure.sh 将 env.sh 值进行代入生成。不要修改 Web 应用内部文件(部署时会删除)。
# 메타스토어 (PostgreSQL)
metastore.url=jdbc:postgresql://${PP_POSTGRES_HOST}:${PP_POSTGRES_PORT}/${PP_DB_NAME}
metastore.user=${PP_PG_USER}
metastore.password=${PP_PG_PASSWORD}
# 시계열 저장소 (Cassandra) / TSE
storage.db.host=${PP_CASSANDRA_HOST}
storage.db.keyspace=${PP_KEYSPACE}
tse.host=${PP_TSE_HOST}
# 배치 동작
batch.timer_schedule_delay=5000 # 배치 타이머 주기 (ms)
batch.thread_pool_batch_thread_size=4 # 배치 워커 스레드 수
batch.buffer_drain_limit_size=10000 # 1회 드레인 최대 건수
batch.sync.tse.enabled=true # TSE 동기화
batch.sync.external.db.enabled=false # 외부 DB 동기화 (TimescaleDB/InfluxDB/QuestDB)
操作命令
cd /opt/kopens/plantpulse-platform/plantpulse-datalake-cli/bin
./restart-batch.sh
./pd status # 9500 RUNNING 확인
# 표준 헬스체크 (익명, readiness — 배치 파이프라인 가동·Redis 연결 시에만 UP)
curl -fsS http://127.0.0.1:9500/api/health
# 준비 완료: 200 {"status":"UP","service":"plantpulse-batch-web","ts":...,"checks":{"timer":true,"redis":true}}
# 기동 전: 503 {"status":"STARTING",...} / 기동 후 의존성 다운: 503 {"status":"DEGRADED",...}
通过控制台的系统 > 批处理管理菜单可以执行 / 暂停 / 触发各个 job。
常见问题
| 现象 | 原因 | 处理方法 |
|---|---|---|
| Job 未执行 | Quartz 锁 / 集群冲突 | 检查 qrtz_locks 表 |
| 聚合结果缺失 | 目标数据时间范围偏差 | 确认批处理周期(batch.timer_schedule_delay)及目标时间范围设置 |
| 内存不足 | 处理大窗口 | 提升堆内存或分割窗口 |
相关文档
- 模块索引
- 插件 (OEE/RAM/EMS) 用户指南
- 开发者:调度器架构