sparkR介绍及安装
SparkR是AMPLab发布的一个R开发包,为Apache Spark提供了轻量的前端。SparkR提供了Spark中弹性分布式数据集(RDD)的API,用户可以在集群上通过R shell交互性的运行job。例如,我们可以在HDFS上读取或写入文件,也可以使用 lapply 来定义对应每一个RDD元素的运算。
|
1
2
3
|
sc <- sparkR.init("local")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
|
initialWeights <- runif(n=D, min = -1, max = 1)createMatrix <- function(line) { as.numeric(unlist(strsplit(line, " "))) %*% t(initialWeights)}# initialWeights is automatically serializedmatrixRDD <- 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(1, 2, 3), j=c(1, 2, 3), x=c(1, 2, 3))}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 gccyum install gcc-c++yum install gcc-gfortranyum install pcre-develyum install tcl-develyum install zlib-develyum install bzip2-develyum install libX11-develyum 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-develyum 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/Rtar -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/RR 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/sbtunzip sbt-0.13.5.zipcp sbt/sbt/bin/sbt-launch.jar ~/binvi2 ~/bin/sbtSBT_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 ~]# sbtGetting 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 SparkRInstallcp amplab-extras-SparkR-pkg-e1f95b6.tar.gz SparkRInstallcd SparkRInstalltar -zxvf amplab-extras-SparkR-pkg-e1f95b6.tar.gzcd amplab-extras-SparkR-pkg-e1f95b6sh install-dev.sh[root@cnsz031907 amplab-extras-SparkR-pkg-e1f95b6]# ./install-dev.sh* installing *source* package ‘SparkR’ ...** libs** arch -./sbt/sbt assemblyAttempting to fetch sbtcurl: (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.jarError: Invalid or corrupt jarfile sbt/sbt-launch-0.12.4.jarmake: *** [target/scala-2.10/sparkr-assembly-0.1.jar] Error 1ERROR: 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 localWARNING: ignoring environment value of R_HOMELoading required package: methodsLoading required package: rJava[SparkR] Initializing with classpath /app/SparkRInstall/SparkR-pkg/lib/SparkR/sparkr-assembly-0.1.jar14/09/10 17:08:44 INFO Slf4jLogger: Slf4jLogger started100000100000Pi is roughly 3.13832Num 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/sparkRvi2 /etc/profileexport SPARKR_HOME=/app/sparkRexport PATH=$PATH:$SPARKR_HOME/source /etc/profile |
修改sparkR.profile的权限,因为该文件需要所有用户都可读写。
|
1
|
chmod 777 /tmp/sparkR.profile |
【一】利用iso镜像文件创建本地yum源
1. 创建iso存放目录和挂载目录
|
1
2
|
mkdir /app/isomkdir /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/bakmv *.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/cdrombaseurl=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 allyum install gcc-gfortran |
转自:http://www.cnblogs.com/Cherise/p/4342273.html
sparkR介绍及安装的更多相关文章
- 从零自学Hadoop(19):HBase介绍及安装
阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇, ...
- 从零自学Hadoop(14):Hive介绍及安装
阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 本系列已 ...
- Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)
本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...
- Bash on Windows 抢鲜测试 -- 介绍及安装
前言 微软在上周的Windows BUILD大会上宣布,WIN10将引入原生Bash,并将很快在技术预览版中推出. 如此一来,windows的命令行工具就不再只有cmd和powershell了,我们可 ...
- Tyk API网关介绍及安装说明
Tyk API网关介绍及安装说明 Tyk是一个开源的轻量级API网关程序. 什么是API网关 API网关是一个各类不同API的前置服务器.API网关封装了系统内部架构,对外提供统一服务.此外还可以实现 ...
- Python介绍、安装、使用
Python介绍.安装.使用 搬运工:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Python语言介绍 说到Python语言,就不得不说一下它的创始人Guido van Rossu ...
- Redis介绍以及安装(Linux)
Redis介绍以及安装(Linux) redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的 ...
- 自动化运维工具之 Ansible 介绍及安装使用
一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...
- 【兄弟连ThinkPHP】1、介绍和安装
琢磨了好几天的ThinkPHP了,兄弟连的视频真心不错,下面是记得一些要点,只做备忘,有兴趣的朋友请去百度兄弟连. ## ThinkPHP 3 介绍及安装#讲师:赵桐正微博:http://weibo. ...
随机推荐
- request.environ.get('wsgi.websocket')
前言 websocket 是一种html5新的接口,以前服务器推送需要进行ajax等方式进行轮训,对服务器压力较高,随着新标准的推进,使用websocket在推送等方面已经是比较成熟了,并且各个浏览器 ...
- 51nod 1277 字符串中的最大值
题目链接 51nod 1277 字符串中的最大值 题解 对于单串,考虑多串的fail树,发现next数组的关系形成树形结构 建出next树,对于每一个前缀,他出现的次数就是他子树的大小 代码 #inc ...
- 4067: [Ctsc2015]gender 动态规划 网络流
国际惯例的题面:首先这题是缺少两个隐藏条件的:第一个是这k条链的起点和终点所在的层是对齐的,也就是说不会出现两条链错开的情况,且这张图恰好由n层组成:第二个就是任意一个点都包含在与链上的点直接或间接相 ...
- spring源码分析系列 (3) spring拓展接口InstantiationAwareBeanPostProcessor
更多文章点击--spring源码分析系列 主要分析内容: 一.InstantiationAwareBeanPostProcessor简述与demo示例 二.InstantiationAwareBean ...
- vs2008快捷键
Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL ...
- Adding Digital control to Dual tracking LM317 / LM337 Bench supply
Adding Digital control to Dual tracking LM317 / LM337 Bench supply I've been working on my own idea ...
- HTML5 background-color和background-image问题共用问题
在HTML5中支持背景图片和背景颜色在一个标签中同时渲染. 一般的需求是为元素指定背景颜色,然后在背景色的商品绘制背景图. 支持:Google,FF,IE9以上浏览器. 基本原则:先设置背景图片,再指 ...
- vs2010编译错误(报错:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏)
报错:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 1> 这段时间忙于看文献,没用过VS了. 今天用着用着就报错了: LINK : fat ...
- gitolite migration to bitbucket
https://gist.github.com/kostajh/9249937 https://designhammer.com/blog/easily-migrate-git-repositorie ...
- 链接选项-rpath的一个问题记录
问题简述 大概是这么一个情况,有一个过去已经写好的程序,这个程序用于处理网络通信,接收一些操作指令.具体的指令操作通过运行时加载动态库的形式进行扩展.(类似于net-snmp二次开发的一种形式) 问题 ...