目前我们正在使用自己在Kubernetes上安装的Airflow版本,但其目的是在Cloud Composer上进行迁移。我们使用Airflow使用自定义版本的DataFlowJavaOperator(使用插件)来运行数据流作业,因为我们需要执行jar中不自包含的java应用程序。所以我们基本上运行一个bash脚本来执行命令:
java -cp jar_folder/* MainClass
所有jar依赖项都存储在所有worker之间的共享磁盘中,但Composer中缺少此功能,我们不得不使用云存储来共享作业二进制文件。问题是使用gcsfuse从指向GCS的目录运行java程序非常慢。
您是否有任何建议在Cloud Composer中实施此类场景?
由于
答案 0 :(得分:0)
Composer会自动将放置在gs://{your-bucket}/dags
和gs://{your-bucket}/plugins
中的内容同步到本地Pod文件系统。我们希望只复制dag和插件源代码,但不要阻止任何人存储其他二进制文件(尽管不建议这样做,因为您可能会超出磁盘容量,此时由于本地空间不足,工作流程执行会受到影响)。
fyi - 本地文件系统路径分别为:/home/airflow/gcs/dags
和/home/airflow/gcs/plugins
。