linux下R及Rstudio及Rhadoop安裝

1.R語言環境安裝及部署
 R語言包下載:wget https://cran.r-project.org/src/base/R-3/R-3.4.4.tar.gz
 解壓: tar -zxvf R-3.3.2.tar.gz 
 加載依賴環境:
	yum install -y gcc 
	yum install -y glibc-headers 
	yum install -y libreadline6-dev gfortran  
	yum install -y readline-devel 
	yum install -y wget libXt-devel 
	yum install -y fonts-chinese tcl tcl-devel tclx tk tk-devel 
	yum install -y mesa-libGLU mesa-libGLU-devel 
	yum install -y install bzip2-devel  
	yum install -y install xz-devel.x86_64  
	yum install -y install pcre-devel 
	yum install -y install libcurl 
	yum install -y install libcurl-devel 
	yum install -y  texinfo.x86_64 
	yum install -y texlive-pdftex-doc.noarch 
	yum install -y texlive
	yum install gcc-c++
	yum install gcc-gfortran
	建立編譯後的文件夾Rmkdir /usr/local/R(路徑根據自己的配置愛好選擇)
	通過configure進行安裝:
   cd /usr/local/R-3.4.4 ./configure --enable-R-shlib=yes --with-tcltk --prefix=/usr/local/R
  make & make install
  配置環境變量:
  vim /etc/profile
   #add R env
    R_HOME=/usr/local/R 
    PATH=$PATH:$R_HOME/bin
    export R_HOME=/usr/local/R
    配置生效: 
    source /etc/profile
   輸入R進行命令行啓動。
2.Rstudio安裝及部署
 下載:wget https://download2.rstudio.org/rstudio-server-rhel-0.99.893-x86_64.rpm(注意linux版本,這裏以centos7.4爲例)
 安裝:sudo yum install --nogpgcheck rstudio-server-rhel-0.99.893-x86_64.rpm
 配置: 安裝之後配置文件裏沒有東西,一般會生成/etc/rserver.conf,但內容爲空如果需要修改端口地址(默認8787)等的話,那麼就自己加上
       可以做的限制還是比較多的 
       rstudio-server是通過服務器的用戶名和密碼登陸的
       這裏寫一些配置
       www-port=80  配置默認端口
       www-port=8787
			 rsession-which-r=/opt/R/lib64/R/bin/R
       www-address=0.0.0.0 可訪問的ip地址,默認是全開放
       rsession-memory-limit-mb=4000     限制使用的最大內存
       rsession-stack-limit-mb=10        限制最大的棧大小
       rsession-process-limit=100      限制最多進程數
       limit-file-upload-size-mb=100      設置最大的上傳文件大小
 登錄問題:
 root用戶無法登陸,新建一個用戶進行登陸 
 useradd -d /home/R -m R,創建用戶的同時指定主目錄 
 passwd R,設置密碼******
 IP:8787
 3.Rhadoop安裝及部署(hadoop是基於cdh版本 Rhadoop中的包的版本選擇最新的,git上最後更新時間爲2015年)
 環境:基於hadoopR語言
 1)安裝rJava:
        在聯網的情況下,可以進入R命令,安裝rJava包:
				> install.packages("rJava")
				如果待安裝機器不能上網,可以將源文件下載到本地,然後通過shell命令R CMD INSTALL package_name’來安裝:
        R CMD INSTALL "rJava_0.9-5.tar.gz"
 2)安裝RHadoop環境(rhdfsrmr2rhbaseRHive
         1、安裝rhdfs(僅安裝在namenode)R CMD INSTALL "rhdfs_1.0.5.tar.gz"
         /etc/profile中設置環境變量HADOOP_HOMEHADOOP_CON_DIRHADOOP_CMD
         export HADOOP_HOME=/opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.0.p0.18/lib/hadoop
         export HADOOP_CONF_DIR=/etc/hadoop/conf
         export HADOOP_CMD=/usr/bin/hadoop
         安裝後調用rhdfs,測試安裝:
         > library("rhdfs")
				 Loading required package: rJava
			 	 HADOOP_CMD=/usr/bin/hadoop
				 Be sure to run hdfs.init()
				 當按要求輸入hdfs.init()後,如果出現:
 				 > hdfs.init()
         WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform using builtin-java classes where applicable
         需要在/etc/profile中設置環境變量JAVA_LIBRARY_PATH:
         export JAVA_LIBRARY_PATH=/opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.0.p0.18/lib/hadoop/lib/native
         如果設置後問題依然沒有解決,需要將native下面的libhadoop.so.0  libhadoop.so.1.0.0拷貝到 /usr/lib64下面
         2、安裝rmr2包(各個主機上都要安裝):
         安裝rmr2包之前,需要安裝其依賴的7個包,他們分別是:
				 [root@master]# ls
				 digest_0.6.3.tar.gz    plyr_1.8.tar.gz     reshape2_1.2.2.tar.gz  stringr_0.6.2.tar.gz
				 functional_0.4.tar.gz  Rcpp_0.10.3.tar.gz  RJSONIO_1.0-3.tar.gz
				 [root@master RHadoop-deps]#  R CMD INSTALL "digest_0.6.3.tar.gz"
					[root@master ]#  R CMD INSTALL "plyr_1.8.tar.gz"
					[root@master ]#  R CMD INSTALL "reshape2_1.2.2.tar.gz"
					[root@master ]#  R CMD INSTALL "stringr_0.6.2.tar.gz"
					[root@master ]#  R CMD INSTALL "functional_0.4.tar.gz"
					[root@master ]#  R CMD INSTALL "Rcpp_0.10.3.tar.gz"
					[root@master ]#  R CMD INSTALL "RJSONIO_1.0-3.tar.gz"
					安裝:R CMD INSTALL "rmr2_2.2.0.tar.gz"
					需要在/etc/profile中設置環境變量HADOOP_STREAMING
					export HADOOP_STREAMING=/opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.0.p0.18/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.0.0-mr1-cdh5.7.0.jar
					3、安裝rhbase(僅安裝在namenode)
					rhbase-1.1.1使用的是Thrift 0.8.0版本,下載網址爲 http://archive.apache.org/dist/thrift/0.8.0/thrift-0.8.0.tar.gz
					a、在centos系統下輸入shell命令
          sudo yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel lib-devel python-devel ruby-devel
          安裝一些Thrift相關的工具或庫。有的時候,還需要安裝openssl-devel(在Ubuntu下爲libssl-dev),不然會提示libcrypto.so找不到
          yum install openssl-devel
          b、解壓安裝Thrift
          [root@master admin]# cd thrift-0.8.0
          [root@master thrift-0.8.0]# ./configure --with-boost=/usr/include/boost JAVAC=/usr/java/jdk1.6.0_31/bin/javac
				  [root@master thrift-0.8.0]# make
					[root@master thrift-0.8.0]# make install 
					/etc/profile中設置環境變量PKG_CONFIG_PATH
          export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/
          驗證設置的正確性,在shell下輸入pkg-config --cflags thrift如結果如下所示:
          [root@master thrift-0.8.0]# pkg-config --cflags thrift
          -I/usr/local/include/thrift 
          則說明配置成功。
          c、複製library文件到/usr/lib下面(x64位的下面還要複製到/usr/lib64下面,或者僅僅複製到/usr/lib64下面)
          cp /usr/local/lib/libthrift.so.0 /usr/lib  
          有時候僅複製這個還是有問題的,還需要複製libthrift-0.8.0.so 
          cp /usr/local/lib/libthrift-0.8.0.so /usr/lib 
          最好把libthrift相關的都複製進去,如 libthrift.so.0libthrift.so.0.0.0等。(x64位的下面還要複製到/usr/lib64下面,或者僅僅複製到/usr/lib64下面)
          d、安裝rhbase
					R CMD INSTALL "rhbase_1.1.1.tar.gz"
					如果安裝的過程中,如果發現libRblas.solibRlapack.solibR.so等找不到,需要從$R_HOME/lib將這些library拷貝到/usr/lib64目錄下:
					[root@slave1 ~]# cp /usr/lib64/R/lib/libRblas.so /usr/lib64/
					[root@slave1 ~]# cp /usr/lib64/R/lib/libRlapack.so /usr/lib64/
					[root@slave1 ~]# cp /usr/lib64/R/lib/libR.so /usr/lib64/ 
					4、安裝RHive(各個主機上都要安裝):
					RHive是一種通過Hive高性能查詢來擴展R計算能力的包。它可以在R環境中非常容易的調用HQL 也允許在Hive中使用R的對象和函數。理論上數據處理量可以無限擴展的Hive平臺,搭配上數據挖掘的利器R環境, 堪稱是一個完美的大數據分析挖掘的工作環境。
					1Rserve包的安裝:
					RHive依賴於Rserve,因此在安裝R的要按照本文R的安裝方式,即附帶後面兩個選項(--disable-nls --enable-R-shlib
					enable-R-shlib是將R作爲動態鏈接庫進行安裝,這樣像Rserve依賴於R動態庫的包就可以安裝了,但缺點會有20%左右的性能下降。
					Rserve使用的的是在線安裝方式:
					install.packages("Rserve")
					$R_HOME的目錄下創建Rserv.conf文件,寫入“remote enable''保存並退出。通過scp -r 命令將Master節點上安裝好的Rserve包,以及Rserv.conf文件拷貝到所有slave節點下。當然在節點不多的情況下也可以分別安裝Rserve包、創建Rserv.conf
					scp -r /usr/lib64/R/library/Rserve slave1:/usr/lib64/R/library/
					scp -r /usr/lib64/R/Rserv.conf slave3:/usr/lib64/R/
					在所有節點啓動Rserve
					Rserve --RS-conf /usr/lib64/R/Rserv.conf
					master節點上telnet(如果未安裝,通過shell命令yum install telnet安裝)所有slave節點:
					telnet slave1 6311
					顯示Rsrv013QAP1則表示連接成功。
					2RHive包的安裝:
					安裝RHive_0.0-7.tar.gz,並在master和所有slave節點上創建rhivedata目錄,並賦予讀寫權限(最好將$R_HOME賦予777權限)
					[root@master admin]# R CMD INSTALL RHive_0.0-7.tar.gz
					[root@master admin]# cd $R_HOME
					[root@master R]# mkdir -p rhive/data
					[root@master R]# chmod 777 -R rhive/data
					masterslave中的/etc/profile中配置環境變量RHIVE_DATA=/usr/lib64/R/rhive/data
					export RHIVE_DATA=/usr/lib64/R/rhive/data
					通過scp命令將master節點上安裝的RHive包拷貝到所有的slave節點下:
					scp -r /usr/lib64/R/library/RHive slave1:/usr/lib64/R/library/
					查看hdfs文件下的jar是否有讀寫權限
					hadoop fs -ls /rhive/lib
					安裝rhive後,hdfs的根目錄並沒有rhive及其子目錄lib,這就需要自己建立,並將/usr/lib64/R/library/RHive/java下的rhive_udf.jar複製到該目錄
					hadoop fs -put /usr/lib64/R/library/RHive/java/rhive_udf.jar /rhive/lib
					否則在測試rhive.connect()的時候會報沒有/rhive/lib/rhive_udf.jar目錄或文件的錯誤。
					最後,在hive客戶端啓(master、各slave均可)動hive遠程服務(rhive是通過thrift連接hiveserver的,需要要啓動後臺thrift服務):
					nohup hive --service hiveserver  &
					3RHive的使用及測試:
					1RHive API
					HIVE中獲得表信息的函數,比如
					rhive.list.tables:獲得表名列表,支持pattern參數(正則表達式),類似於HIVEshow table
					rhive.desc.table:表的描述,HIVE中的desc table
					rhive.exist.table
					3RHive簡單應用
					載入RHive包,令連接Hive,獲取數據:
					> library(RHive)
					> rhive.connect(host = 'host_ip')
					> d <- rhive.query('select * from emp limit 1000')
					> class(d)
					> m <- rhive.block.sample(data_sku, percent = 0.0001, seed = 0)
					> rhive.close()
					一般在系統中已經配置了host,因此可以直接rhive.connect()進行連接,記得最後要有rhive.close()操作。 通過HIVE查詢語句,將HIVE中的目標數據加載至R環境下,返回的 d 是一個dataframe
					實際上,rhive.query的實際用途有很多,一般HIVE操作都可以使用,比如變更scheme等操作:
					> rhive.query('use scheme1')
					> rhive.query('show tables')
					> rhive.query('drop table emp')
					但需要注意的是,數據量較大的情況需要使用rhive.big.query,並設置memlimit參數。
					R中的對象通過構建表的方式存儲到HIVE中需要使用
					> rhive.write.table(dat, tablename = 'usertable', sep = ',')
					而後使用joinHIVE語句獲得相關建模數據。其實寫到這兒,有需求的看官就應該明白了,這幾項 RHive 的功能就足夠 折騰些有趣的事情了。
					1:其他關於在HIVE中調用R函數,暫時還沒有應用,未來更新。
					2rhive.block.sample這個函數需要在HIVE 0.8版本以上才能執行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章