Spark in action Spark 以及SparkR的安裝配置說明


Spark以及SparkR的安裝(standalone模式)

From :ssdutsu @ Inspur Company

 suzhiyuan2006@gmail.com

操作系統 CentOS 7

Java 版本 JDK 1.7

Spark安裝過程請見PDF文件 Spark 1.0安裝配置文件

網址:http://www.it165.net/admin/html/201407/3379.html

(別忘了配置免密碼登陸和關閉防火牆)

下面重點描述如何在linux環境下安裝RRstudio 以及SparkR

1 Linux下安裝R(Slave  機器上也要安裝R)

1.1、下載

首先去官網下載R的軟件包,官網網址為

http://cran.rstudio.com/

1.2、解壓:

tar -zxvf R-3.1.2.tar.gz (目前最新版的R為3.1.2,建議用最新版,否則某些可用的包不支持就麻煩大了)

cd R-3.1.2

 

1.3、安裝

yum install readline-devel

yum install libXt-devel

(上面兩個安裝我也不知道干啥的,但是如果不先運行這兩行,有可能后續安裝報錯,不安裝你會后悔的)

然后運行./configure  --enable-R-shlib --prefix=/home/ssdutsu/R-3.1.2(這里注意要改成自己的R所在的路徑)

(如果使用rJava需要加上 --enable-R-shlib

./configure  --enable-R-shlib --prefix=/usr/R-3.1.2(!!由於SparkR是需要rJava的,所以建議后面這些亂七八糟的參數最好加上))

然后運行

make

make install

 

1.4、配置環境變量

vi .bash_profile

 

PATH=/usr/R-3.1.2/bin(同樣注意這里的路徑)

(這里別source)

1.5、測試:創建腳本(t.R)

cd /opt/script/R

vim t.R

 

#!/path/to/Rscript    #第一行

x<-c(1,2,3)    #R語言代碼

y<-c(102,299,301)

model<-lm(y~x)

summary(model)

 

1.6、測試:執行腳本

R CMD BATCH --args /opt/script/R/t.R

more /opt/script/R/t.Rout    #查看執行的結果

或者第二種方式

Rscript /opt/script/R/test.R    #結果直接輸出到終端

 

2 Linux安裝Rstudio

Rstudio有兩個版本,一個是desktop版本,主要用於個人單機開發,還有一個server版,可以從瀏覽器中訪問Rstudio,適用於多人協作開發。(Ps:Rstudio是開發R最強大的IDE,沒有之一, sever版本只能在linux上安裝)

安裝Rstudio的過程很簡單,去官網下載rpm包,然后rpm他就行了。(別問我rpm是什么,我也不知道, (linux高手表示不屑於問))

官網地址:

Server版:http://www.rstudio.com/products/RStudio/#Server

Desktop 版:http://www.rstudio.com/products/RStudio/#Desk

(左邊是免費的,右邊是收費版本,土豪請無視免費,下載個收費的讓我們看看也好)

安裝完成之后,Rstudio會自動匹配系統中的R環境,並且加載相應位置的R包,在R shell中運行 .libPaths()可查看相應的R包都裝在什么地方。

Rstudio-server 的默認安裝路徑是  /usr/lib/rstudio-server

如果要啟動rstudio server服務器,運行相應bin目錄下的 ./rstudio-server start 就可以了, 然后打開瀏覽器,輸入本機IP地址:8787 (192.168.67.130:8787) 就可以訪問了,默認端口是8787(真霸氣)。

PS:,Rstudio使用linux系統本身的用戶名密碼進行登陸,同時不允許root用戶登陸。(這個就導致了一個很扯淡的問題:你無法在rstudio中進行R包的部分管理操作,比如刪除SparkR包,刪除rJava包等)

 

3 Linux 安裝SparkR

(這時候系統的R以及Rstudio已經安裝完畢,並且我假設OpenJDK的版本大於7.0)

3.1 首先要配置R的java環境

在linux終端中輸入命令:  R CMD javareconf

 

 

然后安裝rJava

 

在linux終端中 輸入 R 即可進入R shell

 

 

運行install.packages(“rJava”)

(注意)這行代碼運行完成之后,會提示你選擇一個鏡像地址下載rJava文件,別選中科大(Hefei)的鏡像,貌似沒有rJava這個東西,選擇Beijing的。

 

 

下面是兩種方法安裝SparkR

3.2 安裝SparkR

 3.2.1  通過R shell 安裝(建議不要這么干)

雖然這個方法可以安裝,但是你的spark的版本必須是1.1.0,否則還是算了,(博主的spark1.2.0 然后用了這個方法,一把辛酸淚啊)

安裝devtools包

Devtools里面有個install-github 函數,可以方便地在Rshell中安裝SparkR

在Rshell 中加載 devtools

library(devtools)

install-github("","") 資料很多,實在是懶得上傳圖片。

這行install-github 的命令,運行起來可能會比較慢 (取決於網速和人品,不幸的是, 樓主RP和網速都沒有給力,多試幾次,總會好的)

 

安裝完SparkR之后,可以用wordcount來檢驗安裝正確與否。

步驟1:在R shell中加載SparkR

步驟2:初始化SparkContext及執行wordcount

 

sc <- sparkR.init(master="local", "RwordCount")

lines <- textFile(sc, "README.md")

words <- flatMap(lines,

  function(line) {

    strsplit(line, " ")[[1]]

  })

wordCount <- lapply(words, function(word) { list(word, 1L) })

 

counts <- reduceByKey(wordCount, "+", 2L)

  • output <- collect(counts)

for (wordcount in output) {

  cat(wordcount[[1]], ": ", wordcount[[2]], "\n")

}

 

如果想將SparkR運行於集群環境中,只需要將master=local,換成spark集群的監聽地址即可(sparkR.init(“spark://192.168.

1.137:7077”))

方法1的好處是,sparkR自動安裝到其他的R包所在的目錄下,不用在.libPaths()重新增加新的路徑,缺點是靠網速和人品。

 

3.2.2 通過源代碼進行編譯

從網頁下載代碼https://github.com/amplab-extras/SparkR-pkg  sparkR的代碼編譯

下載zip或者tgz文件之后,解壓縮,然后cd 進入解壓縮之后的文件包,里面有這些東西在 (有個examples 可以用一下)

 

然后 [root@master sparkR]# SPARK_VERSION=1.2.0 HADOOP_VERSION=2.4.0 ./install-dev.sh ./install-dev.sh (前面紅色取決於你的SparkVersionHadoop Version,博主就是因為沒有指定version,被搞了好幾天

另外還需要在spark的conf目錄下面修改 spark-defaults-conf這個文件 加一行 spark.master    spark://Master的ip: Master的端口

就可以直接搞定了,運行完成之后,會在同一個目錄下面生成一個lib文件夾,lib文件夾里面就是SparkR文件夾,這個文件夾就是R語言能認識的“SparkR包”。

然后,在終端中運行 ./sparkR這個可執行文件,就會自動進入R 的shell,同時自動加載SparkR包。

運行例子程序(僅限方法2):

 local表示是在本地運行,[2]表示啟動了兩個線程。

如果想將SparkR運行於集群環境中,只需要將master=local,換成spark集群的監聽地址即可(sparkR.init(“spark://192.168.

1.137:7077”))

注意了(注意真多),worker也就是 slave上面也必須安裝SparkR才行。

關於方法2的優點是不依靠人品,缺點是如果通過 R 來啟動 Rshell的話,不配置一下.libPaths() R無法找到sparkR在哪,配置過程如下:

代碼都在 R shell中運行

lib_path<- .libPaths()

lib_path<-c(lib_path,”你的sparkR的路徑一直到3.2下方圖的lib 目錄”)

.libPaths(Lib_path)

rm(lib_path)

這樣就可以了,如果rstudio也找不到,在rstudio的界面命令行里,運行一次同樣的代碼。

(上面這行代碼貌似是臨時性的,重啟機器后libpath又沒了,永久性解決方法: 打開/XX/.bashrc 文件(XX是用戶名,千萬別搞錯了bashrc的位置啊,血的教訓),然后 添加一行:export R_LIBS=/home/ssdutsu/R/SparkR-pkg-master/lib)  別忘了source,這樣得到的默認路徑改成SparkR的路徑了,不過Rstudio安裝包時可以自由選擇,已經無傷大雅了。

 

最后一點:(困擾了我好久)

通過Rshell運行sparkR的示例程序,是沒有問題的。但是我使用Rstudio-server版本運行上面的sparkR示例程序時,總是報 can not find Rscript 的錯誤,上網搜了一下,也有很多人在問,但是沒有解決方法。我換成了Rstudio的desktop版,就正常運行了。 估計是Rstudio server和Rscript的鏈接問題導致的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM