RHadoop单机安装实践

未来已来2018-09-06 09:46

作者:刘杰


R语言具有丰富的封装库分析数据的能力,不过对海量数据力不从心。使用RHadoop可以给R语言插上处理海量数据能力的翅膀。R语言接入Hadoop有RHipe,RHadoop,Streaming三种方式,本文介绍RHadoop方式。

【环境】

  • ubuntu 14.04
  • hadoop-2.6.0-cdh5.4.1
  • R 3.0.2
  • jdk1.7.0_51

【安装RHadoop】

RHadoop是RevolutionAnalytics的工程的项目,开源实现代码在GitHub社区可以找到,下载地址:https://github.com/RevolutionAnalytics/RHadoop/wiki/Downloads 。 RHadoop分成三个部分

  • rhdfs
  • rmr
  • rhbase 下载文件:rmr2_3.3.1.tar.gz rhbase_1.2.1.tar.gz rhdfs_1.0.8.tar.gz


1. 安装依赖

依赖包括rjava,reshape2,Rcpp,iterators,itertools,digest,RJSONIO,functional

$export JAVA_HOME="YOUR JAVA HOME"
$R CMD javareconf
$R
>install.packages("rJava")
>install.packages("reshape2")
>install.packages("Rcpp")
>install.packages("iterators")
>install.packages("itertools")
>install.packages("digest")
>install.packages("RJSONIO")
>install.packages("functional")


2. 安装rhdfs

$export HADOOP_CMD = ~/hadoop-2.6.0-cdh5.4.1/bin/hadoop
$export HADOOP_STREAMING = ~/hadoop-2.6.0-cdh5.4.1/share/hadoop/mapreduce1/contrib/streaming/hadoop-streaming-2.6.0-mr1-cdh5.4.1.jar
$R CMD INSTALL rhdfs_1.0.8.tar.gz


3. 安装rmr

$R CMD INSTALL rmr2_3.3.1.tar.gz


4. rhbase不是必须(没安装成功)


5.测试

$R 
>library('rhdfs')
>library('rmr2')
>hdfs.init()
>small.ints=to.dfs(1:10)
>##定义1-10,作为map输入,每次生成1-10个0-1之间的数,保留最大和最小最为map的输出
>mapreduce(
>input=small.ints,
>map=function(k,v)
>{
>lapply(seq_along(v),function(r){
>##生成v个随机0-1的随机数,返回最大和最小值
>x<-runif(v[[r]])
>keyval(r,c(max(x),min(x)))
>})})



6.安装问题

安装依赖包reshape2会碰到其依赖plyr在R 3.0.2不支持的问题: package ‘plyr’ is not available (for R version 3.0.2) 需要手动下载安装包安装: 从launchpad.net/ubuntu/vivid/+package/r-cran-plyr下载r-cran-plyr_1.8.1.orig.tar.gz

$R
>setwd("/path/where/I/downloaded/the/compressedfile") 
>intall.packages("r-cran->plyr_1.8.1.orig.tar.gz",repos=NULL)