在Hadoop集群上運行R程序--安裝RHadoop

jopen 11年前發布 | 15K 次閱讀 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)        

首先安裝rhdfs。該包依賴于包
rJava。所以還需要先下載rJava的源代碼并安裝。

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)        
安裝rmr。該包依賴于包RJSONIO、
itertools
、digest,而包itertools
又依賴于iterators。

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)        

安裝rhbase(參見https://github.com/RevolutionAnalytics/RHadoop/wiki/rhbase)。在安裝rhbase之前,還需要安裝Thrift庫,建議安裝Thrift 0.6.1版本,下載網址為http://thrift.apache.org/。詳細的安裝步驟如下:                         
i.             
在centos系統下輸入shell命令sudo yum install automake libtool
flex bison pkgconfig gcc-c++ boost-devel libevent-devel lib-devel
python-devel ruby-devel,安裝一些Thrift相關的工具或庫。由于網絡連接的問題,在嘗試的時候并不能完全安裝,個人覺得也沒有必要完全安裝,只需保證g++ 3.3.5以上版本、boost 1.33.1以上版本即可。 

           
ii.             
解壓并安裝Thrift。

       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的設置是不是必須的)。                    
iii.             

設置環境變量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則表示成功。                      
iv.             

復制library文件。

cp
/usr/local/lib/libthrift.so.0 /usr/lib                      
v.             

安裝rhbase。

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))))

五、更多參考網址:

https://github.com/RevolutionAnalytics/RHadoop/wiki/Tutorial 
https://github.com/RevolutionAnalytics/RHadoop/wiki/Writing-composable-mapreduce-jobs
 
https://github.com/RevolutionAnalytics/RHadoop/wiki/Efficient-rmr-techniques

來自:http://blog.sina.com.cn/s/blog_6caea8bf0100zbe5.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!