zhuanzai :
一直糾結於r的大資料計算問題,希望可以找到乙個徹底的方案解決它。而雲伺服器當然是解決這個問題的最佳方案,所以,至少從這方面入手。
r的雲伺服器部署有兩種解決方案,一種是使用r語言的平行計算,另外一種是使用rhadoop框架。
rhadoop框架其實就是m / r 演算法的r語言實現,需要使用者有m / r的計算基礎,和r語言平常使用的計算方式有很大的不同,因此,我採用的解決方案是搭建r 的平行計算集群。
在兩台ip位址不同的linux機器上面安裝好r,然後每台機器都安裝snow包,最後注意一點是,需要配置ssh的免密碼登入,不同的linux使用者需要配置自己的免密碼登入,並且,需要用到r集群的使用者都需要使用自己的賬戶安裝snow包。
以下是測試**:
library(snow);
workerlist <- list(
list(host = 「192.168.1.100」, port = 10187, outfile = 「~/log1.log」, rshcmd = 「ssh -p 22222」),
list(host = 「192.168.1.101」, port = 10187, outfile = 「~/log2.log」, rshcmd = 「ssh -p 22222」),
list(host = 「192.168.1.101」, port = 10187, outfile = 「~/log3.log」, rshcmd = 「ssh -p 22222」)
);cl <- makecluster(workerlist, type=」sock」, master=」192.168.1.100」)
stopcluster(cl);
**解釋:
1、配置每台伺服器的屬性
list(host = 「192.168.1.100」, port = 10187, outfile = 「~/log1.log」, rshcmd = 「ssh -p 22222」)
伺服器的配置選項如下:
名稱 型別 描述 預設值
port integer r使用的集群的埠 10187
timeout integer 伺服器之間鏈結超時時間 31536000(一年)
master string 集群主機ip(或者網域名稱) sys.info()[「nodename」]
type string 伺服器之間連線型別 null
outfile string 日記輸出的檔案路徑 null
user string 伺服器使用者名稱 sys.info()[「user」]
rshcmd string ssh執行命令 ssh
rlibs string 伺服器上r的安裝路徑 rl
ibss
crip
tdir
stri
ngsn
ow安裝
包的安裝
路徑rp
rogs
trin
gr程式
的執行路
徑 r_home/bin/r
snowlib string snow安裝包的路徑
rscript string r指令碼所在路徑 $r_home/bin/rscript
以上為r集群中的各個伺服器的常用配置引數列表。
2、根據配置,建立r語言平行計算集群,master指明主節點,這個在我實踐的過程中是必須配置的。
cl <- makecluster(workerlist, type=」sock」, master=」192.168.180.216」)
3、運算結束後,關閉集群機器
stopcluster(cl);
R語言中的平行計算實現
平行計算有顯性並行和隱式並行,介紹可以參考 parallel是比較基礎的,不需要額外安裝,直接載入就行,但是不是很穩定,關於parallel包的介紹可以參考 foreach library foreach library doparallel 分配核心數,這裡獲取了物理核心數 cores detec...
R語言平行計算程式設計
r語言並行程式設計例項,將資料集rcuters 21578的50個文件賦值100,000次,得到包含500萬個文件的資料庫,查詢正規表示式。tm軟體包是r語言中為文字挖掘提供處理的package,提供資料匯入 語料庫處理 預處理 元資料管理 建立term document矩陣等功能。平行計算 lib...
R語言snow包平行計算
this post was kindly contributed by 資料科學與r語言 go there to comment and to read the full post.在資料探勘和機器學習領域有許多的演算法需要強大的計算能力,如果對大資料進行運算操作,那麼其工作量之大使單個cpu核心難...