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环境下安装R,Rstudio 以及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]], " ")
}
如果想将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 (前面红色取决于你的SparkVersion和Hadoop 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的链接问题导致的。