如何在Redhat中配置R环境
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.文档编写目的
R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。本文档主要讲述如何在Redhat中使用源码方式编译安装及配置R的环境。
那么如何在CDH集群中配置R的运行环境?如何使用R开发分析处理CDH集群数据?等等,我们继这篇文章之后在后续的文章都会进行说明。
- 内容概述
1.安装前准备
2.R源码编译
3.R环境变量配置
4.R代码测试
- 测试环境
1.操作系统:RedHat7.2
2.采用sudo权限的ec2-user用户操作
3.R版本3.4.2
4.Rstudio版本1.0.153
2.安装前准备
1.安装编译器
sudo yum -y install gcc
sudo yum -y install gcc-c++
sudo yum -y install gcc-gfortran
2.许多R包依赖Java,需要配置Java的环境变量
JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar:$CLASSPATH
PATH=$JAVA_HOME/bin:$PATH
3.安装R编译需要的依赖包
sudo yum -y install readline-devel
sudo yum -y install libXt-devel
sudo yum -y install bzip2-devel
sudo yum -y install xz-devel.x86_64
sudo yum -y install libcurl-devel
sudo yum -y install texinfo.x86_64 texlive-pdftex-doc.noarch tex texlive-scheme-basic
4.下载R源码
下载R源码至服务器
[ec2-user@ip-172-31-21-45 ~]$ wget https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-3/R-3.4.2.tar.gz
--2017-10-06 10:14:49-- https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-3/R-3.4.2.tar.gz
…
2017-10-06 10:15:00 (6.85 MB/s) - ‘R-3.4.2.tar.gz’ saved [30255544/30255544]
[ec2-user@ip-172-31-21-45 ~]$
3.R源码编译
1.将R-3.4.2.tar.gz压缩包解压至当前目录
[ec2-user@ip-172-31-21-45 ec2-user]# tar -zxvf R-3.4.2.tar.gz
2.进入R-3.4.2目录执行命令进行配置
[ec2-user@ip-172-31-21-45 ec2-user]# cd R-3.4.2
[ec2-user@ip-172-31-21-45 R-3.4.2]# sudo ./configure --prefix=/usr/local/R-3.4.2 --enable-R-shlib
显示如上截图则表示配置成功。
3.配置成功后,执行如下命令进行编译并安装到指定目录
[ec2-user@ip-172-31-21-45 R-3.4.2]# sudo make && make install
至此已完成R源码的编译及安装。
4.R环境变量配置
1.编辑/etc/profile文件,在文件末尾增加如下内容
R_HOME=/usr/local/R-3.4.2
PATH=$R_HOME/bin:$PATH
2.执行如下命令,使环境变量立即生效
[root@ip-172-31-21-45 R-3.4.2]# source /etc/profile
3.验证环境变量是否配置成功
[root@ip-172-31-21-45 R-3.4.2]# echo $R_HOME
[root@ip-172-31-21-45 R-3.4.2]# R
如上图示则表示R环境变量配置成功,且能正常使用。
5.R代码测试
如下测试代码主要描述使用Spark2的local模式计算本地文件aaa.txt的行数。
1.Rstudio代码运行效果
2.将test.R文件在Linux服务器上运行
library(sparklyr)
sc <- spark_connect(master = "local", spark_home = Sys.getenv("SPARK_HOME","/opt/cloudera/parcels/SPARK2/lib/spark2"))
count_lines <- function(sc, file) {
spark_context(sc) %>%
invoke("textFile", file, 1L) %>%
invoke("count")
}
count_lines(sc, "file:///home/ec2-user/aaa.txt")
spark_disconnect(sc)
print("Hello R")
3.在命令行运行test.R文件
[root@ip-172-31-21-45 ec2-user]# Rscript test.R
运行结果:
6.常见问题
问题一
configure: error: in `/home/ec2-user/R-3.4.2':
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details
解决方法:由于c++编译器的相关package没有安装导致
[ec2-user@ip-172-31-21-45 R-3.4.2]$ sudo yum install gcc-c++
问题二
checking for main in -ltermcap... no
checking for main in -ltermlib... no
checking for rl_callback_read_char in -lreadline... no
configure: error: --with-readline=yes (default) and headers/libs are not available
解决方法:由于需要依赖readline-devel包
[ec2-user@ip-172-31-21-45 R-3.4.2]$ sudo yum -y install readline-devel
问题三
checking for Fortran 77 libraries of fc...
checking how to get verbose linking output from gcc -std=gnu99... -v
checking for C libraries of gcc -std=gnu99... -L/usr/local/lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgcc_s
checking for dummy main to link with Fortran 77 libraries... none
checking for Fortran 77 name-mangling scheme... configure: error: in `/home/ec2-user/R-3.4.2':
configure: error: cannot compile a simple Fortran program
See `config.log' for more details
解决方法:由于需要依赖gcc-gfortran包的缘故
[ec2-user@ip-172-31-21-45 R-3.4.2]$ sudo yum -y install gcc-gfortran
问题四
checking for wctrans_t... yes
checking for mbstate_t... yes
checking for ICU... no
checking for X... no
configure: error: --with-x=yes (default) and X11 headers/libs are not available
解决方法:需要依赖libXt-devel包
[ec2-user@ip-172-31-21-45 R-3.4.2]$ sudo yum -y install libXt-devel
问题五
checking mmap support for zlib... yes
checking for BZ2_bzlibVersion in -lbz2... no
checking whether bzip2 support suffices... configure: error: bzip2 library and headers are required
解决方法:
[ec2-user@ip-172-31-21-45 R-3.4.2]$ sudo yum -y install bzip2-devel
问题六
checking whether bzip2 support suffices... yes
checking for lzma_version_number in -llzma... no
configure: error: "liblzma library and headers are required"
解决方法:
[ec2-user@ip-172-31-21-45 R-3.4.2]$ sudo yum -y install xz-devel.x86_64
问题七
checking curl/curl.h presence... no
checking for curl/curl.h... no
configure: error: libcurl >= 7.22.0 library and headers are required with support for https
解决方法:
[ec2-user@ip-172-31-21-45 R-3.4.2]$ sudo yum -y install libcurl-devel
问题八
configure: WARNING: you cannot build info or HTML versions of the R manuals
configure: WARNING: you cannot build PDF versions of the R manuals
configure: WARNING: you cannot build PDF versions of vignettes and help pages
解决方法:
[ec2-user@ip-172-31-26-102 R-3.4.2]$ sudo yum -y install texinfo.x86_64 texlive-pdftex-doc.noarch tex texlive-scheme-basic
问题九
configure: WARNING: neither inconsolata.sty nor zi4.sty found: PDF vignettes and package manuals will not be rendered optimally
解决方法:
下载inconsolata包
wget http://mirror.lzu.edu.cn/CTAN/fonts/inconsolata.zip
解压inconsolata.zip,将压缩包内容拷贝至/usr/share/texlive/texmf-dist/tex/latex
[ec2-user@ip-172-31-21-45 ~]$ unzip inconsolata.zip
[ec2-user@ip-172-31-21-45 ~]$ cd inconsolata
[ec2-user@ip-172-31-21-45 inconsolata]$ sudo scp -r * /usr/share/texlive/texmf-dist/tex/latex
执行命令刷新sty:sudo mktexlsr或者sudo texhash
[ec2-user@ip-172-31-21-45 inconsolata]$ sudo mktexlsr
mktexlsr: Updating /usr/share/texlive/texmf/ls-R...
mktexlsr: Updating /usr/share/texlive/texmf-config/ls-R...
mktexlsr: Updating /usr/share/texlive/texmf-dist/ls-R...
mktexlsr: Updating /usr/share/texlive/texmf-local///ls-R...
mktexlsr: Updating /usr/share/texlive/texmf-var/ls-R...
mktexlsr: Done.
醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花! 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
- Java8 Lambda表达式与Stream API (一):Lambda表达式你要知道的Java8 匿名内部类、函数式接口、lambda表达式与Stream API都在这里
- iOS runtime探究(五): 从runtime开始深入weak实现机理你要知道的runtime都在这里
- Java8 Lambda表达式与Stream API (二): Stream API的使用你要知道的Java8 匿名内部类、函数式接口、lambda表达式与Stream API都在这里
- Python Garbage Collection 与 Objective-C ARCPython GC 与 Objective-C ARC
- SpringMVC DispatcherServlet执行流程及源码分析你要知道的SpringMVC DispatcherServlet执行流程及源码分析都在这里
- iOS runtime探究(三): 从runtime开始理解OC的属性property你要知道的runtime都在这里
- jQuery选择器大全(48个代码片段+21幅图演示)1
- KVC 使用方法详解及底层实现你要知道的KVC、KVO、Delegate、Notification都在这里
- jQuery选择器大全(48个代码片段+21幅图演示)2
- 神经网络-感知器
- NSNotificationCenter 通知的使用方法详解你要知道的KVC、KVO、Delegate、Notification都在这里
- Protocol与Delegate 使用方法详解你要知道的KVC、KVO、Delegate、Notification都在这里
- iOS多线程——你要知道的GCD都在这里你要知道的iOS多线程NSThread、GCD、NSOperation、RunLoop都在这里
- NSCopying和NSCoding对象序列化反序列化基础详解你要知道的NSCopying、NSCoding协议及对象序列化和反序列化都在这里
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方法
- 分布式锁,三种实现方式,性能对比分析!
- Linux 中锁定和解锁用户帐户的三种方法
- centos8 安装 nginx的详细教程(图文)
- Ubuntu系统日志配置 /var/log/messages的方法
- 在Ubuntu 14 上安装 Nginx-RTMP 流媒体服务器的教程
- centos8自定义目录安装nginx(教程详解)
- VMware下Centos7桥接方式网络配置步骤详解
- Linux CentOS 6.5 卸载、tar安装MySQL的教程
- Linux CentOS 6.5 ifconfig查询不到ip的解决方法
- 打卡群2刷题总结1009——二叉树的中序遍历
- 解决Ubuntu 18.04安装VMwareTools错误问题
- 对linux下syslogd以及syslog.conf文件的解读说明
- Linux下安装tomcat并部署网站(推荐)
- 解决Linux中ifconfig和addr查看不到ip问题