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

来源:互联网 发布:网络虚拟市场 编辑:程序博客网 时间:2024/05/18 03:23

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]], "\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 (前面红色取决于你的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的链接问题导致的。

转自:http://www.cnblogs.com/inspursu/p/4275701.html

0 0