我在計算如何在現實生活環境中使用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筆記本電腦的工作完成 –