Help us understand the problem. What is going on with this article?

AWSにRStudio Serverを構築してみた

More than 1 year has passed since last update.

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さまの”慣れ”の統計モデリング を動かしてみようかと思います。

Rのコードはこちら

ブログにもありますが2時間程かかります。

パフォーマンス

前提でインスタンスタイプを書きましたが、少し高額なものを使っています。なぜか?
最初はRがどれほどリソースを使うのか分からず、1core、500MB程度のVPSで構築しました。(非AWS)
ところが、 Rcpp パッケージを入れるのにSWAPが発生しまくったりしたため、AWSのt2.largeに引っ越し。
そしてこのコードをお借りしたところ以下のような状況に。。

aws_cpu_1.png

この絵が示しているのは6時前に実行し、1時間ほど100%張り付きで処理していましたが、7時を過ぎたところで30%程度の性能で稼働を続けていました。
その後4時間近く経過しましたが終わらなかったため中断しました。
多分ですが、このインスタンスには1時間分くらいのCPUクレジットが溜まっていたのでしょう。
それを使い切り、T2の通常?の性能に戻ったと推測しています。
バースト可能パフォーマンスインスタンス

もう一度動かしてみる

今度はm4.2xlargeで構築しました。もちろん手順は上述の通り。
性能はこちら。
aws_cpu_3.png
14時前に動かして、1時間程で一段落?、その後16時ころには終わり、合計2時間程度です。

Rにはバーストしないタイプの方が向いているかもしれませんね。

少し疑問が。

処理中にTOPを取っています。
マルチCPUなので topコマンドの後、 1 を押します。
8coreなのですが、Cpu0,2,5の3つしかつかていませんでした。(処理中ずっとです。)
願わくば全部使ってほしいのですが。。

aws_rstan_top_cmd.png

8core認識しているのですが。

> parallel::detectCores()
[1] 8

何かわかれば更新します。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away