SparkR是AMPLab发布的一个R开发包,为Apache Spark提供了轻量的前端。SparkR提供了Spark中弹性分布式数据集(RDD)的API,用户可以在集群上通过R shell交互性的运行job。例如,我们可以在HDFS上读取或写入文件,也可以使用 lapply 来定义对应每一个RDD元素的运算。

1
2
3
sc <- sparkR.init("local")
lines <- textFile(sc, "hdfs://data.txt")
wordsPerLine <- lapply(lines, function(line) { length(unlist(strsplit(line, " "))) })

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

1
2
3
4
5
6
7
lines <- textFile(sc, "hdfs://data.txt")
initialWeights <- runif(n=D, min = -1, max = 1)
createMatrix <- function(line) {
    as.numeric(unlist(strsplit(line, " "))) %*% t(initialWeights)
}
# initialWeights is automatically serialized
matrixRDD <- lapply(lines, createMatrix)

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

1
2
3
4
5
6
generateSparse <- function(x) {
    # Use sparseMatrix function from the Matrix package
    sparseMatrix(i=c(123), j=c(123), x=c(123))
}
includePackage(sc, Matrix)
sparseMat <- lapplyPartition(rdd, generateSparse)

下面介绍如何安装SparkR 

第一步,安装R

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

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

1.1 安装依赖

1
2
3
4
5
6
7
8
9
10
11
12
yum install gcc
yum install gcc-c++
yum install gcc-gfortran
yum install pcre-devel
yum install tcl-devel
yum install zlib-devel
yum install bzip2-devel
yum install libX11-devel
yum install readline-devel    #否则报”–with-readline=yes (default) and headers/libs are not available”错误
yum install libXt-devel          #否则报”configure: error: –with-x=yes (default) and X11 headers/libs are not available”错误
yum install tk-devel
yum install tetex-latex

1.2 下载源码,编译安装R

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

1
2
3
4
cd /softwares/R
tar -zxvf R-3.1.1.tar.gz
./configure  --enable-R-shlib (如果使用rJava需要加上 --enable-R-shlib)
make && make install

第二步,安装rjava

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

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

1
install.packages(“rJava”)

如果待安装机器不能上网,可以将源文件下载到本地,然后通过shell命令R CMD INSTALL ‘package_name’来安装:

1
R CMD INSTALL “rJava_0.9-5.tar.gz”

下载 rJava_0.9-6.tar.gz http://cran.r-project.org/web/packages/rJava/

1
2
cd /app/softwares/R
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 进行安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd /softwares/sbt
unzip sbt-0.13.5.zip
cp sbt/sbt/bin/sbt-launch.jar ~/bin
vi2 ~/bin/sbt
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
chmod u+x ~/bin/sbt
[root@cnsz131016 ~]# mkdir -p /root/.ivy2/local/org.scala-sbt/sbt/0.13.5/jars/
[root@cnsz131016 ~]# cp /tmp/sbt.jar /root/.ivy2/local/org.scala-sbt/sbt/0.13.5/jars/
[root@cnsz131016 ~]# sbt
Getting org.scala-sbt sbt 0.13.5 ...
:: retrieving :: org.scala-sbt#boot-app
        confs: [default]
        1 artifacts copied, 0 already retrieved (20kB/69ms)
Error during sbt execution: No Scala version specified or detected

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

第四步,安装 SparkR

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mkdir SparkRInstall
cp amplab-extras-SparkR-pkg-e1f95b6.tar.gz SparkRInstall
cd SparkRInstall
tar -zxvf amplab-extras-SparkR-pkg-e1f95b6.tar.gz
cd amplab-extras-SparkR-pkg-e1f95b6
sh install-dev.sh
 
[root@cnsz031907 amplab-extras-SparkR-pkg-e1f95b6]# ./install-dev.sh
* installing *source* package ‘SparkR’ ...
** libs
** arch -
./sbt/sbt assembly
Attempting to fetch sbt
curl: (6) Couldn't resolve host 'typesafe.artifactoryonline.com'
curl: (6) Couldn't resolve host 'repo.typesafe.com'
Launching sbt from sbt/sbt-launch-0.12.4.jar
Error: Invalid or corrupt jarfile sbt/sbt-launch-0.12.4.jar
make: *** [target/scala-2.10/sparkr-assembly-0.1.jar] Error 1
ERROR: compilation failed for package ‘SparkR’
* removing ‘/app/SparkRInstall/amplab-extras-SparkR-pkg-e1f95b6/lib/SparkR’

由于连不上网,不能直接编译sparkR,故在能联网的机器上对SparkR进行编译,之后再上传使用sbt编译后的包。上传编译后的包之后,使用以下命令进行安装:

1
sh install-dev.sh

修改R权限,使所有人都可读

1
chmod 755 -R /usr/local/lib64/R /usr/lib64/R /usr/local/bin/R

执行示例:

1
2
3
4
5
6
7
8
9
10
11
[hadoop@cnsz031907 SparkR-pkg]$ ./sparkR examples/pi.R local
WARNING: ignoring environment value of R_HOME
Loading required package: methods
Loading required package: rJava
[SparkR] Initializing with classpath /app/SparkRInstall/SparkR-pkg/lib/SparkR/sparkr-assembly-0.1.jar
 
14/09/10 17:08:44 INFO Slf4jLogger: Slf4jLogger started
100000
100000
Pi is roughly 3.13832
Num elements in RDD  200000

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

1
2
3
4
5
6
7
8
chmod 755 -R /app/SparkRInstall/
chown -R hadoop:hadoop /app/SparkRInstall/
ln -s /app/SparkRInstall/SparkR-pkg /app/sparkR
 
vi2 /etc/profile
export SPARKR_HOME=/app/sparkR
export PATH=$PATH:$SPARKR_HOME/
source /etc/profile

修改sparkR.profile的权限,因为该文件需要所有用户都可读写。

1
chmod 777 /tmp/sparkR.profile

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

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

1
2
mkdir /app/iso
mkdir /app/cdrom

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

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

1
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的文件

1
2
mkdir /etc/yum.repos.d/bak
mv *.repo /etc/yum.repos.d/bak

然后创建自己的.repo文件 vi myself.repo 内容如下:

1
2
3
4
5
6
7
8
9
10
[base]
name=RedHat
#注:这里的baseurl就是你挂载的目录,在这里是/mnt/cdrom
baseurl=file:///app/cdrom   
#注:这里的值enabled一定要为1 
enabled=1                   
gpgckeck的值无所谓
gpgckeck=0
#注:这个你cd /mnt/cdrom/可以看到这个key,这里仅仅是个例子
gpgkey=file:///app/cdrom/RPM-GPG-KEY-redhat-release

5. 测试

1
2
yum clean all
yum install gcc-gfortran

转自:http://www.cnblogs.com/Cherise/p/4342273.html

sparkR介绍及安装的更多相关文章

  1. 从零自学Hadoop(19):HBase介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇, ...

  2. 从零自学Hadoop(14):Hive介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 本系列已 ...

  3. Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)

    本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...

  4. Bash on Windows 抢鲜测试 -- 介绍及安装

    前言 微软在上周的Windows BUILD大会上宣布,WIN10将引入原生Bash,并将很快在技术预览版中推出. 如此一来,windows的命令行工具就不再只有cmd和powershell了,我们可 ...

  5. Tyk API网关介绍及安装说明

    Tyk API网关介绍及安装说明 Tyk是一个开源的轻量级API网关程序. 什么是API网关 API网关是一个各类不同API的前置服务器.API网关封装了系统内部架构,对外提供统一服务.此外还可以实现 ...

  6. Python介绍、安装、使用

    Python介绍.安装.使用 搬运工:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Python语言介绍 说到Python语言,就不得不说一下它的创始人Guido van Rossu ...

  7. Redis介绍以及安装(Linux)

    Redis介绍以及安装(Linux) redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的 ...

  8. 自动化运维工具之 Ansible 介绍及安装使用

    一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...

  9. 【兄弟连ThinkPHP】1、介绍和安装

    琢磨了好几天的ThinkPHP了,兄弟连的视频真心不错,下面是记得一些要点,只做备忘,有兴趣的朋友请去百度兄弟连. ## ThinkPHP 3 介绍及安装#讲师:赵桐正微博:http://weibo. ...

随机推荐

  1. webpack的版本进化史

    一.概述2015,webpack1支持CMD和AMD,同时拥有丰富的plugin和loader,webpack逐渐得到广泛应用. 2016.12,webpack2相对于webpack1最大的改进就是支 ...

  2. flask 模板block super()的讲解

    Flask强大的地方就可以引用模板,而且非常方便. 这里不得不介绍block这个概念. 模板的文件一般放在templates文件夹下,我们这里新建一个HTML文件,存放模板,'base.html' 在 ...

  3. 多臂机测试, AB测试

    bandit  强盗,土匪:恶棍:敲诈者 ['bændɪt] 多臂机 multi-armed bandit MAB  简写. one-arm bandit   tiger ji 是一种自动AB测试的方 ...

  4. 异构无线网络之QOS简介

    QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术. 在正常 ...

  5. Codeforces.741D.Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(dsu on tree 思路)

    题目链接 \(Description\) 给定一棵树,每条边上有一个字符(a~v).对每个节点,求它的子树中一条最长的路径,满足 路径上所有边上的字符可以重新排列成一个回文串.输出其最长长度. \(n ...

  6. gitbook构建文档命令

    安装node: sudo ln -s /opt/node-v8.3.9-linux-x64/bin/node /usr/local/bin/node sudo ln -s /opt/node-v8.3 ...

  7. Linux 下 make 命令 及 make 笔记

    Linux 下 make 命令是系统管理员和程序员用的最频繁的命令之一.管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题.本文我们将用一些实例来讨论 make ...

  8. spring源码分析系列 (5) spring BeanFactoryPostProcessor拓展类PropertyPlaceholderConfigurer、PropertySourcesPlaceholderConfigurer解析

    更多文章点击--spring源码分析系列 主要分析内容: 1.拓展类简述: 拓展类使用demo和自定义替换符号 2.继承图UML解析和源码分析 (源码基于spring 5.1.3.RELEASE分析) ...

  9. c# pictureBox1.Image的获得图片路径的三种方法 winform

    代码如下:c# pictureBox1.Image的获得图片路径的三种方法 winform 1.绝对路径:this.pictureBox2.Image=Image.FromFile("D:\ ...

  10. makefile中的shell编程注意点

    参考:http://blog.csdn.net/wanglang3081/article/details/49423105 (1)Makefile本质上来讲也是shell脚本,即每条command都是 ...