用Ansible安裝部署R跟R package

最近進行的SparkR分析平台建立作業,Hadoop Cluster重建了好多次
現在都用Ambari做Hadoop環境建立,所以還算方便
但是麻煩的是SparkR所需要的環境建立,參考下圖

運行SparkR的時候,會要求我Yarn的運算cluster每台機器都必須事先安裝好R才行
而且當想使用某個R Package的時候群集每檯機器也都必須事先裝好
舉例來說,今天我想再sparkR上使用forecast這個套件,那就必須再yarn cluster上每台機器上都去安裝forecast
做一次還好,這動作多來幾次甚至是Cluster重建就變得很麻煩了
後來想到了可以用Ansible來做這件事

自己寫了一個ansible playbook來做這件事
https://github.com/del680202/install-R-playbook
這個playbook會去安裝R跟需要得R package到cluster上面
如果已經安裝過就會自動跳過

再寫這個playbook的時候遇到比較棘手的是如何用Command Line去安裝R Package
平常從RStudio安裝裝得很習慣了,頂多就是用R CMD INSTALL去安裝外部package
google一下找到可以用Rscript去做這件事情

直接安裝某個R package

sudo Rscript -e 'install.packages("forecast", repos="https://cran.rstudio.com")'

透過devtools去安裝某個R package

sudo Rscript -e 'library(devtools);devtools::install_github("IRkernel/repr")'

找到command line安裝的方法就可以透過Ansible去部署R環境啦
安裝步驟

  1. 安裝Ansible
  2. 下載playbook : https://github.com/del680202/install-R-playbook
  3. vim files/install_R_lib.sh # 設定想要安裝的R package
  4. vim vars/host.yaml #設定cluster機器資訊
  5. 執行playbook安裝
comments powered by Disqus