我有一群gce airflow(composer)集群和一群worker:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
airflow-redis-0 1/1 Running 0 7h
airflow-scheduler 2/2 Running 0 7h
airflow-sqlproxy 1/1 Running 0 8h
airflow-worker 50/50 Running 0 7h
composer-fluentd-daemon 1/1 Running 0 7h
composer-fluentd-daemon 1/1 Running 0 7h
我还有一堆独特的持久NFS volume,其中包含需要处理的数据。有没有办法动态地为每个相应的工作人员安装不同的NFS volume。
或者,在worker中调用的DockerOperator是否可以挂载与其特定工作负载相关的NFS volume。
从理论上来说,工作流程将是:Spin up 1x worker per Dataset> Get Dataset> Run Dataset through Model>Dump results
实现此目的的一种方法是将数据集下载到正在处理它的给定pod中; 但是,这些数据集的数量是几百gb,需要针对不同的型号进行多次处理。
最终我们计划将所有这些数据放在BigTable中,但是我需要在使用具有几百gb数据的卷的概念中展示一个证明,然后我们开始启动一个包含多个tb数据的BigTable集群。
您描述的工作流程更好地匹配作业模型而不是普通(长期运行)Pod。您需要为指向其各自数据的每个任务创建单独的作业规范,如果您的群集正在执行其他工作,则需要注意您的批量数据处理窗格不会占用可用的计算资源。
您是否实际拥有不同的NFS volume(服务器名称/导出的目录),或者只有一个NFS volume中的许多文件树?如果是后者,另一个可以很好地工作的路径是设置像RabbitMQ这样的排队系统,并将所有路径加载到队列中。然后,您将编写一个长时间运行的进程,该进程从队列中连续读取单个项目,对其执行任何所需的工作,写入其结果,提交工作项目并重复(在单个线程中)。然后,您可以使用部署扩展到所需的并行处理量。
在任何情况下,您的输出表明您直接使用裸pod,并尝试通过在单个pod中包含许多并行工作容器来扩展工作者。最好使用其中一个更高级别的控制器(最常见的是部署)并使用其replicas:控件启动所描述的pod的多个副本。除此之外,这将允许您跨多个节点分散负载,并允许您进行滚动更新,其中pod被逐步重新启动,如果您更改底层映像或pod的其他详细信息,则可以避免中断。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。