• 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]], " ")

    }

     

    如果想将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的链接问题导致的。

  • 相关阅读:
    PowerDesigner中如何添加约束
    C#静态构造函数总结
    PendingIntent与Intent的区别
    常用编码总结
    操作系统的版本概况
    如何制作一寸、二寸、六寸证件照片
    datagridview使用tooltip控件显示单元格内容
    OpenGL ES之Must use a native order direct Buffer解决方案
    Exception.InnerException 属性的使用
    Matrix使用的分析
  • 原文地址:https://www.cnblogs.com/inspursu/p/4275701.html
Copyright © 2020-2023  润新知