熱線電話:13121318867

登錄
首頁精彩閱讀海納百川 有容乃大:SparkR與Docker的機器學習實戰
海納百川 有容乃大:SparkR與Docker的機器學習實戰
2016-03-25
收藏
本文由CDA作者庫成員HarryZhu原創,并授權發布。
CDA作者庫凝聚原創力量,只做更有價值的分享。
了解詳情請微信添加trasn863,或發送郵件至songpeiyang@pinggu.org

題圖為美國尼米茲核動力航空母艦

介 紹

大數據時代,我們常常面對海量數據而頭疼。作為學統計出身的人,我們想折騰大數據但又不想學習Hadoop或者Java,我們更傾向于把精力放在建模和算法設計上,SparkR和Docker的完美結合,讓R的計算直接從一架戰斗機的當兵作戰華麗轉變為一個航空母艦戰斗群!不僅僅簡化了分布式計算的操作,還簡化了安裝部署的環節,我們只幾乎不需要做什么改動就可以直接運用R中的data frame進行分布式的計算。

什么是SparkR

參考前文 打造大數據產品:Shiny的Spark之旅,我們可以知道,SparkR是一個為R提供了輕量級的Spark前端的R包。 SparkR提供了一個分布式的data frame數據結構,解決了 R中的data frame只能在單機中使用的瓶頸,它和R中的data frame 一樣支持許多操作,比如select,filter,aggregate等等。(類似dplyr包中的功能)這很好的解決了R的大數據級瓶頸問題。 SparkR也支持分布式的機器學習算法,比如使用MLib機器學習庫。



什么是Docker

參考前文 打造數據產品的快速原型:Shiny的Docker之旅,我們也可以知道,Docker是一種類似于虛擬機的技術,主要解決標準化快速部署的問題,在Docker中安裝的軟件和主機中的軟件可以完全隔離,并通過Daocloud或者hub.docker.com等云服務快速建立Docker倉庫,快速復用Docker鏡像。Docker已經不僅僅是DevOps人員手中的神器了,每一個開發者都應該學會如何使用Docker。



為什么要結合SparkR和Docker

SparkR的精髓在于分布式計算,而Docker的精髓在于標準容器的拓展性,SparkR和Docker的組合充分結合了二者各自的優點,將分布式應用底層化繁為簡,為高層計算直接暴露接口,給科學計算節省了大量時間。

部署

本文將通過Docker講解如何快速部署SparkR-RStudio容器,并通過一些簡單的機器學習例子展示如何使用這個航母級別的組合拳。

步驟一:安裝Docker和Daocloud

由于國內的鏡像質量不夠高,國外的鏡像下載速度比較慢,出于試驗的考慮,建議大家可以嘗試使用Daocloud的鏡像加速服務。



首先,我們需要在Daocloud注冊一個賬號,然后選擇鏡像加速,根據指示選擇主機并安裝Docker和Daocloud加速器。

步驟二:安裝Spark-RStudio

感謝 vinicius85 在GitHub上的開源貢獻,為我們已經做好了 Spark1.6+R+RStduio的鏡像,我們利用daocloud加速拉取鏡像。



以daemon形式運行容器,暴露Rstudio-server默認的8787端口, 并持久化docker內的/srv目錄下的所有文件作為通訊。



步驟三:配置RStudio登陸賬號

參考前文 R語言工程化實踐:RStudio Server環境快速配置教程



我們設置一下RStudio-Server的賬號密碼



步驟四:登陸RStudio



比如:




查看資源占用情況



機器學習示例



出于演示的考慮,這里引用并稍微改進了 tcosta 完成的一個邏輯回歸的例子:

初始化

使用SparkR之前,我們需要確定,我們的容器內存要在2G以上,如果用AWS的乞丐版套裝,馬上就會報內存不足的錯誤。



如果內存不足,可以退出docker并且在虛擬機中重新提高docker的內存和cpu的配置。



邏輯回歸


模型評估





Harry Zhu,擅長用Python和R進行數據建模、定量研究,目前就職于量子金服(Quantum Financial Service)。微信號:harryzhustudio

歡迎關注個人主頁:
https://github.com/harryprince
https://segmentfault.com/u/harryprince

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢