稽核并行度是什么
稽核(数据核查)本身就是一类作业,会占用计算与 IO 资源。并行度与资源控制要同时解决三件事:按表与分区拆分并行以提高吞吐、限制并发上限避免打满集群、错峰到核心链路产出之后再运行。稽核与核心 ETL 抢队列,结果往往是产出变慢、告警也迟到,两边都受损。
基本信息
| 适用平台 | Airflow / DolphinScheduler / Azkaban 等调度平台 |
|---|---|
| 控制手段 | 队列或资源组隔离、并发上限、错峰时间窗 |
| 扫描范围 | 按分区裁剪,不做全表扫描 |
| 典型时机 | 核心链路产出后 1~2 小时的凌晨时段 |
| 失败策略 | 单表失败不阻塞整批,汇总后统一告警 |
典型使用场景
- 核心链路产出之后再跑稽核:错峰避开与 ETL 抢队列
- 大表校验分段并行:按分区或主键区间拆成多个子任务
- 稽核任务独立队列:防止它打满资源影响生产任务
- 资源紧张时降级:只跑高优先级规则,低优先级改抽样运行
- 避开整点高发时段:把稽核窗口放在报表高峰之外
调度侧资源控制示意
调度侧资源控制示意
audit_job:
concurrency: 4 # 并发上限,按队列容量设置
queue: audit # 与核心 ETL 隔离的队列或资源组
schedule: "0 4 * * *" # 核心链路产出后错峰运行
scan_scope: "dt='{{ ds }}'" # 只扫当日分区,不做全表扫描
split_by: dt # 按分区拆子任务,分区内再按主键区间分片
timeout_minutes: 30 # 单子任务超时,避免挂死占住槽位并行度参数与代价
| 参数 | 作用 | 设置失衡的代价 |
|---|---|---|
| 并发上限 | 同时运行的稽核子任务数 | 偏大:与生产抢资源;偏小:告警延迟 |
| 拆分粒度 | 按分区还是按主键区间拆 | 偏细:调度开销上升;偏粗:单任务过长 |
| 扫描范围 | 限定分区或时间窗 | 全表扫描:成本成倍并拖慢集群 |
| 队列隔离 | 稽核与 ETL 分开排队 | 共用队列:高峰期互相阻塞 |
各调度平台的队列与资源组字段不同,本示例表达的是策略:隔离、限流、分区裁剪。
并发上限要与数据源的连接数一起算:稽核若直连业务库,并发过高会把压力传导到生产库。