- Rserve 소개
- 다른 언어들이 R을 설치하거나 R함수에 대한 링크 없이 R의 기능을 사용할수 있도록 하는 TCP/IP 서버
- 모든 연결들은 분리된 작업환경과 작업폴더가 있음
- 클라이언트측 구현은 C/C++, JAVA, PHP같은 언어들로 구현
- 원격접속, 인증, 파일전송을 지원
- 통계적 모델이나 시각화 도면을 위한 R 백앤드 측을 접목하는 것이 주된 사용 목적
- Rserve 특징
- 빠름: R의 초기화가 필요없음
- 바이너리 전송: 전송 프로토콕은 R 객체를 R텍스트 결과가 아닌 바이너리 데이터로 전송
- 자동 타입 젼환: 대부분의 R 데이터 타입들은 고유한 데이터 타입으로 변경
- rnorm(10)의 결과는 C/Java 에서 double[10]으로 변환
- Java 클라이언트는 RBool, RList같은 R의 새로운 타입을 위한 클래스를 제공
- 지속성:
- 각각의 연결은 자신만의 C++ 개념인 namespace와 작업 디렉토리가 있음
- 각 객체들은 연결이 종료될때까지 유지
- 클라이언트는 결과값들을 즉각적으로 가져오거나 만들 필요가 없음
- 클라이언트에 대한 독립성: 클라이언트들이 R에 연결된것이 아니기 때문에 RSJava 등등에서 발생하는 쓰레드 문제가 없음
- 안정성:
- 서버측 검증을 가진 암호화된 사용자/비밀번호 인증을 지원함으로써 기본적인 안전성을 제공
- local 연결만 받아들이도록 설정이 가능
- 파일 전송:
- 클라이언트와 서버간에 파일전송이 가능
- plot 이미지를 생성하는 등의 작업을 위한 원거리 서버로써 사용 가능
- 설정 가능:
- 설정들을 조정하기 위한 파일 제공
- 사용자인증, 원거리 접근, 파일 전송같은 특성들의 사용여부를 결정할수 있는 설정파일이 있음
- 없는 기능
- 콜백 기능 없음: 응용프로그램에서 TCP/IP와 R소켓으로 구현가능하나 Rserve에 포함되어 있지는 않음
- R에대한 telnet front-end가 아님:
- 출력된 결과는 전송되지 않음
- 빠른 속도를 위해서 바이너리 프로토콜 사용
- 항상 thread safe가 아님:
- 연결간의 thread safe 지원하지만 eval 메소드들은 thread safe 하지 않음
- eval들이 병렬 호출이 아니라는 보장이 없으면 다양한 쓰레드들이 같은 연결 사용 금지
- 설치, 설정 및 사용
NOTE: Window를 선택한 원인은 기타 OS 설치 필요 없이 사용해 보기 위함- 환경 설명
- Windows 7 64bit
- R 3.1.0
- Eclipse Luna
- Rserve 설치
- R에 Rserve 설치
- install.packages("Rserve")
- Rserve 실행
- R에서 실행
- library(Rserve)
- Rserve()
- message: Starting Rserve... "d:\PROGRA~3\R\R-31~1.0\library\Rserve\libs\x64\Rserve.exe"
- 필요 정보 확인
- 자바 클라이언트 실행에 필요한 JAR 파일 위치 확인
- system.file("java", package="Rserve")
- message: "d:/Program Files/R/R-3.1.0/library/Rserve/java"
- Eclipse 사용
- "d:/Program Files/R/R-3.1.0/library/Rserve/java" 밑의 JAR 파일을 참고 라이버리로 설정
- R 버전 정보를 반환하는 예제 Rversion.java 사용
- 환경 설명
- 관련 정보
- 홈 페이지: http://rforge.net/Rserve/
- 관련 페이퍼: http://www.ci.tuwien.ac.at/Conferences/DSC-2003/Proceedings/Urbanek.pdf
- 관련 문서:
- http://rforge.net/Rserve/doc.html
- http://rforge.net/org/doc/ (org.rosuda.REngine)
Friday, January 2, 2015
Rserve
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.