RHive
둘러보기로 가기
검색하러 가기
R과 Hive를 상호 연동하여 사용할 수 있도록 하는 R기반 분산처리 프레임워크 RHive를 정리 합니다.
- 다운로드 :
- 라이선스 : Apache 2.0
- 플랫폼 : R
목차
RHive 개요
R에서 HiveQL을 사용할 수 있도록 함
CentOS에서 RHive 설치
사전 준비 사항
- Hive 0.11.0
- Hadoop 1.1.2 (HDFS, MapReduce)
- MySQL 5.1.69
- Git 1.7.1
- Ant 1.7.1
- Java 1.7.0_19
- CentOS 6.4, 64 bits
설치
- RHive 소스를 다운로드 하여 설치 합니다.
git clone git://github.com/nexr/RHive.git chown -R root:root RHive
- jar 파일을 생성 합니다.
- java 파일을 컴파일하기 위해서는 javac 가 필요 합니다.
- /usr/lib/jvm/ 폴더 아래에 설치된 java 중 javac가 있는 폴더를 JAVA_HOME으로 지정 합니다.
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64 cd RHive ant jar //--- rhive_udf.jar 파일이 생성 됩니다.
- R Package 배포본을 생성 합니다.
ant main-hive10 R CMD build ./RHive //--- RHive_1.0-0.1.tar.gz 파일이 생성 됩니다.
- RHive 패키지 설치
R CMD INSTALL ./RHive_1.0-0.1.tar.gz //--- ERROR: dependencies ‘rJava’, ‘Rserve’ are not available for package ‘RHive’ 오류가 발생할 경우 //--- R에 rJava와 Rserve 패키지를 설치한 후 RHive도 같이 설치 합니다. R install.packages("rJava") //--- 47번 Korea를 선택 하세요. install.packages("Rserve") install.packages("./RHive_1.0-0.1.tar.gz", repos=NULL) q() //--- y를 선택하여 저장한 후 종료 합니다.
Hadoop의 job node에 Rserve 설치
RHive를 사용하기 위해서 Hadoop의 모든 job node에 Rserve를 설치 합니다.
- Rserve를 설치 합니다.
yum install R R-devel R install.packages("Rserve") q() vi /etc/Rserv.conf remote enable mkdir /tmp/rhive_data vi ~/.bashrc export RHIVE_DATA=/tmp/rhive_data
- Rserve를 데몬으로 실행 합니다.
R CMD Rserve //--- 서비스의 확인을 위해, Rserve가 LISTEN 하고 있는 port가 있는지 확인 합니다. //--- Default로 6311 port를 사용 합니다. netstat -nltp | grep Rserve
RHive 실행
- 사전 필요 사항
- MySQL 실행
- Hadoop 실행
- ZooKeeper 실행
- Hive용 Thrift Server 실행
- R에서 환경 변수를 설정하고 실행
- R
Sys.setenv(HADOOP_HOME="/appl/hadoop") Sys.setenv(HADOOP_CONF_DIR="/appl/hadoop/conf") Sys.setenv(HIVE_HOME="/appl/hive") library(RHive) //rhive.init() rhive.env() //--- 환경 변수 설정 확인 rhive.connect(hdfsurl="hdfs://cloud001.cloudserver.com:9000/") q()
- 환경 변수를 설정한 후 R 실행 (사용하지 않음)
vi ~/.bashrc export HADOOP_HOME=/appl/hadoop //--- HADOOP에서 지금은 지원하지 않는 예전 방식 export HIVE_HOME=/appl/hive R q()
RHive 사용법
- rhive.connect() : Hive server와 연결,
- rhive.list.tables() : Hive의 table 목록 보기
- rhive.query("SELECT COUNT(*) FROM usarrests")
- rhive.hdfs.ls("/") : HDFS에서 / 위치에 있는 파일 목록 보기
- Hive 테이블 생성 1
tablename <- rhive.write.table(USArrests) rhive.desc.table("USArrests")
- Hive 테이블 생성 2 (MASS package에 있는 데이터를 Hive의 테이블에 저장)
library(MASS) tablename <- rhive.write.table(Aids2) rhive.desc.table(tablename) rhive.load.table(tablename)
참고 문헌
- RHive 튜토리얼
- RHive 튜토리얼 부록