Tableau&R連携(2) – AWS上に構築したRserveとTableau Serverでコンテンツを共有

2015.02.16

下記当時投稿エントリではローカルデスクトップ環境(Mac OS X)上でTableau DesktopとR環境を連携する手順についてご紹介しました。引き続きの同時投稿2本目となる当エントリではTableau Desktopで作成したR分析を伴うビュー/ダッシュボードをTableau Server上でも扱える様にするにはどうすれば良いのか?という手順についてご紹介して行きたいと思います。

目次

AWS環境上にRServe構築 - Install R on CentOS

Tableau ServerからR環境を利用出来るようにする為には、別途サーバ環境を用意してTabeau Desktop/Tableau Serverからそのサーバ環境にアクセス出来る様にする必要があります。なので、ここではCentOS上にRServeというサーバ環境を構築し、その環境とTableau Serverを連携させるという手順について進めて行きたいと思います。

Rserve インストールについては、基本(というか内容そのまんま)以下の情報を参考にしました。

使ったEC2はこの辺りを。CentOS環境に導入している手順でしたので、バージョンの近い、一番素っぽいものを選んでみました。

install-r-on-centos

スペックやストレージサイズについては適当に見繕いました(笑) 正直どの程度のスペックのものが必要かという点については個人的には把握してません。詳細については上記サイトでも言及している下記ドキュメントをご参照の上、設定やチューニング等を行ってください。

EC2インスタンスに紐付けるセキュリティグループには、RServeが使う通信ポート6311と、SSH(22)を利用可能な状態にしておきます。(接続元IPの制御は適宜読み替えてください。)

install-r-on-centos-02

EC2インスタンスが起動したらCentOSにログイン。

ssh -i xxxxxxxxxx-key.pem ec2-user@xx.xxx.xxx.xxx

Rパッケージのインストール実施。

$ sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo yum -y install R
$ sudo R --version
R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
http://www.gnu.org/licenses/.

$

インストール完了後、Rを起動します。

$ sudo R

R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)

R は、自由なソフトウェアであり、「完全に無保証」です。 
 一定の条件に従えば、自由にこれを再配布することができます。 
 配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。 

R は多くの貢献者による共同プロジェクトです。 
 詳しくは 'contributors()' と入力してください。 
 また、R や R のパッケージを出版物で引用する際の形式については 
 'citation()' と入力してください。 

 'demo()' と入力すればデモをみることができます。 
 'help()' とすればオンラインヘルプが出ます。 
 'help.start()' で HTML ブラウザによるヘルプがみられます。 
 'q()' と入力すれば R を終了します。

Rserveのインストール。作業に必要なミラーサイトの選択を求められるので任意の場所にあたる数値を入力します。ここでは『52』(Japan(Tokyo))としました。

> install.packages("Rserve")
Installing package into ‘/usr/lib64/R/library’
(as ‘lib’ is unspecified)
 --- このセッションで使うために、CRAN のミラーサイトを選んでください --- 
CRAN mirror 

  1: 0-Cloud                        2: Algeria                    
  3: Argentina (La Plata)           4: Australia (Canberra)       
  5: Australia (Melbourne)          6: Austria                    
  7: Belgium                        8: Brazil (BA)                
 :
(中略)
 :
 49: Italy (Milano)                50: Italy (Padua)              
 51: Italy (Palermo)               52: Japan (Tokyo)              
 53: Japan (Tsukuba)               54: Korea (Seoul 1)            
 :
(中略)
 :
 97: USA (TN)                      98: USA (TX 1)                 
 99: USA (WA 1)                   100: USA (WA 2)                 
101: Venezuela                    102: Vietnam                    

Selection: 52

 URL 'http://cran.ism.ac.jp/src/contrib/Rserve_1.7-3.tar.gz' を試しています 
Content type 'application/x-gzip' length 407390 bytes (397 Kb)
 開かれた URL 
==================================================
downloaded 397 Kb

* installing *source* package ‘Rserve’ ...
**  パッケージ ‘Rserve’ の解凍および MD5 サムの検証に成功しました 
:
(中略)
:
Making 'packages.html' ...  完了 

 ダウンロードされたパッケージは、以下にあります 
 	‘/tmp/RtmpkW78P6/downloaded_packages’ 
 '.Library' 中のパッケージの HTML 索引を更新します 
Making 'packages.html' ...  完了

installed.packages()で導入済パッケージの確認が行えます。

> installed.packages()
:
rpart      "rpart"      "/usr/lib64/R/library" "4.1-8"   "recommended"
Rserve     "Rserve"     "/usr/lib64/R/library" "1.7-3"   NA           
spatial    "spatial"    "/usr/lib64/R/library" "7.3-8"   "recommended"
:

また、前編に倣い、こちらでも追加パッケージとしてplyrをこのタイミングでインストールしておいてください。

> install.packages("plyr")

導入が完了した後は各種設定作業に。こちらも先述の参考エントリの内容そのままです。設定した内容のみ抜粋して並べて行きます。

ユーザーの作成、グループへの追加:

$ sudo groupadd rserver
$ sudo useradd rserver -g rserver

Rserv設定ファイルの作成:

$ sudo vi /etc/Rserv.conf
workdir /tmp
remote enable
fileio enable
auth required
plaintext enable
pwdfile /home/rserver/pwdfile

Rserv実行シェルの作成:

$ sudo vi /usr/lib64/R/bin/Rserv.sh
#!/bin/bash
/usr/lib64/R/bin/R CMD Rserve

Rserve実行ファイルに権限追加:

$ sudo chmod +x /usr/lib64/R/bin/Rserv.sh

サービス起動シェルの作成:

$ sudo vi /etc/init.d/rserved
#!/bin/sh
#
# chkconfig: 2345 20 80
# description: rserved startup script
#
RSERVE=/usr/lib64/R/bin/Rserv.sh
. /etc/rc.d/init.d/functions
test -f /etc/Rserv.conf
export R_HOME=/usr/lib64/R
RETVAL=0
case "$1" in
 start)
   echo -n "Starting Rserve: "
   [ -f $RSERVE ] || exit 1
   /bin/su rserver $RSERVE
   RETVAL=$?
   echo 
   [ $RETVAL -eq 0 ] && touch /var/lock/subsys/rserved
     ;;
 stop)
   echo -n "Shutting down RServe: "
   pkill Rserve
   RETVAL=$?
   echo
   [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/rserved
     ;;
 restart|reload)
   $0 stop
   $0 start
   RETVAL=$?
     ;;
 status)
   status Rserve
   RETVAL=$?
     ;;
 *)
   echo "Usage: $0 {start|stop|restart|status}"
   exit 1
esac
exit $RETVAL

サービス起動シェルの実行権限付与・自動実行組み込み:

$ sudo chmod +x /etc/init.d/rserved
$ sudo chkconfig --add rserved

パスワード認証ファイルの作成(こちらのファイル内容は後にTableauからのアクセスに用います。):

$ sudo vi /home/rserver/pwdfile
tableau tableaupass

上記ファイルの所有者変更:

$ sudo chown rserver:rserver /home/rserver/pwdfile

設定作業がひと通り完了したら、起動実施。以下の様にログが表示されていれば成功です。

$ sudo service rserved start
Starting Rserve: 
R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

Rserv started in daemon mode.

Tableau Desktopからの接続確認

こちらも前編同様、R連携機能を用いたTableauパッケージドワークブックを使って動作確認してみたいと思います。

接続確認には以下サイトで公開されている、R連携機能を使ったパッケージドワークブックを使います。ちなみにこちらの件については、Windows環境での動作確認としています。(前編同様Mac OS Xで確認してみようと思ったのですが上手く行かない点があり断念しました。Mac編については機会があれば後日また着手してみたいと思います)

上記ワークブックをダウンロードし、開く前にTableauアプリを起動させ、ヘルプからR接続設定に進み、以下画面にて別途立ち上げたRserveの接続情報を設定。接続確認及び接続を行ってください。ユーザー名/パスワードは設定ファイルとして作成した内容(tableau/tableaupass)を入れる事になります。

install-r-on-centos-12

ワークブックを開きます。こんな感じでアラートが出ますが先に進めます。

install-r-on-centos-11

Tableau Serverへの共有確認/Tableau ServerのRserve関連設定

繋がりました!引き続きTableau Serverへの共有(Publish)作業へと進みます。サーバーメニューからワークブックのパブリッシュを選択。

install-r-on-centos-13

接続情報を設定し、

install-r-on-centos-14

パブリッシュを実行。...となったところで警告が出ました。何か設定が足らないのか、怒られています。ひとまずここはそのままPublishしてみましょう。

install-r-on-centos-15

パブリッシュ自体は出来た様ですが、表示の時点で何かエラーが出ています。

install-r-on-centos-16

上記のエラーですが、下記ブログエントリの内容に拠るとどうやらTableau Server側の設定に足りない部分があったようです。Rserveのサーバ接続設定に指定すべき値が指定されていなかった事により発生していたエラーな模様。

Tableau Serverにログインし、必要な設定作業を行います。設定を確実なものにするために、一旦サーバを停止後設定コマンドを入力しています。設定完了後はサーバを起動してください。肝となるのは赤枠線で囲ったtabadmin settabadmin configureの両コマンドです。

install-r-on-centos-17

(コマンド部分のみ抜粋)
tabadmin status
tabadmin stop
tabadmin set vizqlserver.rserve.host xx.xxx.xxx.xxx
tabadmin set vizqlserver.rserve.username tableau
tabadmin set vizqlserver.rserve.password tableaupass
tabadmin configure
tabadmin start

tabadminコマンドの設定内容については、以下公式ヘルプをご参照ください。

Tableau Server設定及び再起動後、改めてPublishを試してみます。アラートは相変わらず出てしまってましたが、今度は問題無くpublish後のプレビュー表示も出来ています!

install-r-on-centos-18

Tableau Serverの該当コンテンツにブラウザ経由でアクセスしてみます。こちらも問題無さそうです。ローカル環境からRserveにアクセスし、R連携機能を使ったコンテンツをTableau ServerにPublishし、共有する事が出来ました。

install-r-on-centos-19

install-r-on-centos-20

まとめ

RserveとTableau Desktop、及びTableau Serverの連携方法に関するご紹介でした。今後発表されるTableau 9.0に於いても、分析に関する機能はより充実したものになっているという情報を聞いていますので、Tableau上での分析業務もよりスムーズに、より深いものが出来る様になっている事を期待したいものです。また、AlteryxとTableauを用いる事でRを用いた様々な分析をより広範に・深入りする形で実践する事も可能です。こちらについても是非導入・連携を検討してみてはいかがでしょうか。こちらからは以上です。