Friday, January 2, 2015

Rserve

  1. Rserve 소개
    1. 다른 언어들이 R을 설치하거나 R함수에 대한 링크 없이 R의 기능을 사용할수 있도록 하는 TCP/IP 서버
    2. 모든 연결들은 분리된 작업환경과 작업폴더가 있음
    3. 클라이언트측 구현은 C/C++, JAVA, PHP같은 언어들로 구현
    4. 원격접속, 인증, 파일전송을 지원
    5. 통계적 모델이나 시각화 도면을 위한 R 백앤드 측을 접목하는 것이 주된 사용 목적
  2. Rserve 특징
    1. 빠름: R의 초기화가 필요없음
    2. 바이너리 전송: 전송 프로토콕은 R 객체를 R텍스트 결과가 아닌 바이너리 데이터로 전송
    3. 자동 타입 젼환: 대부분의 R 데이터 타입들은 고유한 데이터 타입으로 변경
      1. rnorm(10)의 결과는 C/Java 에서 double[10]으로 변환
      2. Java 클라이언트는 RBool, RList같은 R의 새로운 타입을 위한 클래스를 제공
    4. 지속성: 
      1. 각각의 연결은 자신만의 C++ 개념인 namespace와 작업 디렉토리가 있음
      2. 각 객체들은 연결이 종료될때까지 유지
      3. 클라이언트는 결과값들을 즉각적으로 가져오거나 만들 필요가 없음
    5. 클라이언트에 대한 독립성: 클라이언트들이 R에 연결된것이 아니기 때문에 RSJava 등등에서 발생하는 쓰레드 문제가 없음
    6. 안정성: 
      1. 서버측 검증을 가진 암호화된 사용자/비밀번호 인증을 지원함으로써 기본적인 안전성을 제공
      2. local 연결만 받아들이도록 설정이 가능
    7. 파일 전송: 
      1. 클라이언트와 서버간에 파일전송이 가능
      2. plot 이미지를 생성하는 등의 작업을 위한 원거리 서버로써 사용 가능
    8. 설정 가능: 
      1. 설정들을 조정하기 위한 파일 제공
      2. 사용자인증, 원거리 접근, 파일 전송같은 특성들의 사용여부를 결정할수 있는 설정파일이 있음
  3. 없는 기능
    1. 콜백 기능 없음: 응용프로그램에서 TCP/IP와 R소켓으로 구현가능하나 Rserve에 포함되어 있지는 않음
    2. R에대한 telnet front-end가 아님: 
      1. 출력된 결과는 전송되지 않음
      2. 빠른 속도를 위해서 바이너리 프로토콜 사용
    3. 항상 thread safe가 아님: 
      1. 연결간의 thread safe 지원하지만 eval 메소드들은 thread safe 하지 않음
      2. eval들이 병렬 호출이 아니라는 보장이 없으면 다양한 쓰레드들이 같은 연결 사용 금지
  4. 설치, 설정 및 사용

    NOTE: Window를 선택한 원인은 기타 OS 설치 필요 없이 사용해 보기 위함

    1. 환경 설명
      1. Windows 7 64bit
      2. R 3.1.0
      3. Eclipse Luna
    2. Rserve 설치
      1. R에 Rserve 설치
      2. install.packages("Rserve")
    3. Rserve 실행
      1. R에서 실행
      2. library(Rserve)
      3. Rserve()
      4. message: Starting Rserve... "d:\PROGRA~3\R\R-31~1.0\library\Rserve\libs\x64\Rserve.exe"
    4. 필요 정보 확인
      1. 자바 클라이언트 실행에 필요한 JAR 파일 위치 확인
      2. system.file("java", package="Rserve")
      3. message: "d:/Program Files/R/R-3.1.0/library/Rserve/java"
    5. Eclipse 사용
      1. "d:/Program Files/R/R-3.1.0/library/Rserve/java" 밑의 JAR 파일을 참고 라이버리로 설정
      2. R 버전 정보를 반환하는 예제 Rversion.java 사용
  5. 관련 정보
    1. 홈 페이지: http://rforge.net/Rserve/
    2. 관련 페이퍼: http://www.ci.tuwien.ac.at/Conferences/DSC-2003/Proceedings/Urbanek.pdf
    3. 관련 문서: 
      1. http://rforge.net/Rserve/doc.html
      2. http://rforge.net/org/doc/ (org.rosuda.REngine)

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.