CentOS7.0离线安装RHadoop

来源:互联网 发布:网络及信息安全答案 编辑:程序博客网 时间:2024/06/05 05:59

近期,由于工作需要,在原有的Hadoop2.6.0环境上安装了RHadoop,主要借鉴了——RHadoop实践系列文章RHadoop安装,区别之处在于离线安装较新版本的R-3.2.3、rhdfs_1.0.8和rmr2_3.3.1,并解决参考链接安装过程中的一些疑问。

安装环境:CentOS-7.0-1460-x86_64、Hadoop-2.6.0、Java Version "1.7.0_79"

节点名称:nameNode1、nameNode2、ResourceManager、dataNode1、dataNode2、dataNode2。

其中nameNode1(nameNode2随意)需要安装:R、rhdfs、rmr2。计算节点dataNode1、2、3需要安装:R、rmr2。安装时为了方便,直接将nameNode1上安装好的直接scp到dataNode节点上了,rhbase暂未使用。下图是RHadoop Package安装位置的官方说明,红字是对本文测试的说明。


1.安装包准备:

https://www.r-project.org/ —— R-3.2.3.tar.gz。

https://github.com/RevolutionAnalytics/RHadoop/wiki/Downloads —— rhdfs_1.0.8.tar.gz、rmr2_3.3.1.tar.gz。

如果系统环境不全的话,还需要配置yum本地源,安装gcc以及下面两个R语言编译时需要用到的库(下两行源自开头提到的RHadoop安装)。

#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”错误

2.R语言安装:nameNode1节点,用户hadoop (非root用户)

$ tar -xzvf /home/hadoop/R-3.2.3.tar.gz

$ cd /home/hadoop/R-3.2.3

$ ./configure // 遇到error则根据提示安装依赖库。 若有需要安装RStudio则使用 ./configure --enable-R-shlib 

$ make // make安装时没遇到什么问题

$ make install // cannot stat 'NEWS.rds': No such file or directory 遇到此问题忽略即可

3.添加环境变量:(root用户)

# vi /etc/profile

1.是Java环境,2.是Hadoop环境


在文件末尾添加3.的三个环境变量,其中HADOOP_CMD和HADOOP_STREAMING两个是RHadoop环境需要,Path中添加的是R语言环境。

保存退出

# source /etc/profile  // 使其生效

$ R  // 退回hadoop用户,键入R即可看到


4.RHadoop依赖包以及rhdfs_1.0.8.tar.gz、rmr2_3.3.1.tar.gz安装:

R语言安装R package的2种方法 —— 离线安装各依赖包,依赖包下载:http://mirror.bjtu.edu.cn/cran/ 包很多,Ctrl+F按名称搜索下载即可。

 (hadoop用户下) 安装成功均结束于Done,否则会提示缺少依赖包

$ R CMD INSTALL rJava_0.9-8.tar.gz

$ R CMD INSTALL Rcpp_0.12.5.tar.gz

$ R CMD INSTALL magrittr_1.5.tar.gz ——> $ R CMD INSTALL  plyr_1.8.3.tar.gz ——> $ R CMD INSTALL stringi_1.1.1.tar.gz

离线安装stringi时,由于死活需要下载一个icudt55l.zip的一个文件,无奈只能手动下载解压得到icudt55l.dat的文件,

经摸索,需要在安装时快速放到/home/hadoop/R-3.2.3/library/stringi/libs目录下,最终安装成功。只有安装完stringi才能安装stringr。

$ R CMD INSTALL stringr_1.0.0.tar.gz

$ R CMD INSTALL reshape2_1.4.1.tar.gz

$ R CMD INSTALL iterators_1.0.8.tar.gz

$ R CMD INSTALL itertools_0.1-3.tar.gz

$ R CMD INSTALL digest_0.6.9.tar.gz

$ R CMD INSTALL RJSONIO_1.3-0.tar.gz

$ R CMD INSTALL functional_0.6.tar.gz

$ R CMD INSTALL bitops_1.0-6.tar.gz

$ R CMD INSTALL caTools_1.17.1.tar.gz // 这个包可能是因为版本更新,也需要依赖上,否则后续加载库的时候会报错

安装完这些依赖就可以安装rhdfs_1.0.8.tar.gz和rmr2_3.3.1.tar.gz

$ R CMD INSTALL rhdfs_1.0.8.tar.gz

$ R CMD INSTALL rmr2_3.3.1.tar.gz

至此,运行R Client的节点安装完成。最后,需要将R-3.2.3文件夹复制到三个dataNode中,/etc/profile文件也需覆盖dataNode中的文件并使其生效。Hadoop集群无需重启

5.RHadoop程序用例测试及错误解决:

$ R // 进入RClient,通过.packages(all.available=T)命令可以查看安装的所有R包


然后依次输入library(fhdfs)、hdfs.init()、library(rmr2)就可以开始使用RHadoop写R语言的mapreduce。

截图中的Warning message忽略即可。


> small.ints = to.dfs(1:20)

> mapreduce(input = small.ints, map = function(k, v) cbind(v, v^2))

上述两行R命令敲完,就会调用MapReduce,可以看到执行进度,并通过from.dfs命令查询到如下结果:

> from.dfs("/tmp/file…………") 


本文测试时遇到的问题:

java.io.IOException: Cannot run program "Rscript": java.io.IOException: error=2, No such file or directory

解决方法:从R的安装目录/home/hadoop/R-3.2.3/bin下做R和Rscript的符号链接到/usr/bin下,再次执行即可解决错误。

root用户:

# ln -s /home/hadoop/R-3.2.3/bin/R /usr/bin

# ln -s /home/hadoop/R-3.2.3/bin/Rscript /usr/bin

注意:使用绝对路经建立软连接,否则会出现Too many levels of symbolic links的错误。


初次发文,错误之处敬请指正,谢谢~



0 0
原创粉丝点击