RHive

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기

RHive를 상호 연동하여 사용할 수 있도록 하는 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 튜토리얼 부록