【发布时间】:2017-09-18 05:59:59
【问题描述】:
我在弄清楚如何在现实生产环境中使用 spark 的机器学习功能时遇到了一些困难。
我想做的是:
- 使用笔记本开发新的机器学习模型
- 使用 REST api(类似于 POST - /api/v1/mymodel/predict)提供学习模型
假设机器学习训练过程由笔记本处理,一旦满足模型要求,它就会保存到 hdfs 文件中,稍后由 spark 应用程序加载
我知道我可以编写一个长时间运行的 spark 应用程序来公开 api 并在我的 spark 集群上运行它,但我不认为这真的是一种可扩展的方法,因为即使数据转换和 ml 函数可以运行在工作节点上,http/api 相关代码仍将在一个节点上运行,调用 spark-submit 上的那个(如果我错了,请纠正我)。
另一种方法是使用相同的长时间运行的应用程序,但在本地独立集群中。我可以根据需要多次部署相同的应用程序,并在其前面放置一个负载均衡器。使用这种方法可以很好地处理 http/api 部分,但 spark 部分根本没有使用集群功能(这可能不是问题,因为它应该只对每个请求执行一次预测)
还有第三种使用 SparkLauncher 的方法,它将 spark 作业包装在一个单独的 jar 中,但我不太喜欢飞行 jar,而且很难检索预测的结果(可能是队列,或者 hdfs )
所以基本上问题是:通过 rest api 使用 spark 的 ml 模型的最佳方法是什么?
谢谢
【问题讨论】:
标签: apache-spark apache-spark-mllib