我在计算如何在现实生活环境中使用Spark的机器学习功能时遇到一些困难。Apache Spark和机器学习 - 在生产中使用
我想要做的是以下几点:
- 使用笔记本
- 使用REST API服务于学习的模型开发新毫升模式(类似POST -/API/V1 /为MyModel /预测)
咱们说毫升训练过程由笔记本电脑来处理,一旦模型的要求得到满足它保存到一个文件HDFS,通过火花应用程序加载后
我知道我可以编写一个长时间运行的spark应用程序,它暴露了api并在我的spark集群上运行它,但我不认为这是一种可伸缩的方法,因为即使数据转换和ml函数在worker节点中,http/api相关的代码仍然会在一个节点上运行,那么spark-submit中的代码将被调用(如果我错了,请纠正我)。
另一种方法是使用相同的长时间运行的应用程序,但在本地独立群集中。我可以根据需要多次部署相同的应用程序,并将负载均衡器放在它前面。通过这种方法,http/api部分处理得很好,但是spark部分完全没有使用集群功能(由于事实上它应该只对每个请求执行一次预测,所以这不成问题)
还有第三种方法是使用SparkLauncher,它将火花作业包装在单独的jar中,但我不太喜欢飞行罐,并且很难检索预测的结果(队列可能或hdfs)
所以基本上问题是:通过rest api消耗Spark的ml模型的最佳方法是什么?
谢谢
选项1和2都需要预测作业捆绑在一个自包含的jar中。这种方法带回了旧的依赖性地狱,我想避免它,并且在部署和维护应用程序时引入了很多困难。 –
选项2.你也可以通过'zeppelin.apache.org'启动调度程序,虽然笔记本通常对于'production'不可靠,但是你仍然需要管理依赖关系:不管是否使用笔记本,建立你自己的集群'dataproc如果你现在需要共享它,你总是可以到'databricks'来获得可靠和易于管理的''google'云'和'https:// github.com/InsightDataScience/pegasus'或'emr' noteboks,这将适用于您的公司调度程序 –
我会使用笔记本电脑只用于模型开发,一旦模型已经过培训并导出到hdfs笔记本电脑的工作完成 –