我想在celery调度程序(节拍)的驱动下运行定期任务(在spark上运行)
我正在通过celery任务运行pyspark。
我正在创建Dockerfile
和docker-compose.yml
,并意识到由于芹菜工人需要执行火花作业,因此我需要一个具有celery
和spark
的整体Dockerfile >
我还需要一种像https://towardsdatascience.com/a-journey-into-big-data-with-apache-spark-part-1-5dfcc2bccdd2一样运行spark-master
和spark-worker
的方法
所以我需要跑步
celery-worker
celery-beat (beat doensn't need spark I guess)
spark-master
spark-worker
无法为火花和芹菜创建单独的Dockerfile
并以某种方式进行交流吗?
我能想到的最好的方法是:
在docker-compose中创建4个共享一个Dockerfile的服务,它们在运行命令方面有所不同
spark-master: /spark/bin/spark-class org.apache.spark.deploy.master.Master \
--ip $SPARK_LOCAL_IP \
--port $SPARK_MASTER_PORT \
--webui-port $SPARK_MASTER_WEBUI_PORT
spark-worker: /spark/bin/spark-class org.apache.spark.deploy.worker.Worker \
--webui-port $SPARK_WORKER_WEBUI_PORT \
$SPARK_MASTER
celery-worker: celery worker -A proj
celery-beat: celery beat -A proj
是否有更好的方法来分割任务?