1. 程式人生 > >在叢集環境中安裝R(步驟清晰內容詳實,堪稱無腦教程!)

在叢集環境中安裝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

,我已經開發完畢的R包也是基於這個版本的R。

另外需要叢集已經安裝了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檔案來在命令列直接通過命令RRscript來呼叫R。

vim ~/.bashrc

在vim下修改.bashrc檔案中R_HOMER_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

如果有需要想了解這部分的內容,點贊博文後在評論區提出,如果很多人有此需求,我會考慮增加本部分。

最後附一張叢集節點當前佔用情況圖:

nodes' occupation

Reference

[1] http://pj.freefaculty.org/blog/?p=315

(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)


visitor tracker
訪客追蹤外掛