《MPDA:一种用于数据处理集群的大规模并行学习和依赖感知调度算法》由李青、陈星池等人撰写。文章提出了 MPDA 算法,通过快速训练机制和 GATNetwork,解决基于 DRL 调度算法训练慢和环境感知表示不足的问题,实验证明其在训练速度和调度性能上优势显著。
论证论文中 MPDA 算法比 FIFO、SJF-CP 等启发式基线算法、基于 DRL 的 Decima 算法性能更好:
使用以下 docker-compose.yml
配置:
version: '3.8'
services:
# Spark Master
spark-master:
image: bitnami/spark:3.5
container_name: spark-master
environment:
- SPARK_MODE=master
- ALLOW_EMPTY_PASSWORD=yes
ports:
- '7077:7077'
- '8080:8080'
volumes:
- ./logs/spark-runtime:/opt/bitnami/spark/logs
- ./checkpoints:/tmp/checkpoints
- ./data:/data
# Spark Worker
spark-worker-1:
image: bitnami/spark:3.5
container_name: spark-worker-1
depends_on:
- spark-master
environment:
- SPARK_MODE=worker
- SPARK_MASTER_URL=spark://spark-master:7077
- SPARK_WORKER_MEMORY=2G
- SPARK_WORKER_CORES=2
- ALLOW_EMPTY_PASSWORD=yes
ports:
- '8081:8081'
volumes:
- ./logs/spark-runtime:/opt/bitnami/spark/logs
- ./checkpoints:/tmp/checkpoints
- ./data:/data
# Jupyter Notebook
jupyter:
image: jupyter/pyspark-notebook:spark-3.5.0
container_name: jupyter
depends_on:
- spark-master
environment:
- PYSPARK_SUBMIT_ARGS=--master spark://spark-master:7077 pyspark-shell
- SPARK_MASTER=spark://spark-master:7077
- JUPYTER_TOKEN=
ports:
- '8888:8888'
volumes:
- ./notebooks:/home/jovyan/work
SpeedScheduler 是一个基于深度强化学习(DRL)的 Spark 任务调度系统,主要组件:
spark_env:Spark 模拟环境
attentional_decima:基于注意力机制的调度算法
分布式训练架构:
环境准备:
conda create -n mpda python=3.7
conda activate mpda
pip install tensorflow==1.15 numpy==1.18 scipy==1.5 networkx==2.5 pyarrow==3.0 tensorboardX crc32c pyyaml pyzmq matplotlib
运行步骤:
python start_worker.py -f config.yaml
python start_master.py -f config.yaml
tensorboard --logdir=results
使用 50 个执行器,200 个流式作业进行测试:
python3 train.py --exec_cap 50 --num_init_dags 1 --num_stream_dags 200 --reset_prob 5e-7 --reset_prob_min 5e-8 --reset_prob_decay 4e-10 --diff_reward_enabled 1 --num_agents 16 --model_save_interval 100 --model_folder ./models/stream_200_job_diff_reward_reset_5e-7_5e-8/
SpeedScheduler 项目展示了如何将深度强化学习技术应用于分布式数据处理系统的调度问题,为解决大规模计算集群的资源分配问题提供了新的思路。
该研究在以下方面具有重要意义: