基於redis和R語言構建並行計算平台(yiyou)

來源:互聯網
上載者:User

標籤:

最近研究gearman時發現不少問題,關於隊列持久化的問題搞了半個月還是沒能解決,並且國內可以參考的資料太少,所以考慮換一種方案試試。如下貼出gearman叢集的架構:


可以看到該架構存在的問題,當持久化不起作用時,只能通過多台JobServer同時啟動並執行方式保證叢集的正常運作。另外client和worker這間的資料轉送需要通過JobServer,不能一步到位。這個在資料量大時不能突顯優勢。

本人搞R語言有些時間了,並且該語言近幾年比較火,用於統計、分析、建模、可視化,效率很高。為了承接前期研究的成果,最理想的方式就是基於現有的R語言實現分布式調度和並行計算。基於對gearman架構的理解,分析了其實現機制,

Gearman是基於TCP/IP協議進行串連的,並且client不知道worker的資訊,通過jobserver的中介作用,完成調度。Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。使用Redis資料庫既可以用來實現進行間通訊,又能夠對資料進行快速讀寫,基於儲存的資訊,實現client和worker資訊的透明,與gearman相比有很多優勢。

基於以上想法,結合Redis和R語言,對gearman的實現機制進行最佳化,實現了支援R語言和NOSQL資料庫的並行計算架構yiyou。代碼結構如下:

Watch用於查看隊列資訊;yiyou-server類似於jobserver,主要用於任務的分配和NOSQL資料庫的管理;yiyou-stop關閉整個並行叢集;yiyou-client-lib為用戶端程式依賴庫,可基於此定製用戶端程式;yiyou-worker-lib為工作端程式依賴庫,可基於此定製工作端程式;yiyou-dlib為並行計算的依賴庫,可基於它,對單線程的可拆分R代碼平滑移植到叢集上,不需要改動之前的代碼,例子如下:

可以看到,基於 yiyou架構實現的並行計算,依賴於叢集的計算能力,為R語言大資料分析提供了一種可行的方案。

目前該架構尚不成熟,只提供了任務的並行分解,可基於此寫出類似於MapReduce的邏輯,期待後續更多精彩內容。。。

 

基於redis和R語言構建並行計算平台(yiyou)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.