RStudio ServerをAWSに立ててみたので手順など残しておこうかと思いました。個人メモですので。。
前提
- OSはAmazon Linuxです。
- Instance Typeは m4.2xlargeです。(性能のことを後述します。)
R, RStudioのインストール
まずはRから、と言ってもこれだけですが。
$ sudo yum -y install R
次にRStusion Server
$ wget https://download2.rstudio.org/rstudio-server-rhel-1.0.143-x86_64.rpm
$ sudo yum -y install --nogpgcheck rstudio-server-rhel-1.0.143-x86_64.rpm
RStudio Server用にユーザーを作成。
OSにユーザーを作ります。 (ここでは rstudio というユーザー)
SSHはこの後も使います。
$ sudo useradd rstudio
$ sudo passwd rstudio
セキュリティの設定
- Inbound
Type | Protocol | Port Range | Source |
---|---|---|---|
Custom TCP Rule | TCP | 8787 | 0.0.0.0/0 |
ブラウザからアクセス
IPは Elastic IP、Public IPやDNSなどをみます。
http://xxx.xxx.xxx.xxx:8787/
パッケージのインストール
Rのパッケージの前にOSにこれくらい入れておきます。過不足あるかもしれませんが。
Linuxの場合Rのパッケージインストール前にOSのパッケージが入っていないためエラーになることがあります。特に以下の *-devel系。
R側でエラーするとメッセージをよく見るとOSの必要なパッケージが書かれていますのでご注意ください。
$ sudo yum -y groupinstall "Development Tools"
$ sudo yum -y install libcurl libcurl-devel
$ sudo yum -y install libpng-devel
$ sudo yum -y install openssl-devel
$ sudo yum -y install libxml2-devel
$ sudo yum -y install libssh2-devel
日本語フォントインストール
Plotなどに日本語を表示させるためにIPAフォントをインストールします。
まずはOSに。
# yum install ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts
もしくはフォントファイルをDLする。
(ファイル名なバージョンによるものらしいのでその時に応じて確認が必要)
# cd /usr/share/fonts
# wget http://dl.ipafont.ipa.go.jp/IPAexfont/ipaexg00301.zip
# unzip ipaexg00301.zip
# fc-cache -fv
R側で確認する。6,7番が該当。
> fonts()
[1] "DejaVu Sans" "DejaVu Sans Light" "DejaVu Sans Condensed"
[4] "DejaVu Serif" "DejaVu Serif Condensed" "IPAexGothic"
[7] "IPAMincho"
出てこなければ、Symfowareについての考察blogさまを参考に。
install.packages("extrafont")
library(extrafont)
font_import()
RStudioの再起動も必要かもしれません。
$ sudo rstudio-server stop
$ sudo rstudio-server start
Stanパッケージインストール
Stanを入れる前にパッケージの依存関係を確認しましょう。
そのために miniCRAN
をインストールします。
> install.packages("miniCRAN")
> library("miniCRAN")
Stanの依存関係を見る。いっぱいありますね。
これはパッケージのインストールに失敗した際に何を入れなければいけないかわかるのに便利です。
> pkgDep(pkg = "rstan")
[1] "rstan" "ggplot2" "StanHeaders" "inline" "gridExtra" "Rcpp"
[7] "RcppEigen" "BH" "digest" "gtable" "MASS" "plyr"
[13] "reshape2" "scales" "tibble" "lazyeval" "Matrix" "lattice"
[19] "stringr" "RColorBrewer" "dichromat" "munsell" "labeling" "rlang"
[25] "colorspace" "stringi" "magrittr" "matrixStats" "shiny" "bayesplot"
[31] "colourpicker" "DT" "dygraphs" "gtools" "markdown" "rsconnect"
[37] "shinyjs" "shinythemes" "threejs" "xtable" "xts" "dplyr"
[43] "htmltools" "htmlwidgets" "miniUI" "zoo" "mime" "PKI"
[49] "RCurl" "RJSONIO" "packrat" "yaml" "rstudioapi" "httpuv"
[55] "jsonlite" "R6" "sourcetools" "base64enc" "assertthat" "bindrcpp"
[61] "glue" "pkgconfig" "plogr" "bitops" "bindr" "evaluate"
[67] "highr" "RUnit" "KernSmooth" "loo" "shinystan" "rstantools"
[73] "knitr"
では rstan
をインストール
> install.packages("rstan")
> library("rstan")
分析してみる
Logics of Blueさまの”慣れ”の統計モデリング を動かしてみようかと思います。
ブログにもありますが2時間程かかります。
パフォーマンス
前提でインスタンスタイプを書きましたが、少し高額なものを使っています。なぜか?
最初はRがどれほどリソースを使うのか分からず、1core、500MB程度のVPSで構築しました。(非AWS)
ところが、 Rcpp
パッケージを入れるのにSWAPが発生しまくったりしたため、AWSのt2.largeに引っ越し。
そしてこのコードをお借りしたところ以下のような状況に。。
この絵が示しているのは6時前に実行し、1時間ほど100%張り付きで処理していましたが、7時を過ぎたところで30%程度の性能で稼働を続けていました。
その後4時間近く経過しましたが終わらなかったため中断しました。
多分ですが、このインスタンスには1時間分くらいのCPUクレジットが溜まっていたのでしょう。
それを使い切り、T2の通常?の性能に戻ったと推測しています。
バースト可能パフォーマンスインスタンス
もう一度動かしてみる
今度はm4.2xlargeで構築しました。もちろん手順は上述の通り。
性能はこちら。
14時前に動かして、1時間程で一段落?、その後16時ころには終わり、合計2時間程度です。
Rにはバーストしないタイプの方が向いているかもしれませんね。
少し疑問が。
処理中にTOPを取っています。
マルチCPUなので topコマンドの後、 1
を押します。
8coreなのですが、Cpu0,2,5の3つしかつかていませんでした。(処理中ずっとです。)
願わくば全部使ってほしいのですが。。
8core認識しているのですが。
> parallel::detectCores()
[1] 8
何かわかれば更新します。