在叢集環境中安裝R(步驟清晰內容詳實,堪稱無腦教程!)
在叢集環境下如何解決需要使用R語言的需求?
關鍵詞: PBS作業排程系統; HPC; R;
本文最初思路構思於2018/05,成文於2018/10/17
本文背景是博主的最新一篇論文(上位基因檢測機器學習演算法創新)臨近實驗尾聲,已經完成在模擬資料中的檢測,現在需要在真實資料上進行測試,奈何真實基因資料過於龐大,本地、單機的解決方案捉襟見肘,所以需要呼叫學院的叢集來進行資料處理和運算。
本文設定實驗環境有一個最大的痛點是無法重啟,原因1、是博主並非管理員只是使用者 2、叢集並非是博主一人在使用,所以使用本文方案,無需重啟叢集,且不需要擁有管理員許可權。
博主的其它
叢集操作環境
系統環境:CentOS/Redhat系–20節點叢集
登陸節點硬體配置:Intel® Xeon® CPU E5-2609 v2 @ 2.50GHz
Tips:據有經驗的老司機學長說裝最新版本的R有可能會出現什麼bug所以要裝舊一點版本的R
所以我使用了與本機開發環境相同的R版本:3.4.1
另外需要叢集已經安裝了gcc,最好是新一點的版本,不需要7.1.0
那麼新,但最少也要4.4.7
這樣的版本。
下面正式開始 Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved 安裝!
1. 資料夾建立
- 進入登陸節點的
~
路徑下,建立兩個資料夾:package、src - 進入src中
cd src
2. 下載R安裝包
src資料夾
中使用如下命令:
$> wget https://cran.r-project.org/src/base/R-3/R-3.4.1.tar.gz
$> tar -zxvf R-3.4.1.tar.gz
# -z:有gzip屬性的
# -x:解壓
# -v:顯示所有過程
# -f: 使用檔案名字,切記,這個引數是最後一個引數,後面只能接檔案名。Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
3. 接下來安裝各種R以及依賴
本文出現的命令建議一條一條複製貼上回車執行,不過高階玩家自己搞一個.sh
檔案執行也不是不行就是了。
3.1-a R安裝
src資料夾
中
cd R-3.4.1
mkdir builddir
cd builddir
../configure --prefix=$HOME/packages/R '--with-cairo' \
'--with-jpeglib' '--with-readline' '--with-tcltk' \
'--with-blas' '--with-lapack' '--enable-R-profiling' \
'--enable-R-shlib' \
'--enable-memory-profiling'
# Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
走到這步,zlib會報錯,不用擔心,Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved 一切盡在掌握中。
Tips:這麼直接安裝R一定不會成功,因為包括zlib,R的安裝還需要很多依賴。所以與其不停重新安裝R看它報錯哪個再去修依賴,不如全部提前安裝好再回頭去裝R這樣一次成功。所以下面的每部分,都應該在安裝R之前執行,不過我也會把如果不提前裝以下某個特定依賴而直接安裝R會產生的報錯資訊一併給出,作為後面來的朋友的troubleshoot
3.1-b 安裝zlib依賴
本部分是針對安裝R中出現類似如下報錯:
checking if zlib version >= 1.2.5... no
checking whether zlib support suffices... configure: error: zlib
library and headers are required
而提供解決辦法,更好的方案是直接按照下面的命令先把所有依賴裝好,最後再安裝R,一次成功。
zlib依賴安裝命令:
cd ~/src
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=$HOME/packages
make
make install
3.2 安裝bzip依賴
本部分是針對安裝R中出現類似如下報錯:
checking bzlib.h presence... yes
checking for bzlib.h... yes
checking if bzip2 version >= 1.0.6... no
checking whether bzip2 support suffices... configure:
error: bzip2 library and headers are required
而提供解決辦法,更好的方案是直接按照下面的命令先把所有依賴裝好,最後再安裝R,一次成功。
bzip依賴安裝命令:
cd ~/src
wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar xzvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
# 記住要加入一個 -fPIC 到 CFLAG 。(在 Makefile中CFLAG=-fPIC -Wall -Winline -O2 -g...)
# Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
make -f Makefile-libbz2_so
make clean
make
make -n install PREFIX=$HOME/packages
make install PREFIX=$HOME/packages
3.3 安裝liblzma依賴
本部分是針對安裝R中出現類似如下報錯:
checking whether bzip2 support suffices... no
checking for lzma_version_number in -llzma... no
configure: error: "liblzma library and headers are required"
而提供解決辦法,更好的方案是直接按照下面的命令先把所有依賴裝好,最後再安裝R,一次成功。
直接安裝liblzma
依賴我就沒見有人成功過,更好的解決辦法是安裝一個名為xz
的包,它包含了liblzma
,而且安裝成功率極高。
xz依賴安裝命令:
cd ~/src
wget http://tukaani.org/xz/xz-5.2.2.tar.gz
tar xzvf xz-5.2.2.tar.gz
cd xz-5.2.2
./configure --prefix=$HOME/packages
make -j3
make install
3.4 安裝pcre依賴
本部分是針對安裝R中出現類似如下報錯:
checking for pcre/pcre.h... no
checking if PCRE version >= 8.10, < 10.0 and has UTF-8 support... no checking whether PCRE support suffices... configure: error: pcre >= 8.10 library and headers are required
而提供解決辦法,更好的方案是直接按照下面的命令先把所有依賴裝好,最後再安裝R,一次成功。
pcre依賴安裝命令:
cd ~/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
tar xzvf pcre-8.38.tar.gz
cd pcre-8.38
./configure --enable-utf8 --prefix=$HOME/packages
make
make install
3.5 安裝libcurl依賴
本部分是針對安裝R中出現類似如下報錯:
checking libcurl version ... 7.19.7
checking curl/curl.h usability... yes
checking curl/curl.h presence... yes
checking for curl/curl.h... yes
checking if libcurl is version 7 and >= 7.28.0... no
configure: error: libcurl >= 7.28.0 library and headers are
required with support for https
而提供解決辦法,更好的方案是直接按照下面的命令先把所有依賴裝好,最後再安裝R,一次成功。
libcurl依賴安裝命令:
cd ~/src
# Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
wget --no-check-certificate https://curl.haxx.se/download/curl-7.47.1.tar.gz
tar xzvf curl-7.47.1.tar.gz
cd curl-7.47.1
./configure --prefix=$HOME/packages
make -j3
make install
3.6 所有依賴都安裝完畢,重新安裝R
cd ~/src
cd R-3.4.1/
rm -rf builddir # Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
mkdir builddir
cd builddir/
../configure --prefix=$HOME/packages/R --enable-R-shlib=yes --with-tcltk
make
make install
此時按照博主的情況,R直接成功安裝。
4. 呼叫R來跑你的R程式碼
因為我只是叢集的使用者,沒有管理員許可權,所以我能做的只有通過修改.bashrc
檔案來在命令列直接通過命令R
,Rscript
來呼叫R。
vim ~/.bashrc
在vim下修改.bashrc
檔案中R_HOME
和R_LIB
(加入這幾個變數)
# .bashrc file under vim, add these lines
export R_HOME=$HOME/packages/R
export R_LIBS=$HOME/packages/R/lib64/library # Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
export PATH=$PATH:$R_HOME/bin
source
命令使.bashrc
檔案的修改生效:
source ~/.bashrc
5. PBS指令碼的編寫用來在叢集中執行R程式
與文章主題相關度不高故暫不新增。Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
如果有需要想了解這部分的內容,點贊博文後在評論區提出,如果很多人有此需求,我會考慮增加本部分。
最後附一張叢集節點當前佔用情況圖:
Reference
(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)
visitor tracker