在Hadoop集群上运行R措施–安装RHadoop
RHadoop是由Revolution Analytics发起的一个开源项目,它可以将统计语言R与Hadoop结合起来。目前该项目包括三个R packages,分别为支持用R来编写MapReduce应用的rmr、用于R语言访问HDFS的rhdfs以及用于R语言访问HBase的rhbase。下载网址为https://github.com/RevolutionAnalytics/RHadoop/wiki/Downloads。
说明:下面的记录是在安装成功后的总结,中间的过程描述及解决方法可能并不较精确(用红色进行了标记),仅供参考。服务器操作系统为centos 5.6。
一、软件版本
R 2.13.1、Hadoop集群(CDH3)、JDK1.6。
二、安装节点
其中rhbase和rhdfs在Hadoop集群的namenode上安装即可,而rmr则需要在集群上的每一个节点上安装。
三、安装
由于网络限制,只能先将源文件下载到本地,然后通过shell命令R CMD INSTALL ‘package_name’来安装。
a)
R CMD INSTALL ‘rJava_0.9-3.tar.gz’
R CMD INSTALL ‘rhdfs_1.0.1.tar.gz’
在执行安装rJava时,可能会失败,提示错误信息“checking whether JNI programs can be compiled… configure: error: Cannot compile a simple JNI program. See config.log for details.”,这可能是由于jdk的版本问题造成的,建议安装jdk1.6。
b)
R CMD INSTALL ‘iterators_1.0.5.tar.gz’
R CMD INSTALL ‘itertools_0.1-1.tar.gz’
R CMD INSTALL ‘RJSONIO_0.96-0.tar.gz’
R CMD INSTALL ‘digest_0.5.1.tar.gz’
R CMD INSTALL ‘rmr_1.1.tar.gz’
c)
tar -zvxf thrift-0.6.1.tar.gz
cd thrift-0.6.1
./configure –with-boost=/usr/include/boost JAVAC=/usr/jdk1.6/bin/javac
make
make install
其中—with-boost及JAVAC的值根据服务器的实际情况进行修改(不确定javac的设置是不是必须的)。
PKG_CONFIG_PATH
。
在/etc/profile中输入
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/
(并通过命令
souce /etc/profile
命令使得环境变量生效)。
之后输入shell命令pkg-config –cflags thrift
验证
pkg-config路径是否设置正确,返回结果若为-I/usr/local/include/thrift
则表示成功。
cp /usr/local/lib/libthrift.so.0 /usr/lib
R CMD INSTALL ‘rhbase_1.0.1.tar.gz’
四、验证并测试
在R命令行中输入library(rmr)、library(rhdfs)、library(rhbase),载入成功即表示安装成功。
测试用例:利用mapreduce实现和函数sapply相同的功能。
普通R代码:
groups = rbinom(32, n = 50, prob = 0.4)
tapply(groups, groups, length)
利用mapreduce实现的R代码:
groups = to.dfs(groups)
(为保证相同的数据,仍然利用了之前的groups)
from.dfs(mapreduce(input = groups, map = function(k,v) keyval(v, NULL), reduce = function(k,vv) keyval(k, length(vv))))