레이블이 Linunx on POWER인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Linunx on POWER인 게시물을 표시합니다. 모든 게시물 표시

2017년 2월 10일 금요일

Linux on POWER(ppc64le) 서버에 Spark 및 SparkR 설치하기

앞선 포스팅과 마찬가지로, Spark를 Ubuntu 16.04 LTS ppc64le 환경에서 build한 뒤, 동일한 OS의 다른 POWER 서버로 그 binary들을 가져가서 제대로 구동되는지 보겠습니다.

다음과 같이 필요한 기본 OS fileset을 설치합니다. 

u0017496@sys-85548:~/spark$ sudo apt install openjdk-8-jdk cmake automake autoconf texlive-latex-base maven

그리고, 먼저 R을 설치해야 합니다.  그에 대해서는 앞의 포스팅을 참조하십시요.  R 설치가 끝나면, 다음과 같이 SparkR build를 위한 R package들을 download 받습니다.  (앞선 포스팅에 올려진 R.tgz 속에는 이 R package들이 이미 포함되어 있으니, 그냥 그걸 쓰셔도 됩니다.)

u0017496@sys-85548:/usr/local/lib/R$ sudo R

> install.packages("knitr")
Installing package into '/usr/local/lib/R/site-library'

> install.packages("e1071")
Installing package into '/usr/local/lib/R/site-library'

> install.packages('survival')
Installing package into '/usr/local/lib/R/site-library'

> install.packages('rmarkdown')
Installing package into '/usr/local/lib/R/site-library'

> install.packages('testthat')
Installing package into '/usr/local/lib/R/site-library'

> install.packages("rJava")
Installing package into '/usr/local/lib/R/site-library'


u0017496@sys-85548:/usr/local/lib/R$ ls -l site-library/
total 120
drwxrwxr-x  7 root staff 4096 Feb  6 23:54 mime
drwxrwxr-x  8 root staff 4096 Feb  6 23:56 stringi
drwxrwxr-x  7 root staff 4096 Feb  6 23:56 magrittr
drwxrwxr-x  9 root staff 4096 Feb  6 23:56 digest
drwxrwxr-x  7 root staff 4096 Feb  6 23:56 highr
drwxrwxr-x  8 root staff 4096 Feb  6 23:56 yaml
drwxrwxr-x 11 root staff 4096 Feb  6 23:56 markdown
drwxrwxr-x  9 root staff 4096 Feb  6 23:56 stringr
drwxrwxr-x  6 root staff 4096 Feb  6 23:56 evaluate
drwxrwxr-x 14 root staff 4096 Feb  6 23:57 knitr
drwxrwxr-x 10 root staff 4096 Feb  7 02:12 MASS
drwxrwxr-x  8 root staff 4096 Feb  7 02:12 class
drwxrwxr-x  8 root staff 4096 Feb  7 02:12 e1071
drwxrwxr-x 10 root staff 4096 Feb  7 04:33 lattice
drwxrwxr-x 12 root staff 4096 Feb  7 04:34 Matrix
drwxrwxr-x  9 root staff 4096 Feb  7 04:35 survival
drwxrwxr-x 16 root staff 4096 Feb  7 04:37 Rcpp
drwxrwxr-x  7 root staff 4096 Feb  7 04:37 bitops
drwxrwxr-x  6 root staff 4096 Feb  7 04:37 backports
drwxrwxr-x  7 root staff 4096 Feb  7 04:37 base64enc
drwxrwxr-x  8 root staff 4096 Feb  7 04:37 jsonlite
drwxrwxr-x  7 root staff 4096 Feb  7 04:37 htmltools
drwxrwxr-x  7 root staff 4096 Feb  7 04:37 caTools
drwxrwxr-x  7 root staff 4096 Feb  7 04:37 rprojroot
drwxrwxr-x  8 root staff 4096 Feb  7 04:37 rmarkdown
drwxrwxr-x  6 root staff 4096 Feb  7 07:03 crayon
drwxrwxr-x  6 root staff 4096 Feb  7 07:03 praise
drwxrwxr-x  7 root staff 4096 Feb  7 07:03 R6
drwxrwxr-x  9 root staff 4096 Feb  7 07:04 testthat
drwxrwxr-x 10 root staff 4096 Feb  7 21:19 rJava



그 다음에 spark build를 시작합니다.  

u0017496@sys-85548:~$ git clone https://github.com/apache/spark.git

u0017496@sys-85548:~$ cd spark

먼저 다음과 같이 JAVA_HOME을 선언해줍니다.

u0017496@sys-85548:~/spark$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-ppc64el


Distribution을 위한 package를 만드려면 dev 밑에 있는 make-distribution.sh을 사용합니다.  먼저, MAKE_R이 default로는 false이므로, Spark에서 R과 함께 사용하려고 한다면 --r option을 쓰셔야 합니다.  그리고 미리 다음과 같이 tar directory 이름을 간단한 것으로 바꿔 둡니다.  


u0017496@sys-85548:~/spark$ vi dev/make-distribution.sh
...
  TARDIR_NAME=spark-bin
#  TARDIR_NAME=spark-$VERSION-bin-$NAME
...
  tar czf "spark-$VERSION-bin.tgz" -C "$SPARK_HOME" "$TARDIR_NAME"
#  tar czf "spark-$VERSION-bin-$NAME.tgz" -C "$SPARK_HOME" "$TARDIR_NAME"

...

그리고, hive와의 연동에 사용되는 zinc 서버의 실행 파일인 ng가 다음과 같이 x86용 binary로 들어있기 때문에 이대로 수행하면 error가 발생합니다.

root@sys-85548:/home/u0017496/spark# file ./build/zinc-0.3.11/bin/ng/linux32/ng
./build/zinc-0.3.11/bin/ng/linux64/ng: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=8946a7b64cafd2b99faac05b088b8943aa0ec2e6, stripped

이를 ppc64le용으로 새로 build해야 합니다.  그런데 그를 위해서는 또 sbt부터 설치해야 합니다. 이는 다음과 같이 하시면 됩니다.

u0017496@sys-85548:~$ wget https://dl.bintray.com/sbt/native-packages/sbt/0.13.13/sbt-0.13.13.tgz
u0017496@sys-85548:~$ tar -zxvf sbt-0.13.13.tgz
u0017496@sys-85548:~$ export PATH=$PATH:~/sbt-launcher-packaging-0.13.13/bin
u0017496@sys-85548:~$ which sbt
/home/u0017496/sbt-launcher-packaging-0.13.13/bin/sbt

이제 sbt가 사용 준비 되었습니다.  이제 zinc를 설치합니다.

u0017496@sys-85548:~$ git clone https://github.com/typesafehub/zinc.git
u0017496@sys-85548:~$ cd zinc/
u0017496@sys-85548:~/zinc$ sbt universal:packageZipTarball

이렇게 해서 build된 것 중 linux32 directory에 생성된 ng를 spark build directory의 ng에 overwrite합니다.

u0017496@sys-85548:~/zinc$ cp ./src/universal/bin/ng/linux32/ng ~/spark/build/zinc-0.3.11/bin/ng/linux32/ng

u0017496@sys-85548:~$ file ./spark/build/zinc-0.3.11/bin/ng/linux32/ng
/home/u0017496/spark/build/zinc-0.3.11/bin/ng/linux32/ng: ELF 64-bit LSB executable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=142230d9ad8099f606dcf8144b308bc938915812, stripped

유의)  이대로 build를 수행하면 도중에 다음의 'Required file not found: scala-compiler-2.11.8.jar'라는 error가 날 수 있습니다.  실제로는 file이 있는데도요.  이는 다음과 같이 zinc 서버를 shutdown 하시면 해결됩니다.

u0017496@sys-85548:/home/u0017496/zinc# ./src/universal/bin/zinc -shutdown

이제 준비가 끝났습니다.  다음과 같이 dev/make-distribution.sh script를 수행하면 됩니다.  이 build 과정은 시간이 매우 오래 걸리는데, virtual CPU 2개짜리인 IBM Power Cloud에서는 무려 140분 정도 걸립니다.

u0017496@sys-85548:~/spark$ ./dev/make-distribution.sh --name spark-ppc64le --tgz -Psparkr  -Phive -Phive-thriftserver

build가 끝나면 다음과 같은 tgz file이 생깁니다.

u0017496@sys-85548:~/spark$ ls -l *.tgz
-rw-r--r--  1 root     root     177688849 Feb  9 10:12 spark-2.2.0-SNAPSHOT-bin.tgz

이를 먼저 /usr/local directory에 풀어준 뒤, 그 결과 생긴 spark-bin directory를 SPARK_HOME으로 export 하십시요.

u0017496@sys-85548:/usr/local$ sudo tar -zxvf ~/spark/spark-2.2.0-SNAPSHOT-bin.tgz

u0017496@sys-85548:/usr/local$ tail ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-ppc64el
export R_HOME=/usr/local/lib/R
export SPARK_HOME=/usr/local/spark-bin
export PATH=$SPARK_HOME/bin:$R_HOME/bin:$PATH

그리고, 원래의 spark directory 밑의 R directory에는 R을 위한 SparkR package가 다음과 같이 gz file로 생성되어 있습니다.

u0017496@sys-85548:~/spark$ ls R/*.gz
R/SparkR_2.2.0-SNAPSHOT.tar.gz

R에 이 SparkR package를 설치하겠습니다.

u0017496@sys-85548:/usr/local/spark-bin$ sudo R

> pkgPath <- '/home/u0017496/spark/R/SparkR_2.2.0-SNAPSHOT.tar.gz'
> install.packages(pkgPath)
Installing package into '/usr/local/lib/R/site-library'
..

그 결과는 /usr/local/lib/R/site-library에서 보실 수 있습니다.  아래 보이는 SparkR 패키지가 설치된 R.tgz가 앞선 포스팅에 올려져 있으니, 이 과정을 굳이 거치실 필요없이 그걸 그대로 쓰셔도 됩니다.

u0017496@sys-85548:/usr/local/spark-bin$ ls -ltr /usr/local/lib/R/site-library
total 124
drwxrwxr-x  7 root staff 4096 Feb  6 23:54 mime
drwxrwxr-x  8 root staff 4096 Feb  6 23:56 stringi
drwxrwxr-x  7 root staff 4096 Feb  6 23:56 magrittr
drwxrwxr-x  9 root staff 4096 Feb  6 23:56 digest
drwxrwxr-x  7 root staff 4096 Feb  6 23:56 highr
drwxrwxr-x  8 root staff 4096 Feb  6 23:56 yaml
drwxrwxr-x 11 root staff 4096 Feb  6 23:56 markdown
drwxrwxr-x  9 root staff 4096 Feb  6 23:56 stringr
drwxrwxr-x  6 root staff 4096 Feb  6 23:56 evaluate
drwxrwxr-x 14 root staff 4096 Feb  6 23:57 knitr
drwxrwxr-x 10 root staff 4096 Feb  7 02:12 MASS
drwxrwxr-x  8 root staff 4096 Feb  7 02:12 class
drwxrwxr-x  8 root staff 4096 Feb  7 02:12 e1071
drwxrwxr-x 10 root staff 4096 Feb  7 04:33 lattice
drwxrwxr-x 12 root staff 4096 Feb  7 04:34 Matrix
drwxrwxr-x  9 root staff 4096 Feb  7 04:35 survival
drwxrwxr-x 16 root staff 4096 Feb  7 04:37 Rcpp
drwxrwxr-x  7 root staff 4096 Feb  7 04:37 bitops
drwxrwxr-x  6 root staff 4096 Feb  7 04:37 backports
drwxrwxr-x  7 root staff 4096 Feb  7 04:37 base64enc
drwxrwxr-x  8 root staff 4096 Feb  7 04:37 jsonlite
drwxrwxr-x  7 root staff 4096 Feb  7 04:37 htmltools
drwxrwxr-x  7 root staff 4096 Feb  7 04:37 caTools
drwxrwxr-x  7 root staff 4096 Feb  7 04:37 rprojroot
drwxrwxr-x  8 root staff 4096 Feb  7 04:37 rmarkdown
drwxrwxr-x  6 root staff 4096 Feb  7 07:03 crayon
drwxrwxr-x  6 root staff 4096 Feb  7 07:03 praise
drwxrwxr-x  7 root staff 4096 Feb  7 07:03 R6
drwxrwxr-x  9 root staff 4096 Feb  8 02:56 testthat
drwxrwxr-x 10 root staff 4096 Feb  8 02:57 rJava
drwxrwxr-x 10 root staff 4096 Feb  9 19:39 SparkR



이제 이 binary들을 별도의 서버에 옮겨서 설치하겠습니다.

먼저, 저 SparkR package가 설치된 /usr/local/lib/R directory 전체를 tar로 말아서 설치하려는 서버로 옮기시고, 같은 /usr/local/lib/ 밑에 풀어 놓습니다.

u0017496@sys-85549:/usr/local/lib$ tar -zxvf R.tgz R

이어서, 위에서 만들어진 spark-2.2.0-SNAPSHOT-bin.tgz를 설치하려는 서버로 옮기시고, /usr/local directory에 풀어 넣으시면 됩니다.  그러면 다음과 같이 spark-bin directory가 생깁니다.  이를 SPARK_HOME으로 export 하십시요.

u0017496@sys-85549:/usr/local$ sudo tar -zxvf /tmp/spark-2.2.0-SNAPSHOT-bin.tgz

u0017496@sys-85549:/usr/local$ tail ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-ppc64el
export R_HOME=/usr/local/lib/R
export SPARK_HOME=/usr/local/spark-bin
export PATH=$SPARK_HOME/bin:$R_HOME/bin:$PATH

u0017496@sys-85549:/usr/local$ cd spark-bin

Spark 구동을 위해서는 local 서버 자체에서도 passwd 없이 ssh가 가능해야 합니다.  이를 위한 준비를 합니다.

u0017496@sys-85549:/usr/local/spark-bin/sbin$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/u0017496/.ssh/id_rsa):
Created directory '/home/u0017496/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

u0017496@sys-85549:/usr/local/spark-bin/sbin$ ssh-copy-id localhost

이제 spark master를 구동합니다.

u0017496@sys-85549:/usr/local/spark-bin/sbin$ sudo mkdir /usr/local/spark-bin/logs
u0017496@sys-85549:/usr/local/spark-bin/sbin$ sudo chown -R u0017496:u0017496 /usr/local/spark-bin/logs
u0017496@sys-85549:/usr/local/spark-bin/sbin$ ./start-all.sh

sparkR을 구동해서 이 spark master에 연결되는지 확인합니다.

u0017496@sys-85549:/usr/local/spark-bin/bin$ sparkR
 Welcome to
    ____              __
   / __/__  ___ _____/ /__
  _\ \/ _ \/ _ `/ __/  '_/
 /___/ .__/\_,_/_/ /_/\_\   version  2.2.0-SNAPSHOT
    /_/


 SparkSession available as 'spark'.
>

성공했습니다.

이제 sparkR에서 그래프를 그려봅니다.  그를 위해서 먼저 DISPLAY를 Xmanager를 띄워놓은 PC client로 세팅합니다.

u0017496@sys-85549:/usr/local/spark-bin/bin$ who
u0017496 pts/0        2017-02-09 19:21 (172.29.97.138)

u0017496@sys-85549:/usr/local/spark-bin/bin$ export DISPLAY=172.29.97.138:0

u0017496@sys-85549:/usr/local/spark-bin/bin$ sparkR

> plot(BOD, type = 'l')

다음과 같이 PC client에 Xmanager를 통해서 그래프가 그려지는 것을 보실 수 있습니다.




여기서 build된 tgz 파일들은 아래 URL에 올려 놓았으니 그대로 쓰셔도 됩니다.  역시 제가 법적, 기술적 책임은 못 진다는 것은 유의하시기 바랍니다.

https://drive.google.com/drive/folders/0B-F0jEb44gqUN3cxaGVDdklwdWc?usp=sharing 

2017년 2월 7일 화요일

Linux on POWER (ppc64le)에 R 서버 및 R-Studio 설치하기


Revolution R이 MS에게 매각되면서 MS-R이 되었습니다만, 여전히 open source로서 source code는 공개되고 있습니다.   MS-R과 R-Studio를 Ubuntu 16.04 LTS ppc64le 환경에서 build한 뒤, 동일한 OS의 다른 POWER 서버로 그 binary들을 가져가서 제대로 구동되는지 보겠습니다.

다음과 같이 필요한 기본 OS fileset을 설치합니다.  (일부는 필요없는 것도 있겠으나... 일단 그냥 다 설치합시다.)

u0017496@sys-85548:~$ sudo apt-get install gfortran gfortran-5 libgfortran-5-dev openssl libcurl4-openssl-dev libglobus-openssl-module-dev libboost-dev libboost-regex1.58-dev libboost-filesystem1.58-dev libboost-math1.58-dev libboost-tools-dev libboost-date-time1.58-dev libboost-iostreams1.58-dev libboost-program-options1.58-dev libboost-signals1.58-dev libboost-thread1.58-dev libboost-chrono1.58-dev libpam0g-dev libr3-0 xorg-dev xserver-xorg-dev nautilus ubuntu-gnome-desktop r-base r-base-dev r-base-core r-base-html cmake openssl libcurl4-openssl-dev libglobus-openssl-module-dev libboost-dev libboost-regex1.58-dev libboost-filesystem1.58-dev libboost-math1.58-dev libboost-tools-dev libboost-date-time1.58-dev libboost-iostreams1.58-dev libboost-program-options1.58-dev libboost-signals1.58-dev libboost-thread1.58-dev libboost-chrono1.58-dev libpam0g-dev libr3-0 xorg-dev xserver-xorg-dev nautilus ubuntu-gnome-desktop uuid-dev libuuid1 ant libasio-dev cmake automake autoconf libpango1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpangomm-1.4-1v5 libpangoxft-1.0-0 gir1.2-coglpango-1.0  gir1.2-pango-1.0 libcogl-pango20


먼저, MS-R 서버를 build 합니다.  Github에서 source code를 download 받습니다.

u0017496@sys-85548:~$ wget https://github.com/Microsoft/microsoft-r-open/archive/MRO-3.3.2.tar.gz

u0017496@sys-85548:~$ tar -zxvf MRO-3.3.2.tar.gz

u0017496@sys-85548:~$ cd microsoft-r-open-MRO-3.3.2/source

u0017496@sys-85548:~/microsoft-r-open-MRO-3.3.2/source$ ./configure --enable-R-shlib --without-recommended-packages ; make ; sudo make install


이렇게 build되고 install된 R 서버는 /usr/local/lib/R directory에 설치됩니다.  이제 그 directory 전체를 tar로 말도록 하겠습니다.

u0017496@sys-85548:~/microsoft-r-open-MRO-3.3.2/source$ cd /usr/local/lib/

u0017496@sys-85548:/usr/local/lib$ sudo tar -zcvf R.tgz R

u0017496@sys-85548:/usr/local/lib$ ls -l R.tgz
-rw-r--r-- 1 root root 27970104 Feb  6 03:59 R.tgz


이 R.tgz 파일은 조금 뒤에 다른 서버로 옮겨가서 설치하겠습니다.

이제 R-Studio를 build 합니다.

u0017496@sys-85548:~$ wget https://github.com/rstudio/rstudio/archive/master.zip

u0017496@sys-85548:~$ unzip master.zip

u0017496@sys-85548:~$ cd rstudio-master

u0017496@sys-85548:~/rstudio-master$ ./package/linux/install-dependencies

u0017496@sys-85548:~/rstudio-master$ cd dependencies/common/

u0017496@sys-85548:~/rstudio-master/dependencies/common$ ./install-cef
u0017496@sys-85548:~/rstudio-master/dependencies/common$ ./install-boost
u0017496@sys-85548:~/rstudio-master/dependencies/common$ ./install-common
u0017496@sys-85548:~/rstudio-master/dependencies/common$ ./install-gwt
u0017496@sys-85548:~/rstudio-master/dependencies/common$ ./install-libclang
u0017496@sys-85548:~/rstudio-master/dependencies/common$ ./install-mathjax
u0017496@sys-85548:~/rstudio-master/dependencies/common$ ./install-packages
u0017496@sys-85548:~/rstudio-master/dependencies/common$ ./install-pandoc

u0017496@sys-85548:~/rstudio-master/dependencies/common$ cd ../..
u0017496@sys-85548:~/rstudio-master$ mkdir build
u0017496@sys-85548:~/rstudio-master$ cd build


u0017496@sys-85548:~/rstudio-master/build$ cmake .. -DRSTUDIO_TARGET=Server -DCMAKE_BUILD_TYPE=Release

u0017496@sys-85548:~/rstudio-master/build$ make ; sudo make install


이렇게 build된 R-Studio는 /usr/local/lib/rstudio directory에 설치됩니다.  역시 이 directory 전체를 tar로 말겠습니다.

u0017496@sys-85548:~/rstudio-master/build$ cd /usr/local/lib

u0017496@sys-85548:/usr/local/lib$ sudo tar -zcvf ./rstudio-server.tgz rstudio-server

u0017496@sys-85548:/usr/local/lib$ ls -l rstudio-server.tgz
-rw-r--r-- 1 root root 61493341 Feb  6 03:27 rstudio-server.tgz


* 이 파일들을 MS-R과 R-Studio를 설치해야 하는 서버로 옮긴 뒤 거기서 다음과 같이 tgz를 untar 합니다.   단, 그 전에, 다음과 같이 위 build 서버에서 apt-get install 명령으로 설치했던 모든 기본 fileset은 이 target 서버에서도 미리 apt-get install 명령으로 설치해두어야 합니다.


u0017496@sys-85549:~$ sudo apt-get install gfortran gfortran-5 libgfortran-5-dev openssl libcurl4-openssl-dev libglobus-openssl-module-dev libboost-dev libboost-regex1.58-dev libboost-filesystem1.58-dev libboost-math1.58-dev libboost-tools-dev libboost-date-time1.58-dev libboost-iostreams1.58-dev libboost-program-options1.58-dev libboost-signals1.58-dev libboost-thread1.58-dev libboost-chrono1.58-dev libpam0g-dev libr3-0 xorg-dev xserver-xorg-dev nautilus ubuntu-gnome-desktop r-base r-base-dev r-base-core r-base-html cmake openssl libcurl4-openssl-dev libglobus-openssl-module-dev libboost-dev libboost-regex1.58-dev libboost-filesystem1.58-dev libboost-math1.58-dev libboost-tools-dev libboost-date-time1.58-dev libboost-iostreams1.58-dev libboost-program-options1.58-dev libboost-signals1.58-dev libboost-thread1.58-dev libboost-chrono1.58-dev libpam0g-dev libr3-0 xorg-dev xserver-xorg-dev nautilus ubuntu-gnome-desktop uuid-dev libuuid1 ant libasio-dev cmake automake autoconf libpango1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpangomm-1.4-1v5 libpangoxft-1.0-0 gir1.2-coglpango-1.0  gir1.2-pango-1.0 libcogl-pango20

u0017496@sys-85549:~$ cd /usr/local/lib


이 서버의 /usr/local/lib directory에 아까의 build 서버에서 말아 놓았던 tar file들을 가져와 풀어놓습니다.  먼저 R 서버부터 제대로 작동하는지 확인합니다.

u0017496@sys-85549:/usr/local/lib$ ls -ltr
total 60068
drwxrwsr-x 3 root staff     4096 Jan 13 09:17 python3.5
drwxrwsr-x 4 root staff     4096 Feb  6 01:44 python2.7
drwxrwsr-x 3 root staff     4096 Feb  6 01:50 R
-rw-r--r-- 1 root root  61493341 Feb  6 03:34 rstudio-server.tgz
-rw-r--r-- 1 root root  27970104 Feb  6 04:02 R.tgz

u0017496@sys-85549:/usr/local/lib$ sudo tar -zxvf R.tgz


Windows가 설치된 PC client에서, 자신이 어떤 IP로 접속하고 있는지 who 명령으로 확인한 뒤, 그 주소로 DISPLAY 환경변수를 export 해줍니다.

u0017496@sys-85549:/usr/local/lib$ who
u0017496 pts/0        Feb  6 19:18 (172.29.97.114)

u0017496@sys-85549:/usr/local/lib$ export DISPLAY=172.29.97.114:0



이제 172.29.97.114 주소를 가진 client PC에서 Xmanager를 passive mode로 구동시킨 뒤 아래처럼 R에서 그래프를 그리면 그 그래픽 화면이 PC 창에 띄워집니다.

u0017496@sys-85549:/usr/local/lib$ /usr/local/lib/R/bin/R
> plot(BOD, type = 'l')





다음은 R-Studio입니다.  역시 tar를 풀어주고, 다음과 같이 rstudio-server라는 이름의 script를 /etc/init.d에 등록해줍니다.

u0017496@sys-85549:/usr/local/lib$ sudo tar -zxvf rstudio-server.tgz

u0017496@sys-85549:/usr/local/lib$ sudo cp rstudio-server/extras/init.d/debian/rstudio-server /etc/init.d/rstudio-server

u0017496@sys-85549:/usr/local/lib$ sudo update-rc.d rstudio-server defaults

u0017496@sys-85549:/usr/local/lib$ sudo ln -f -s /usr/local/lib/rstudio-server/bin/rstudio-server /usr/sbin/rstudio-server


rstudio-server를 systemctl 명령으로 start 해준 뒤, status를 확인합니다.

u0017496@sys-85549:/usr/local/lib$ sudo systemctl start rstudio-server.service

u0017496@sys-85549:/usr/local/lib$ sudo systemctl status rstudio-server.service
â— rstudio-server.service - LSB: RStudio Server
   Loaded: loaded (/etc/init.d/rstudio-server; bad; vendor preset: enabled)
   Active: active (running) since Mon 2017-02-06 19:37:08 EST; 25s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 19387 ExecStart=/etc/init.d/rstudio-server start (code=exited, status=0/SUCCESS)
    Tasks: 3
   Memory: 7.5M
      CPU: 447ms
   CGroup: /system.slice/rstudio-server.service
           â””─19395 /usr/local/lib/rstudio-server/bin/rserver

Feb 06 19:37:08 sys-85549 systemd[1]: Starting LSB: RStudio Server...
Feb 06 19:37:08 sys-85549 systemd[1]: Started LSB: RStudio Server.

이제 http://서버주소:8787 로 web browser를 통해 접근할 수 있습니다.   user id와 passwd는 OS user의 것을 그대로 쓰면 됩니다.





이 file들은 아래 link에 공유해놓았으니 마음대로 쓰셔도 됩니다.   물론 제가 어떠한 기술적, 법적 책임을 지지는 않는다는 점은 유의 부탁드립니다.

https://drive.google.com/drive/folders/0B-F0jEb44gqUN3cxaGVDdklwdWc?usp=sharing