我有一个在hadoop集群的边缘节点上运行的pyspark代码。这个pyspark代码执行从特征工程到ml训练和预测的各个步骤。代码在github上,我可以在边缘节点上拉它。代码可以在yarn/client或yarn/cluster模式下使用spark submit提交。到现在为止,一直都还不错。
现在我想定期安排一些任务:
我对边缘节点有一些限制,不能使用crontab
也许最好的选择是使用oozie提交作业。
我的问题是,每次修改代码时,如何在haddop集群上以干净/简单的方式部署代码,以便可以使用oozie进行调度(我猜oozie是调度的最佳选择,因为它已经安装了)
我可以从边缘注解上的github中提取代码,然后在hdfs上复制和覆盖de文件
ci/cd还没有到位,计划用于hadoop集群的生产。
还有别的解决办法吗?
这类任务的最佳实践是什么(这是datascience/ml代码,因此我们有自己的hadoop集群,它与用于生产的集群(数据摄取、scala数据处理……)是分开的
1条答案
按热度按时间zzlelutf1#
oozie需要从hdfs运行jar。
您可以使用hdfs put执行scp或git pull+package命令。
如果使用maven,您可以尝试查找maven wagon ssh或maven exec插件,并将它们绑定到maven生命周期的部署阶段。那么
mvn deploy
将运行必要的命令将代码放到边缘节点和hdfs上。这与cd引擎需要执行的任务基本相同,不过需要在ci/cd服务器上的hadoop集群中配置一个hadoop客户机来运行hdfs命令。如果您设置了一个oozie协调器,只需在hdfs上替换jar或oozie作业属性文件,就不需要在部署周期内编辑任何其他oozie设置。
另外,如果您想尝试以编程方式重新启动/终止正在运行的任务,oozie还有一个restapi