sparkR介绍及安装

parkR是AMPLab发布的一个R开发包,为Apache Spark提供了轻量的前端。SparkR提供了Spark中弹性分布式数据集(RDD)的API,用户可以在集群上通过R shell交互性的运行job。例如,我们可以在HDFS上读取或写入文件,也可以使用 lapply 来定义对应每一个RDD元素的运算。
[Bash shell] 纯文本查看 复制代码
01
sc <- sparkR.init("local")
02
lines <- textFile(sc, "hdfs://data.txt")
03
wordsPerLine <- lapply(lines, function(line) { length(unlist(strsplit(line, " "))) })


除了常见的RDD函数式算子reduce、reduceByKey、groupByKey和collect之外,SparkR也支持利用 lapplyWithPartition 对每个RDD的分区进行操作。 SparkR也支持常见的闭包(closure)功能:用户定义的函数中所引用到的变量会自动被发送到集群中其他的机器上。参见一下例子中用户闭包中引用的 initialWeights 会被自动发送到集群其他机器上。 


[Bash shell] 纯文本查看 复制代码
01
lines <- textFile(sc, "hdfs://data.txt")
02
initialWeights <- runif(n=D, min = -1, max = 1)
03
createMatrix <- function(line) {
04
    as.numeric(unlist(strsplit(line, " "))) %*% t(initialWeights)
05
}
06
# initialWeights is automatically serialized
07
matrixRDD <- lapply(lines, createMatrix)




用户还可以很容易的在已经安装了R开发包的集群上使用SparkR。includePackage 命令用于指示在每个集群上执行操作前读取开发包。以下是个例子:


[Bash shell] 纯文本查看 复制代码
01
generateSparse <- function(x) {
02
    # Use sparseMatrix function from the Matrix package
03
    sparseMatrix(i=c(1, 2, 3), j=c(1, 2, 3), x=c(1, 2, 3))
04
}
05
includePackage(sc, Matrix)
06
sparseMat <- lapplyPartition(rdd, generateSparse)




下面介绍如何安装SparkR 


第一步,安装R


参考http://www.myexception.cn/linux-unix/680876.html


由于安装R依赖比较多,故利用iso文件创建本地yum源,见后【一】利用iso镜像文件创建本地yum源


1.1 安装依赖


[Bash shell] 纯文本查看 复制代码
01
yum install gcc
02
yum install gcc-c++
03
yum install gcc-gfortran
04
yum install pcre-devel
05
yum install tcl-devel
06
yum install zlib-devel
07
yum install bzip2-devel
08
yum install libX11-devel
09
yum install readline-devel    #否则报”–with-readline=yes (default) and headers/libs are not available”错误
10
yum install libXt-devel          #否则报”configure: error: –with-x=yes (default) and X11 headers/libs are not available”错误
11
yum install tk-devel
12
yum install tetex-latex






1.2 下载源码,编译安装R


下载http://mirror.bjtu.edu.cn/cran/src/base/R-3/R-3.1.1.tar.gz


[Bash shell] 纯文本查看 复制代码
01
cd /softwares/R
02
tar -zxvf R-3.1.1.tar.gz
03
./configure  --enable-R-shlib (如果使用rJava需要加上 --enable-R-shlib)
04
make && make install




第二步,安装rjava


参考 http://www.geedoo.info/page/3


在联网的情况下,可以进入R命令,安装rJava包:


[Bash shell] 纯文本查看 复制代码
01
install.packages(“rJava”)




如果待安装机器不能上网,可以将源文件下载到本地,然后通过shell命令R CMD INSTALL ‘package_name’来安装:
[Bash shell] 纯文本查看 复制代码
01
R CMD INSTALL “rJava_0.9-5.tar.gz”




下载 rJava_0.9-6.tar.gz http://cran.r-project.org/web/packages/rJava/
[Bash shell] 纯文本查看 复制代码
01
cd /app/softwares/R
02
R CMD INSTALL "rJava_0.9-6.tar.gz"




第三步,安装sbt


下载 http://www.scala-sbt.org/download.html


参考http://www.scala-sbt.org/0.13/tutorial/Manual-Installation.html 进行安装


[Bash shell] 纯文本查看 复制代码
01
cd /softwares/sbt
02
unzip sbt-0.13.5.zip
03
cp sbt/sbt/bin/sbt-launch.jar ~/bin
04
vi2 ~/bin/sbt
05
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
06
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
07
chmod u+x ~/bin/sbt
08
[root@cnsz131016 ~]# mkdir -p /root/.ivy2/local/org.scala-sbt/sbt/0.13.5/jars/
09
[root@cnsz131016 ~]# cp /tmp/sbt.jar /root/.ivy2/local/org.scala-sbt/sbt/0.13.5/jars/
10
[root@cnsz131016 ~]# sbt
11
Getting org.scala-sbt sbt 0.13.5 ...
12
:: retrieving :: org.scala-sbt#boot-app
13
        confs: [default]
14
        1 artifacts copied, 0 already retrieved (20kB/69ms)
15
Error during sbt execution: No Scala version specified or detected




由于无法连接外网,所以没有安装成功。


第四步,安装 SparkR


下载 SparkR (http://amplab-extras.github.io/SparkR-pkg/)


[Bash shell] 纯文本查看 复制代码
01
mkdir SparkRInstall
02
cp amplab-extras-SparkR-pkg-e1f95b6.tar.gz SparkRInstall
03
cd SparkRInstall
04
tar -zxvf amplab-extras-SparkR-pkg-e1f95b6.tar.gz
05
cd amplab-extras-SparkR-pkg-e1f95b6
06
sh install-dev.sh
07
  
08
[root@cnsz031907 amplab-extras-SparkR-pkg-e1f95b6]# ./install-dev.sh
09
* installing *source* package ‘SparkR’ ...
10
** libs
11
** arch -
12
./sbt/sbt assembly
13
Attempting to fetch sbt
14
curl: (6) Couldn't resolve host 'typesafe.artifactoryonline.com'
15
curl: (6) Couldn't resolve host 'repo.typesafe.com'
16
Launching sbt from sbt/sbt-launch-0.12.4.jar
17
Error: Invalid or corrupt jarfile sbt/sbt-launch-0.12.4.jar
18
make: *** [target/scala-2.10/sparkr-assembly-0.1.jar] Error 1
19
ERROR: compilation failed for package ‘SparkR’
20
* removing ‘/app/SparkRInstall/amplab-extras-SparkR-pkg-e1f95b6/lib/SparkR’




由于连不上网,不能直接编译sparkR,故在能联网的机器上对SparkR进行编译,之后再上传使用sbt编译后的包。上传编译后的包之后,使用以下命令进行安装:
[Bash shell] 纯文本查看 复制代码
01
sh install-dev.sh




修改R权限,使所有人都可读
[Bash shell] 纯文本查看 复制代码
01
chmod 755 -R /usr/local/lib64/R /usr/lib64/R /usr/local/bin/R




执行示例:
[Bash shell] 纯文本查看 复制代码
01
[hadoop@cnsz031907 SparkR-pkg]$ ./sparkR examples/pi.R local
02
WARNING: ignoring environment value of R_HOME
03
Loading required package: methods
04
Loading required package: rJava
05
[SparkR] Initializing with classpath /app/SparkRInstall/SparkR-pkg/lib/SparkR/sparkr-assembly-0.1.jar
06
  
07
14/09/10 17:08:44 INFO Slf4jLogger: Slf4jLogger started
08
100000
09
100000
10
Pi is roughly 3.13832
11
Num elements in RDD  200000


修改PATH和CLASSPATH,方便之后使用:


[Bash shell] 纯文本查看 复制代码
01
chmod 755 -R /app/SparkRInstall/
02
chown -R hadoop:hadoop /app/SparkRInstall/
03
ln -s /app/SparkRInstall/SparkR-pkg /app/sparkR
04
  
05
vi2 /etc/profile
06
export SPARKR_HOME=/app/sparkR
07
export PATH=$PATH:$SPARKR_HOME/
08
source /etc/profile


修改sparkR.profile的权限,因为该文件需要所有用户都可读写。
[Bash shell] 纯文本查看 复制代码
01
chmod 777 /tmp/sparkR.profile






【一】利用iso镜像文件创建本地yum源


1. 创建iso存放目录和挂载目录




[Bash shell] 纯文本查看 复制代码
01
mkdir /app/iso
02
mkdir /app/cdrom




2. 将iso镜像文件上传到/app/iso文件夹下


3. 将/app/iso/下的iso文件挂载到/mnt/cdrom目录


[Bash shell] 纯文本查看 复制代码
01
mount -o loop /app/iso/rhel-server-6.5-x86_64-dvd.iso /app/cdrom






注:挂载完之后对其操作会提示设备繁忙,此时需要umount解开挂载才行


查看是否挂载成功: df -h <用来查看系统中所有挂载的,mount也可以


4.<最关键的一步>如果/etc/yum.repos/下面有其它的*.repo文件,先创建个文件夹,将这些*.repo先转移到文件夹中,自己写一个.repo的文件




[Bash shell] 纯文本查看 复制代码
01
mkdir /etc/yum.repos.d/bak
02
mv *.repo /etc/yum.repos.d/bak




然后创建自己的.repo文件 vi myself.repo 内容如下:
[Bash shell] 纯文本查看 复制代码
01
[base]
02
name=RedHat
03
#注:这里的baseurl就是你挂载的目录,在这里是/mnt/cdrom
04
baseurl=file:///app/cdrom  
05
#注:这里的值enabled一定要为1
06
enabled=1                  
07
gpgckeck的值无所谓
08
gpgckeck=0
09
#注:这个你cd /mnt/cdrom/可以看到这个key,这里仅仅是个例子
10
gpgkey=file:///app/cdrom/RPM-GPG-KEY-redhat-release




5. 测试:


[Bash shell] 纯文本查看 复制代码
01
yum clean all
02
yum install gcc-gfortran
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值