SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
RHive 튜토리얼 – 설치 및 설정

RHive 설치 방법들
RHive를 설치하기 위해 소스를 얻으려면 아래의 3가지 방법을 이용할 수 있다.
  •   R을 실행한 뒤 install.packages() 함수를 사용해서CRAN으로부터 설치
  •   RHive 프로젝트 홈페이지에서 빌드된 R 패키지를 다운로드 받은 후 R
      CMD명령어를 를 이용해서 설치
  •   Github에서 source를 다운로드 받아서 build한 후 설치
CRAN에서 배포하는 버전을 포함한 모든 RHive의 패키지와 소스는 RHive의 공식 개발
사이트에서 찾을 수 있다.
RHive의 Github repository는 경로: https://github.com/nexr/RHive


튜토리얼의 내용
이 튜토리얼에서는 Hadoop과 Hive가 설치되어 있고 이미 작동하고 있는 환경에 R과
RHive를 추가로 설치하여 작동할 수 있게 만드는 것을 설명할 것이다.


튜토리얼에서 사용한 환경
이 튜토리얼에서는 RHive을 CentOs5 Linux 64bit 버전에 설치하는 것을 기준으로
작업하였다. 하지만 다른 Linux 배포판이나 Mac OS X나 FreeBSD등에서 설치하는
방법은 크게 차이가 없을 것으로 예상하며, 단지 Linux 배포판별로 git이나 ant와 같은
패키지를 설치하는 방법이 배포판이 사용하는 패키징시스템이나 설치방법의 차이로
다를 수 있다.
Windows에서 RHive를 설치해서 사용하는 방법은 이 튜토리얼에서는 소개하지 않으며
별도의 튜토리얼로 제공할 것이다. 추가로 Windows에서 RHive를 사용하려고 한다면
RStudio-server를 이용한 원격접속을 권장한다.


Hadoop과 Hive 구성 환경
이 튜토리얼에서 사용한 서버들의 IP 주소와 그 서버들에 각각 설치되어 작동하고 있는
소프트웨어 및 콤포넌트 및 역할들은 다음과 같다.
10.1.1.1 - Hadoop namenode, Hive server, R, RHive
10.1.1.[2-4] - Hadoop job node, DFS node, Rserve node
즉, 이 튜토리얼에서는 다음과 같은 것이 R과 RHive설치전에 이미 구성되어 있다는 것을
전제한다. 단, IP주소는 사용자의 환경에 따라 다를 수 있다.
   •   10.1.1.1주소를 가진 서버에 Hadoop namenode가 설치되어 있고 Hive가
       설치되어 있으며 Hive server가 작동하고 있다고 가정한다.
   •   10.1.1.2, 10.1.1.3, 10.1.1.4 주소를 가진 서버들에는 Hadoop DFS node와
       Hadoop Job node가 설정되어 있으며 작동하고 있다고 가정한다.
   •   위의 구성이 잘 작동하므로 Hadoop과 Hive가 정상 작동하고 있다고 가정한다.
만약 Hadoop과 Hive의 설치 과정부터 필요하다면 설치를 위해서 Hadoop과 Hive의
공식 사이트를 비롯한 다른 reference를 참조하여 설치하기 바란다.
참조할 사항
원칙적으로 Hadoop namenode에는 namenode 기능 외의 다른 것들을 설치하거나
실행하지 않는 것이 좋으며 그렇게 설정하는 것이 권장되지만 학습또는 빠른 작업을
위해 소규모의 클러스터를 셋업하기 위한 목적으로 이 튜토리얼에서는 편의상 Hadoop
namenode에 Hive server와 R, RHive를 모두 설치하였다.
더 큰 규모와 여러 사용자가 동시에 사용해야 하는 안정된 환경을 구성하려고 한다면
이 튜토리얼의 내용을 참조해서 충분히 알맞게 설정을 변경할 수 있을것으로 예상한다.


Git을 이용해서 소스를 다운로드 받아 설치하는 방법
RHive는 Github으로 소스코드 관리를 하고 있다. Github에서 source code를 다운로드
해서 설치하는 것은 많이 번거롭지 않으며 가장 최근에 변경된 소스를 기반으로
패키지를 그대로 빌드해서 사용할 수 있다는 장점이 있다.
현재 자신이 사용하고 있는 RHive 패키지에 어떤 문제가 발견되었고 최신 소스코드에
수정된 내용이 업데이트 되었다는 것을 확인했고 바로 적용해서 사용하려고 한다면
Github에서 source code를 직접 받아서 스스로 RHive를 빌드해서 사용하는 것이 가장
빠른 방법이다.
RHive의 소스코드를 받을 수 있는 Github repository 경로는 아래와 같다.
git://github.com/nexr/RHive.git
Git을 사용하는데 익숙한 사용자라면 Github repository의 경로를 아는 것 만으로도
RHive 패키지를 빌드할 수 있을 것이다.
하지만 여러분이 Github을 사용하는데 익숙하지 않다면 이 튜토리얼을 보고 간단하게
빌드하는 방법을 배울 것이다. 여러분이 사용하는 OS가 Linux나 Mac OS X같은
것들이라면 terminal을 열고 서버에서 작업할 것이라면 작업할 원격 서버로 SSH등을
이용해서 접속한다.
이 튜토리얼에서는 다소 위험하지만 작업 계정 root계정을 바로 사용할 것인데
만약 사용자의 환경이 root계정으로 접속하지 못하는 환경이거나 root의 패쓰워드를
알아 낼 수 없다면 sudo를 설치한 후 root권한을 가진 관리자에게 요청하여sudoer
권환을 획득해서 sudo 명령어와 함께 작업할 필요가 있다. 이 튜토리얼에서는
root계정을 그대로 사용할 것이므로 sudo 명령어를 사용하지 않을 것이므로 sudo
명령을 이용하는 사용자는 Linux 명령의 앞에 sudo를 입력해야 하는 것을 잊지 않아야
한다.

터미널 열기 또는 접속하기

SSH터미널 장을 열거나 터미널을 열고 ssh 명령어를 이용해 작업할 서버에 접속한다

ssh	
  root@10.1.1.1	
  

여기서 10.1.1.1은 RHive가 설치될 서버이며 Hadoop의 namenode이기도 하다.

소스 다운로드

Github에서 RHive소스코드를 다운로드하기 위해서 임시 디렉토리를 만들고 RHive의
소스를 git명령으로 다운로드 받는다.
mkdir	
  RHive_source	
  
cd	
  RHive_source	
  
git	
  clone	
  git://github.com/nexr/RHive.git	
  
#	
  if	
  you	
  succeed,	
  the	
  name	
  "RHive'	
  is	
  made	
  automatically	
  
cd	
  RHive	
  
그리고 자동으로 생성된 하위 디렉토리인 RHive로 이동한다.


만약 git명령이 동작하지 않아서clone 을 하지 못한다면 아래의 명령으로 git을
설치하고 위의 과정을 다시 진행해야 한다. (CentOs5 기준)

yum	
  install	
  git	
  

git을 설치할 수 없다면 http://github.com 방문하여 git client를 설치하고 앞서 설명한
clone을 수행하도록 한다.

ant를 이용해서 jar를 빌드하기

RHive를 R에서 사용가능한 R package로 만들기 전에 선행작업으로 확장자가 jar인
몇개의 java로 작성된 내부 모듈이 먼저 빌드되어야 한다. R의 패키징 시스템은 Java의
소스를 컴파일해서 jar파일로 묶어 주는 작업을 해주지 않기 때문이다.
CRAN에서 다운로드 받거나 R에서 바로 설치가 가능한 패키지의 최종본을 다운로드
받는 경우에는 jar파일들이 이미 포함되어 있어 이 과정이 필요없지만 소스를 받아서
직접 빌드하는 경우에는 이 과정을 직접 해야 한다.
다음과 같이 하여 ant로 RHive 패키지에 포함될 jar를 컴파일한다.

ant	
  build	
  

만약 ant가 없다면 역시 ant를 먼저 Linux에 설치한 후 위의 과정을 진행해야 한다.
또한 당연한 것이지만 java도 설치가 되어 있어야 한다.
ant는 아래의 명령어로 설치할 수 있다.

yum	
  install	
  ant	
  

명령이 실행되고 나면 다음과 유사한 결과를 볼 수 있다.
실행 후 "BUILD SUCCESSFUL" 메세지를 본다면 빌드가 성공한 것을 알 수 있으며
만약 에러 메세지와 함께 빌드에 실패한 것을 확인했다면 RHive 개발팀에 바로
문의하는 것이 해결할 수 있는 가장 빠른 방법이다. 빌드의 실패한 이유는 소스 코드에
오류가 있거나 환경적인 문제가 대부분일 것이다.

RHive 패키지 빌드하기

앞서 과정을 통해서 ant로 jar를 빌드하고 난 후에 RHive를 R package의 배포본이
되도록 만들어야 한다. 즉, 이것은 CRAN에서 제공하는 패키지를 만드는 작업과
완전하게 동일하지는 않지만 거의 같은 작업이며 이 작업을 한 후에 R에 RHive를 설치할
수 있다.
현재 경로가 jar를 빌드했던 디렉토리와 동일한지 확인하고 아래와 같이 RHive
패키지를 빌드한다.

#	
  antBuildfile:	
  build.xml	
  
compile:	
  	
           	
  	
    [mkdir]	
             Created	
                 dir:	
  
/mnt/srv/RHive_package/RHive/build/classes	
  	
   	
  	
   [javac]	
   Compiling	
   5	
  
source	
                               files	
                                       to	
  
/mnt/srv/RHive_package/RHive/build/classes	
  	
   	
  	
   [unjar]	
   Expanding:	
  
/mnt/srv/RHive_package/RHive/RHive/inst/javasrc/lib/REngine.jar	
  
into	
       /mnt/srv/RHive_package/RHive/build/classes	
  	
          	
  	
   [unjar]	
  
Expanding:	
  
/mnt/srv/RHive_package/RHive/RHive/inst/javasrc/lib/RserveEngine.j
ar	
  into	
  /mnt/srv/RHive_package/RHive/build/classes	
  
jar:	
  	
    	
  	
   	
  	
    [jar]	
                         Building	
             jar:	
  
/mnt/srv/RHive_package/RHive/rhive_udf.jar	
  
cran:	
  	
          	
  	
   	
  [copy]	
   Copying	
        1	
      file	
             to	
  
/mnt/srv/RHive_package/RHive/RHive/inst/java	
  	
  	
  	
  	
  [copy]	
  Copying	
  13	
  
files	
                                                                                   to	
  
/mnt/srv/RHive_package/RHive/build/CRAN/rhive/inst	
  	
                 	
  	
   	
  [copy]	
  
Copying	
                            9	
                 files	
                          to	
  
/mnt/srv/RHive_package/RHive/build/CRAN/rhive/man	
  	
                	
  	
     	
  [copy]	
  
Copying	
                            3	
                 files	
                          to	
  
/mnt/srv/RHive_package/RHive/build/CRAN/rhive/R	
  	
   	
  	
   	
  [copy]	
   Copying	
  
1	
  file	
  to	
  /mnt/srv/RHive_package/RHive/build/CRAN/rhive	
  	
  	
  	
  	
  [copy]	
  
Copying	
                             1	
                 file	
                          to	
  
/mnt/srv/RHive_package/RHive/build/CRAN/rhive	
  	
   	
  [delete]	
   Deleting:	
  
/mnt/srv/RHive_package/RHive/rhive_udf.jar	
  
main:	
  
BUILD	
  SUCCESSFUL	
  
"R CMD build"의 대소문자를 주의해야 하며 디렉토리내의 파일을 build하기 전에
확인하는 이유는 "R CMD build"에 인자로 주어지는 경로내에 DESCRIPTION이라는
R패키지를 생성하는데 필요한 필수 정의파일이 존재하는 경로여야 하기 때문이다.
아래와 같은 명령으로 간단하게 만들 수 있다.

#	
  pwd	
  
/root/RHive_package/RHive	
  
#	
  ls	
  -­‐l	
  
total	
  76	
  
-­‐rw-­‐r-­‐-­‐r-­‐-­‐	
  1	
  root	
  root	
  	
  1413	
  Dec	
  11	
  16:41	
  ChangeLog	
  
-­‐rw-­‐r-­‐-­‐r-­‐-­‐	
  1	
  root	
  root	
  	
  2068	
  Dec	
  11	
  16:41	
  INSTALL	
  
-­‐rw-­‐r-­‐-­‐r-­‐-­‐	
  1	
  root	
  root	
  	
  2444	
  Dec	
  11	
  16:41	
  README	
  
drwxr-­‐xr-­‐x	
  5	
  root	
  root	
  	
  4096	
  Dec	
  11	
  16:41	
  RHive	
  
drwxr-­‐xr-­‐x	
  4	
  root	
  root	
  	
  4096	
  Dec	
  11	
  16:42	
  build	
  
-­‐rw-­‐r-­‐-­‐r-­‐-­‐	
  1	
  root	
  root	
  	
  2999	
  Dec	
  11	
  16:41	
  build.xml	
  
-­‐rw-­‐r-­‐-­‐r-­‐-­‐	
  1	
  root	
  root	
  35244	
  Dec	
  11	
  16:41	
  rhive-­‐logo.jpg	
  
-­‐rw-­‐r-­‐-­‐r-­‐-­‐	
  1	
  root	
  root	
  12732	
  Dec	
  11	
  16:41	
  rhive-­‐logo.png	
  
#	
  R	
  CMD	
  build	
  ./RHive	
  

빌드가 정상적으로 진행되었다면 아래와 유사한 결과 메세지를 볼 수 있다.

*	
  checking	
  for	
  file	
  './RHive/DESCRIPTION'	
  ...	
  OK	
  
*	
  preparing	
  'RHive':	
  
*	
  checking	
  DESCRIPTION	
  meta-­‐information	
  ...	
  OK	
  
*	
  checking	
  for	
  LF	
  line-­‐endings	
  in	
  source	
  and	
  make	
  files	
  
*	
  checking	
  for	
  empty	
  or	
  unneeded	
  directories	
  
*	
  building	
  'RHive_0.0-­‐4.tar.gz'	
  

RHive_0.0-4.tar.gz 라는 타르볼 파일이 생성되었음을 확인할 수 있으며, 이 패키지는
R에서 명령어나 함수를 이용해서 바로 설치할 수 있는 패키지의 최종 형태이다.
생성된 파일의 이름은 빌드한 RHive 패키지의 버전에 따라 숫자부분이 다를 것이며 이
튜토리얼의 시점에서의 RHive버전은 0.0-4이다.


RHive 패키지 설치
이제 생성한 RHive패키지 또는 만약 최종 형태의 RHive패키지를 직접 다운로드
받았다면 그 RHive패키지를 R에서 사용할 수 있도록 설치 한다.
아래와 같은 명령으로 설치할 수 있다.

R	
  CMD	
  INSTALL	
  ./RHive_0.0-­‐4.tar.gz	
  

특별한 에러 메세지가 없다면 설치가 완료된 것이다.
그러나 실패하는 많은 경우 아래와 같은 rJava와 Rserve 패키지들에 관련된 에러
메세지를 볼 수도 있다.

*	
   installing	
       to	
   library	
        '/usr/lib64/R/library'ERROR:	
  
dependencies	
   'rJava',	
   'Rserve'	
   are	
   not	
   available	
   for	
   package	
  
'RHive'*	
  removing	
  '/usr/lib64/R/library/RHive'	
  

이 에러메세지는 rJava와 Rserve라는 R 패키지가 현재 여러분이 사용하는 R에 설치되어
있지 않았음을 나타낸다.
RHive은 rJava와 Rserve 패키지에 의존성을 가지고 있기 때문에 이 패키지가 RHive를
설치하기 전에 이미 R에 설치되어 있어야 한다.


CRAN을 이용해서 RHive를 설치하는 경우에는 의존성이 있는 패키지들을 자동으로
찾아서 설치해 주지만 소스를 이용한 경우에는 자동으로 설치가 되지 않는다.
의존성이 있는 패키지를 수동으로 먼저 설치한 후 RHive 패키지 설치를 재시도한다.

#	
  R을	
  연다	
  
install.packages("rJava")	
  
install.packages("Rserve")	
  
#	
  그리고	
  RHive를	
  설치한다	
  
install.packages("./RHive_0.0-­‐4.tar.gz",	
  repos=NULL)	
  

에러 메세지가 출력되지 않는다면 설치가 완료된 것이다.


RHive package를 프로젝트 사이트에서 직접 받기
빌드된 패키지를 다운로드 받을 수 있는 URL은 아래와 같다.
https://github.com/nexr/RHive/downloads
위 페이지에서는 버전별로 바로 설치가 가능한 완성된 형태의 패키지를 제공한다.
이 튜토리얼에서는 아래에 표시된 버전을 받아서 설치할 것 이다. 여러분은 튜토리얼을
읽는 시점에서 가장 최신 버전을 다운로드 받을 것을 권장한다.
RHive_0.0-­‐4-­‐2011121201.tar.gz	
                               —	
         RHive_0.0-­‐4	
     SNAPSHOP	
  
(build2011121201)	
  -­‐	
  R	
  package	
  

여러분은 이 페이지에서 웹브라우저를 이용해서 파일을 다운로드 받아서
랩탑 또는 데스크탑에 설치하거나 원격서버에 FTP로 파일을 전송해서 설치할 수도 있다.
이 튜토리얼에서는 원격에 있는 리눅스서버에 설치하는 것을 예로 보여줄 것이다.
우선 터미널로 원격에 있는 RHive를 설치할 리눅스에 접속한다.
이 튜토리얼에서는 10.1.1.1 이라는 사설 네트워크 즉, 내부 네트워크에 안쪽에
위치하는 서버이다.

ssh	
  root@10.1.1.1	
  
mkdir	
  RHive_installable	
  
cd	
  RHive_installable	
  

이제 임시 디렉토리를 생성하고 wget을 이용해 파일을 다운로드 받는다.
다운로드 링크의 경로는 위에서 언급한 다운로드 사이트에서 링크 주소를 알아낼 수
있다.
wget 의 옵션에 --no-check-certificate를 적어 주는 것을 기억하자.

wget	
                                     -­‐-­‐no-­‐check-­‐certificate	
  
https://github.com/downloads/nexr/RHive/RHive_0.0-­‐4-­‐
2011121401.tar.gz	
  

다운로드가 완료되었다면 여러분은 아래와 같은 파일을 현재 디렉토리에서 찾을 수
있을 것이다.

#	
  ls	
  -­‐al	
  
total	
  3240	
  
drwxr-­‐xr-­‐x	
  2	
  root	
  root	
  	
  	
  	
  4096	
  Dec	
  11	
  18:00	
  .	
  
drwxr-­‐x-­‐-­‐-­‐	
  6	
  root	
  root	
  	
  	
  	
  4096	
  Dec	
  11	
  18:02	
  ..	
  
-­‐rw-­‐r-­‐-­‐r-­‐-­‐	
   1	
   root	
   root	
   3302766	
   Dec	
   12	
  	
   2011	
   RHive_0.0-­‐4-­‐
2011121401.tar.gz	
  

이 파일은 CRAN에 올리기 위해서 RHive 개발팀이 생성한 패키지이므로 별도의
빌드과정이 필요하지 않다.
R을 이용해서 바로 설치가 가능하다.

R	
  CMD	
  INSTALL	
  ./RHive_0.0-­‐4-­‐2011121201.tar.gz	
  
만약 앞서에서 봤던 것처럼 rJava와 Rserve와 관련된 의존성과 관련된 에러 메세지를
본다면
아래와 같이 R내부에서 그것들을 먼저 설치하고 다운로드 받은 것을 다시 설치한다.
앞서에서도 언급했지만 아래와 같은 방법으로 설치할 수 있다.

Open	
  R	
  
install.packages('rJava')	
  
install.packages('Rserve')	
  

에러 메세지가 없다면 설치가 완료된 것이다.


Git client를 사용하지 않고 source code 다운로드 하기
Git명령어나 클라이언트를 이용하지 않고도 Github에서 소스코드를 다운로드 받을 수
있다.
Github에서는 압축된 소스코드를 웹브라우저를 이용해서 다운로드 받을 수 있도록
지원한다.
아래와 같이 최신의 소스를 다운로드 할 수 있다.

wget	
                                     -­‐-­‐no-­‐check-­‐certificate	
  
https://github.com/nexr/RHive/zipball/master	
  -­‐O	
  RHive.zip	
  
unzip	
  RHive.zip	
  
cd	
  nexr-­‐RHive-­‐df7341c/	
  

소스를 컴파일하고 패키지를 빌드 하는 방법은 Git client를 이용해서 RHive 소스를
받은 경우와 동일하다.


R과 Rserve 설치하기
RHive를 사용하기 위해서는 Hadoop의 모든 job node에 Rserve가 설치되어 있어야
한다. Rserve는 R core 팀에서 제공하는 패키지이며 R을 서버의 형태로 작동시키는
패키지로 기본으로 제공되지 않으며 별도로 설치해야 한다.
RHive는 Hadoop의 conf에 있는 slaves를 참조해 각 job node에 실행된 Rserve의
위치를 확인한 후 접속하여 제어한다.
Rserve를 설치하는 것은 어렵지 않으며 다음 과정을 따라 Rserve를 설치한다.
이제부터 Hadoop name node와 job node에 모두 접속해서 각각 R과 Rserve를
설치한다.
단, name node에는 Rserve를 반드시 설치할 필요는 없다.
ssh	
  root@10.1.1.1	
  

만약 R이 설치되어 있지 않다면 R을 먼저 설치한다.
CentOs5에서는 다음과 같은 방법으로 쉽게 R 최신 버전을 설치할 수 있다.
R과 함께 R-devel를 함께 설치해서 Rserve가 설치될 때 필요한 header 파일들을
한꺼번에 설치해 주는 것을 기억하자.

rpm	
   -­‐Uvh	
   http://download.fedora.redhat.com/pub/epel/5/i386/epel-­‐
release-­‐5-­‐4.noarch.rpm	
  
	
  	
  
yum	
  install	
  R	
  
yum	
  install	
  R-­‐devel	
  

필요한 패키지가 설치되었으면 다음과 같은 명령으로 Rserve를 설치한다.

open	
  R	
  
install.packages("Rserve")	
  

만약 설치된 R이 libR.so라는 파일을 함께 가지고 있지 않은 경우에 Rserve를 설치할 때
다음과 같은 에러가 발생한다.

*	
  installing	
  *source*	
  package	
  'Rserve'	
  ...	
  
**	
  package	
  'Rserve'	
  successfully	
  unpacked	
  and	
  MD5	
  sums	
  checked	
  
checking	
  whether	
  to	
  compile	
  the	
  server...	
  yes	
  
configure:	
  error:	
  R	
  was	
  configured	
  without	
  -­‐-­‐enable-­‐R-­‐shlib	
  or	
  -­‐-­‐
enable-­‐R-­‐static-­‐lib	
  
	
  	
  
***	
    Rserve	
                                     requires	
                                      R	
     (shared	
                         or	
                static)	
  
library.	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ***	
  
***	
  Please	
  install	
  R	
  library	
  or	
  compile	
  R	
  with	
  either	
  -­‐-­‐enable-­‐R-­‐
shlib	
  	
  ***	
  
***	
                                                                or	
                                                                               -­‐-­‐enable-­‐R-­‐static-­‐lib	
  
support	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ***	
  
	
  	
  
	
  Alternatively	
   use	
   -­‐-­‐without-­‐server	
   if	
   you	
   wish	
   to	
   build	
   only	
  
Rserve	
  client.	
  
	
  	
  
 	
  
ERROR:	
  configuration	
  failed	
  for	
  package	
  'Rserve'	
  
*	
  removing	
  '/usr/lib64/R/library/Rserve'	
  

이를 해결하기 위해서는 R이 컴파일 될 때 --neable-R-shlib 또는 --enable-R-static-
lib로 컴파일 된 것이어야 하는데
대부분의 Linux에 제공되는 R패키지들은 이미 이 옵션들로 컴파일이 된 것이며 그렇기
때문에 사용자가 이 에러를 본다면 R을 소스를 다운로드하여 컴파일하면서 옵션을
포함하지 않았거나 다른 환경적인 문제일 가능성이 크다.
소스를 컴파일할 때 옵션을 빠뜨린 것이 아니고 Linux에서 제공하는 rpm이나 yum,
aptitude와 같은 패키징 시스템으로 설치하였음에도 불구하고 위와 같은 에러를 본다면
먼저 아래와 같은 명령으로 R이 library 파일이 있는 경로를 출력하는지 확인한다.

#	
  R	
  CMD	
  config	
  -­‐-­‐ldflags	
  
-­‐L/usr/lib64/R/lib	
  -­‐lR	
  

만약 위의 명령을 실행하던 중 아래와 같은 에러를 볼 수도 있다.

[root@i-­‐10-­‐24-­‐1-­‐34	
  Rserve]#	
  R	
  CMD	
  config	
  -­‐-­‐ldflags	
  
/usr/lib64/R/bin/config:	
  line	
  142:	
  make:	
  command	
  not	
  found	
  
/usr/lib64/R/bin/config:	
  line	
  143:	
  make:	
  command	
  not	
  found	
  

이것은 make 유틸리티가 없다는 것을 의미하며 Rserve를 설치하는 과정중에 컴파일
과정이 있는데 make 유틸리티가 없어 컴파일을 하지 못한 것이므로 make 를 설치해
주어야 한다.
아래와 같이 make를 설치한 후 "R CMD config --ldflags"를 실행해서 compile에
필요한 library path가 정상적으로 출력되는지 다시 확인해 본다.

yum	
  install	
  make	
  

그리고 libR.so가 출력된 경로에 있는지 확인해 본다.

#	
  ls	
  -­‐al	
  /usr/lib64/R/lib	
  
total	
  4560	
  
drwxr-­‐xr-­‐x	
  2	
  root	
  root	
  	
  	
  	
  4096	
  Dec	
  13	
  03:00	
  .	
  
drwxr-­‐xr-­‐x	
  7	
  root	
  root	
  	
  	
  	
  4096	
  Dec	
  13	
  03:35	
  ..	
  
-­‐rwxr-­‐xr-­‐x	
  1	
  root	
  root	
  2996480	
  Nov	
  	
  8	
  14:19	
  libR.so	
  
-­‐rwxr-­‐xr-­‐x	
  1	
  root	
  root	
  	
  177176	
  Nov	
  	
  8	
  14:19	
  libRblas.so	
  
-­‐rwxr-­‐xr-­‐x	
  1	
  root	
  root	
  1470264	
  Nov	
  	
  8	
  14:19	
  libRlapack.so	
  
libR.so가 존재하는 것을 확인할 수 있다. 이제 Rserve를 설치할 수 있는 준비가 다
되었으므로 Rserve를 설치를 재시도해서 완료한다.

open	
  R	
  
install.packages("Rserve")	
  

Rserve 실행하기

Rserv를 설치하는데 성공했다면 다음과 같이 Rserve를 대몬(DAEMON)으로
실행하여야 하는데 Rserve를 실행하기 전에 Rserve에 원격 접속을 허용할 수 있도록
설정파일을 고쳐야 한다.
다음과 같이 설정을 작업을 해준다.

#	
  Rserve를	
  실행할	
  서버에	
  모두 접속한다.	
  모든	
  Hadoop	
  job	
  node	
  
#	
  "/etc/Rserv.conf"	
  파일을	
  텍스트편집기로	
  오픈한다.	
  파일이	
  없다면	
  파
일을	
  만들어야	
  한다.	
  
#	
  'remote	
  enable'라는	
  내용을	
  파일에	
  넣는다.	
  
#	
  저장하고	
  닫는다.	
  

Rserv.conf는 이 외에도 여러가지 옵션을 설정할 수 있다. configuration에 대한 자세한
내용은 아래 URL의 내용을 참조하기 바란다.
http://www.rforge.net/Rserve/doc.html
이제 R을 종료하고 RHIVE_DATA 환경변수를 설정한다.
Rserve가 실행되는 서버들에는 RHIVE_DATA라는 환경변수가 설정되어야 하는데
RHIVE_DATA에는 RHive가 분산환경에서 작동할 때 임시로 사용할 디렉토리를
지정해야 한다.
RHIVE_DATA는 RHive UDF/UDAF나 Map/Reduce 관련 함수를 사용하지 않을
것이라면 설정하지 않아도 되지만 RHive의 모든 기능을 사용하기 위해서는 Rserve를
설치할 때 미리 설정해 두는 것을 권장한다.
RHIVE_DATA 환경변수에 사용할 디렉토리는 미리 생성하고 환경변수를 설정한다.

mkdir	
  /service/rhive_data	
  
	
  	
  
export	
  RHIVE_DATA="/service/rhive_data"	
  

그리고 텍스트 편집기를 이용해 /etc/profile이나 ~/.bash_profile, ~/.bashrc 파일에
넣어 두는것도 필요할 수 있다.
vi	
  /etc/profile	
  
	
  	
  
export	
  RHIVE_DATA='/service/rhive_data'	
  

이제 명령프롬프트에서 Rserve를 실행한다.

R	
  CMD	
  Rserve	
  

Rserve가 대먼(DAEMON)으로 실행되었는지 확인하려면 아래와 같은 방법으로 port를
listening하고 있는지 확인해 볼 수 있다.

#	
  netstat	
  -­‐nltp	
  
Active	
  Internet	
  connections	
  (only	
  servers)	
  
Proto	
   Recv-­‐Q	
   Send-­‐Q	
   Local	
   Address	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
                                                                                   Foreign	
  
Address	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  State	
  	
  	
  	
  	
  	
  	
  PID/Program	
  name	
  
tcp	
  	
  	
  	
  	
  	
  	
  	
                                                 0	
  	
  	
  	
  	
  	
                                                                      0	
  
0.0.0.0:6311	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0.0.0.0:*	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  LISTEN	
  	
  	
  
	
  	
  	
  25516/Rserve	
  
tcp	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  	
  	
  	
  	
  0	
  :::59873	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :::*	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  LISTEN	
  	
  	
  	
  	
  	
  13023/java	
  
tcp	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  	
  	
  	
  	
  0	
  :::50020	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :::*	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  LISTEN	
  	
  	
  	
  	
  	
  13023/java	
  
tcp	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  	
  	
  	
  	
  0	
  ::ffff:127.0.0.1:46056	
  	
  	
  	
  	
  	
  :::*	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  LISTEN	
  	
  	
  	
  	
  	
  13112/java	
  
tcp	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  	
  	
  	
  	
  0	
  :::50060	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :::*	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  LISTEN	
  	
  	
  	
  	
  	
  13112/java	
  
tcp	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  	
  	
  	
  	
  0	
  :::22	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :::*	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  LISTEN	
  	
  	
  	
  	
  	
  1109/sshd	
  
tcp	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  	
  	
  	
  	
  0	
  :::50010	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :::*	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  LISTEN	
  	
  	
  	
  	
  	
  13023/java	
  
tcp	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  	
  	
  	
  	
  0	
  :::50075	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :::*	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  LISTEN	
  	
  	
  	
  	
  	
  13023/java	
  

6311 port를 주시(listening)하고 있는 Rserve 대먼을 확인할 수 있다.
6311 port는 Rserve가 사용하는 default port이며 설정파일을 수정하여 변경할 수도
있다. 하지만 바꾸는 경우 혼동할 수 있으므로 특별한 이유가 없다면 바꾸지 않도록 한다.
또한 방화벽등의 보안 소프트웨어나 하드웨어등으로6311 port에 접근할 수 없도록
되어 있다면 적어도 Hadoop을 작동시키는 node들 즉, 내부 서버들 간에는 모두
6311port로 접속이 가능하도록 해야 한다.
이를 확인해 보기 위해서 RHive가 실행될 서버에서 접속이 되는지 먼저 확인해 볼
필요가 있다.
다음과 같이 RHive가 설치될 서버에 접속해서 그 서버에서 다른 서버들의 Rserve로
접속이 가능한지 telnet으로 확인해 본다

#	
  connect	
  to	
  the	
  RHive	
  server	
  
ssh	
  root@10.1.1.1	
  
#	
  telnet	
  10.1.1.2	
  6311	
  
Trying	
  10.1.1.2...	
  
Connected	
  to	
  10.1.1.2.	
  
Escape	
  character	
  is	
  '^]'.	
  
Rsrv0103QAP1	
  
	
  	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
#	
  telnet	
  10.1.1.3	
  6311	
  
Trying	
  10.1.1.3...	
  
Connected	
  to	
  10.1.1.3.	
  
Escape	
  character	
  is	
  '^]'.	
  
Rsrv0103QAP1	
  
	
  	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
#	
  telnet	
  10.1.1.4	
  6311	
  
Trying	
  10.1.1.4...	
  
Connected	
  to	
  10.1.1.4.	
  
Escape	
  character	
  is	
  '^]'.	
  
Rsrv0103QAP1	
  
	
  	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  


RHive실행을 위한 위한 환경변수 설정
RHive가 실행되기 위해서는 Hadoop과 Hive가 RHive가 설치된 서버, 랩탑 또는
데스크탑에 설치가 되어 있어야 하며 데스크탑에 있는Hadoop의 configuration도
설치된 Hadoop의 configuration과 일치해야 한다.
만약 RHive를 설치하는 서버 또는 랩탑에 Hadoop과 Hive가 설치되어 있지 않아면
구성되어 있는 것과 동일한 버전을 설치하고 Hadoop의 configuration을 복사해서
동일하게 맞추어 준다.
맞춘 후에 는 environment variable을 설정해야 한다.

export	
  HADOOP_HOME=/service/hadoop-­‐0.20.203.0	
  
export	
  HIVE_HOME=/service/hive-­‐0.7.1	
  

위의 내용에서 /service/hadoop-0.20.203.0는 Hadoop이 설치된 경로이며
/service/hive-0.7.1는 Hive가 설치된 경로이다.
이 내용을 /etc/profile등에 넣어 두는 것을 권장한다.
만약 RHive을 Hadoop namenode와 동일한 서버에 설치하고 namenode에 접속해서
R을 실행하고 RHive를 사용할 것이라면 이 설정이 필요하지 않다.
그러나 RHive가 설치될 서버가 Hadoop namenode와 같은 서버가 아니거나
자신의 랩탑 또는 데스크탑이라면 "/service/hadoop-0.20.203.0/conf"의 내용을
반드시 RHive를사용할 Hadoop 클러스터의 configuration과 동일하게 맞추어 주는
것을 해야 한다.


RHive 예제 실행하기
앞서 말했듯이 RHive를 작동시키기 위해서는 R을 실행하기 전에 환경변수를 설정해야
한다.
좀더 정확하게 말하자면 RHive 초기화(initialize)하기전에 RHive에서 필요로 하는
환경변수가 모두 설정되어 있어야 한다.
만약 R을 실행하기 전에 랩탑 또는 서버의 환경변수에 HIVE_HOME과
HADOOP_HOME을 세팅하는 것을 잊어버렸거나 또는 설정하는 방법에 익숙하지
않거나
여러가지 다른 버전을 바꿔 가면서 사용하기 위해서 일부러 그 과정을 생략했다면
아래와 같이 R을 실행한 후에도 지정해 줄 수 있다.

Open	
  R	
  
Sys.setenv(HIVE_HOME="/service/hive-­‐0.7.1")	
  
Sys.setenv(HADOOP_HOME="/service/hadoop-­‐0.20.203.0")	
  
library(RHive)	
  

앞서의 과정에 이미 /etc/profile등을 수정하여 RHive에서 필요로 하는 HIVE_HOME과
HADOOP_HOME 환경변수를 정의했고 R을 실행하기 전에 적용되었다면 R에서 위의
코드는 실행하지 않고 생략할 수 있다.
하지만 그렇지 않다면 RHive를 사용하기 위해서 위 코드들 R을 실행할 때 매번 해
주어야 한다는 단점이 있다.

RHive 환경변수 확인하기 및 세팅하기

RHIVE_HOME과 HADOOP_HOME이 정확하게 설정되어 있지 않다면 RHive는
정상작동을 하지 않는다.
현재 위의 변수들에 지정된 경로(path)를 R에서 쉽게 확인하기 위해서 rhive.env()라는
펑션을 이용해서 현재 환경변수가 제대로 세팅되어 있는지 확인할 수 있다.
만약 Hive Home Directory나 Hadoop Home Directory가 제대로 출력되어 보이지
않는다면 세팅을 다시 확인해야 할 것이다.

>	
  rhive.env()	
  
Hive	
  Home	
  Directory	
  :	
  /mnt/srv/hive-­‐0.8.1	
  
Hadoop	
  Home	
  Directory	
  :	
  /mnt/srv/hadoop-­‐0.20.203.0	
  
Default	
  RServe	
  List	
  
node1	
  node2	
  node3	
  
Disconnected	
  HiveServer	
  and	
  HDFS	
  

RHive connect 실행

RHive를 loading한 후에는 작업을 하기 전에 rhive.connect()펑션을 호출해서 Hive
server와의 connection을 만들어야 한다.
connection을 만들지 않으면 RHive 함수들은 작동하지 않는다.

>	
  rhive.connect()	
  
SLF4J:	
  Class	
  path	
  contains	
  multiple	
  SLF4J	
  bindings.	
  
SLF4J:	
   Found	
   binding	
   in	
   [jar:file:/service/hive-­‐0.7.1/lib/slf4j-­‐
log4j12-­‐1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]	
  
SLF4J:	
   Found	
    binding	
   in	
   [jar:file:/service/hadoop-­‐
0.20.203.0/lib/slf4j-­‐log4j12-­‐
1.4.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]	
  
SLF4J:	
   See	
   http://www.slf4j.org/codes.html#multiple_bindings	
   for	
  
an	
  explanation.	
  

rhive.connect() 함수는 connection에 대한 return 값을 가지고 있지만 return 값을
처리하지 않는 경우 default로 내장된 변수 connection을 유지하며 따로 return값을
다룰 필요 없이 내장 변수를 이용해서 이미 연결된 connection을 계속 사용한다.
여러개 Hive에 동시에 접속하는 경우가 아니라면 return값을 따로 다룰 필요가 없으며
그런 경우가 발생한다면 좀더 구체적인 사용법을 위해 RHive 도움말을 참조하는 것이
좋다.

HDFS에 있는 파일 확인하기

rhive.connect() 함수를 이용해서 최초의Hive connection을 만들 때 RHive가 몇 줄의
복잡한 메세지를 출력하는 것을 확인할 수 있다. 이것들은 무시해도 상관 없다.
이제 rhive.hdfs.* 함수들을 이용하여 Hadoop의 HDFS를 다룰 수 있으며 이것들은
"hadoop fs"가 지원하는 명령들과 대응된다.
만약 Hadoop에 익숙하지 않은 사용자라면 “hadoop fs” 명령들은 HDFS라는
분산파일시스템을 이용해 Linux 명령어와 유사한 인터페이스로 파일을 관리하는
명령어라는 것만을 이해해도 충분하다.
HDFS상의 파일 목록을 확인하기 위해서는 rhive.hdfs.ls() 함수를 이용하여 확인할 수
있다.

>	
  rhive.hdfs.ls("/")	
  
	
  	
  permission	
                      owner	
  	
  	
  	
  	
  	
          group	
  	
  	
            length	
  	
  	
  	
  	
  	
         modify-­‐
time	
  	
  	
  	
  	
  	
  	
  	
  file	
  
1	
  	
   rwxr-­‐xr-­‐x	
  	
                       root	
                supergroup	
  	
  	
  	
  	
  	
  	
  	
          0	
            2011-­‐12-­‐07	
  
14:27	
  	
  	
  	
  /airline	
  
2	
  	
   rwxr-­‐xr-­‐x	
  	
   root	
   supergroup	
  	
  	
  	
  	
  	
  	
  	
   0	
   2011-­‐12-­‐07	
   13:16	
  
/benchmarks	
  
3	
  	
   rw-­‐r-­‐-­‐r-­‐-­‐	
  	
                 root	
                supergroup	
                     11186419	
                      2011-­‐12-­‐06	
  
03:59	
  	
  	
  /messages	
  
4	
  	
   rwxr-­‐xr-­‐x	
  	
                       root	
                supergroup	
  	
  	
  	
  	
  	
  	
  	
          0	
            2011-­‐12-­‐07	
  
22:05	
  	
  	
  	
  	
  	
  	
  	
  /mnt	
  
5	
  	
   rwxr-­‐xr-­‐x	
  	
                       root	
                supergroup	
  	
  	
  	
  	
  	
  	
  	
          0	
            2011-­‐12-­‐07	
  
22:15	
  	
  	
  	
  	
  	
  /rhive	
  
6	
  	
   rwxr-­‐xr-­‐x	
  	
                       root	
                supergroup	
  	
  	
  	
  	
  	
  	
  	
          0	
            2011-­‐12-­‐07	
  
20:19	
  	
  	
  	
  	
  	
  	
  	
  /tmp	
  

Hive의 테이블 목록 확인하기

또 rhive.list.tables() 함수를 이용해서 Hive에 등록된 table의 목록을 확인할 수 있다.
Hive에 익숙하지 않은 사용자라면 Hive는 일반적인 SQL 부류의 서버들과 유사하게
작동한다는 점을 이해하는 것으로 충분할 것이며 만약 SQL에 대해서 잘 모른다해도
크게 문제가 되지 않지만 Hive와 RHive 기능을 활용하기 위해 따로 학습을 할 것을
권장한다.
Hive를 설치하고 아무런 테이블로 생성하지 않았다면 아래와 같은 결과를 볼 것이다.

>	
  rhive.list.tables()	
  
[1]	
  tab_name	
  
<0	
  rows>	
  (or	
  0-­‐length	
  row.names)	
  

Hive의 테이블 생성하기

간단한 RHive명령으로 R의 data frame을 Hive의 테이블로 저장할 수 있다.

tablename	
  <-­‐	
  rhive.write.table(USArrests)	
  

USArrests는 R을 설치하면 기본으로 제공되는 data set이며 RHive는 인수로 주어진
data.frame의 객체이름을 Hive table name으로 취급하여Hive에 하나의 table로
저장한다.

Table의 description 확인하기

그리고 rhive.list.desc() 함수를 이용해 Hive에 저장되어 있는 table의 description을
확인할 수 있다. 이것은 SQL의 “DESC tablename” 명령과 같은 것이다.

>	
  rhive.desc.table("USArrests")	
  
	
  	
  col_name	
  data_type	
  comment	
  
1	
  	
  rowname	
  	
  	
  	
  string	
  
2	
  	
  	
  murder	
  	
  	
  	
  double	
  
3	
  	
  assault	
  	
  	
  	
  	
  	
  	
  int	
  
4	
  urbanpop	
  	
  	
  	
  	
  	
  	
  int	
  
5	
  	
  	
  	
  	
  rape	
  	
  	
  	
  double	
  

참고로 Hive의 table name은 대소문자를 구문하지 않는다.

Hive의 테이블 생성하기2

MASS package에 있는 다른 data들이나 또는 CSV 파일등을 로딩한 데이터를 Hive로
저장하는 것이 가능하다.

library(MASS)	
  
tablename	
  <-­‐	
  rhive.write.table(Aids2)	
  
rhive.desc.table(tablename)	
  
rhive.load.table(tablename)	
  

이 방법은 비교적 작은 크기의 데이터를 Hive에 업로드 하는데 유용한 것이며 만약
수GiB 이상의 데이터를 Hive에 저장하려고 한다면, 먼저 rhive.hdfs.* 함수들을
이용하여HDFS에 파일을 저장한 후 Hive에서 external table을 생성하여 사용하는
방법을 추천한다.
RHive는 R문법으로 아직 용량이 큰 데이터를 자동으로 업로드하거나 저장하는 기능을
제공하지 않으며 기능추가를 고려중이다.

간단한 SQL문 실행하기

rhive.query() 함수를 이용하여 SQL을 Hive에 전달할 수 있다.
앞에서 생성한 usarrests라는 이름을 가진 Hive table의 전체 레코드수를 확인하는
간단한 SQL문을 실행해 보자.

rhive.query("SELECT	
  COUNT(*)	
  FROM	
  usarrests")	
  
	
  	
  X_c0	
  
1	
  	
  	
  50	
  

위에서 실행한 SQL 구문은 Hive와 Hadoop을 이용해 Map/Reduce 과정을 수행한
것으로 SQL의 결과를 정상적으로 확인하였다면, RHive와 Hadoop 및 Hive 환경설정이
모두 제대로 되었음을 의미하며 Hadoop이 Map/Reduce를 통해서 입력한 데이터의
카운트를 계산해서 출력하였음을 의미한다.
주의할 점은 이 예제에서는 아주 작은 데이터를 사용하였기 때문에 분산처리플랫폼인
Hadoop과 Hive의 성능을 충분히 활용했다고 할 수는 없으며, usarrests와 같이 단일
서버 또는 랩탑에 장착된 메모리 한도내에 로딩될 수 있는 작은 크기의 데이터는
RHive를 이용하지 않고 R만을 이용해서 직접 처리할 수 있는 크기이다.
다시 말하면 이 과정은 단지 환경설정이 완료된 것과 RHive가 기본적인 작동을
정상으로 하는지 확인해 본 것이다.
Hadoop과 Hive를 통해 RHive의 기능을 충분히 활용하고자 한다면 최소한 수GiB에서
수십GiB의 데이터를 대상으로 사용하는 것이 바람직하다.

문의 또는 도움이 필요할 때

RHive에 대한 각 함수의 설명 및 자세한 내용은 각각의 튜토리얼 및 도움말을 참조하기
바란다. 버그를 발견했거나 도움말이 난해하고 RHive를 사용하는데 어려움이 있다면
github의 RHive 사이트에 버그리포팅을 하거나 아래의 e-mail주소로 RHive 개발팀에
문의할 수 있다.
문의와 요청, 버그리포트에 대해서 RHive개발팀은 항상 열려 있으며 기꺼히 협조할
것이다.
e-mail: rhive@nexr.com

Weitere ähnliche Inhalte

Was ist angesagt?

Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리
Keon Ahn
 

Was ist angesagt? (19)

RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수
RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수
RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수
 
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQL
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
 
Dockerfile과 Bash
Dockerfile과 BashDockerfile과 Bash
Dockerfile과 Bash
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집
 
Db프로그래밍 환경 설정(131062 장택순)
Db프로그래밍 환경 설정(131062 장택순)Db프로그래밍 환경 설정(131062 장택순)
Db프로그래밍 환경 설정(131062 장택순)
 
Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
 
(참고) Elk stack 설치 및 kafka
(참고) Elk stack 설치 및 kafka(참고) Elk stack 설치 및 kafka
(참고) Elk stack 설치 및 kafka
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
 
Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
[오픈소스컨설팅]Nginx jboss 연동가이드__v1
[오픈소스컨설팅]Nginx jboss 연동가이드__v1[오픈소스컨설팅]Nginx jboss 연동가이드__v1
[오픈소스컨설팅]Nginx jboss 연동가이드__v1
 

Andere mochten auch

Andere mochten auch (15)

RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수
RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수
RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수
 
RHive tutorial 5: RHive 튜토리얼 5 - apply 함수와 맵리듀스
RHive tutorial 5: RHive 튜토리얼 5 - apply 함수와 맵리듀스RHive tutorial 5: RHive 튜토리얼 5 - apply 함수와 맵리듀스
RHive tutorial 5: RHive 튜토리얼 5 - apply 함수와 맵리듀스
 
RHive tutorial 3: RHive 튜토리얼 3 - HDFS 함수
RHive tutorial 3: RHive 튜토리얼 3 - HDFS 함수RHive tutorial 3: RHive 튜토리얼 3 - HDFS 함수
RHive tutorial 3: RHive 튜토리얼 3 - HDFS 함수
 
RHive tutorial - Installation
RHive tutorial - InstallationRHive tutorial - Installation
RHive tutorial - Installation
 
R hive tutorial - apply functions and map reduce
R hive tutorial - apply functions and map reduceR hive tutorial - apply functions and map reduce
R hive tutorial - apply functions and map reduce
 
RHive tutorials - Basic functions
RHive tutorials - Basic functionsRHive tutorials - Basic functions
RHive tutorials - Basic functions
 
High Performance Predictive Analytics in R and Hadoop
High Performance Predictive Analytics in R and HadoopHigh Performance Predictive Analytics in R and Hadoop
High Performance Predictive Analytics in R and Hadoop
 
한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용
 
Big Data Analysis With RHadoop
Big Data Analysis With RHadoopBig Data Analysis With RHadoop
Big Data Analysis With RHadoop
 
Python Sympy 모듈 이해하기
Python Sympy 모듈 이해하기Python Sympy 모듈 이해하기
Python Sympy 모듈 이해하기
 
Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석
 
Hive 입문 발표 자료
Hive 입문 발표 자료Hive 입문 발표 자료
Hive 입문 발표 자료
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법
 
파이썬 데이터 분석 3종세트
파이썬 데이터 분석 3종세트파이썬 데이터 분석 3종세트
파이썬 데이터 분석 3종세트
 

Ähnlich wie RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정

(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
negabaro
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
NAVER D2
 
ReaR 를 이용하여 Linux OS Backup 설정방법.pptx
ReaR 를 이용하여 Linux OS Backup 설정방법.pptxReaR 를 이용하여 Linux OS Backup 설정방법.pptx
ReaR 를 이용하여 Linux OS Backup 설정방법.pptx
ssusercbaa33
 

Ähnlich wie RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정 (20)

리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호
 
Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment Setting
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
 
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptx
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
 
하둡 설치(의사분산모드)
하둡 설치(의사분산모드)하둡 설치(의사분산모드)
하둡 설치(의사분산모드)
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기
 
ReaR 를 이용하여 Linux OS Backup 설정방법.pptx
ReaR 를 이용하여 Linux OS Backup 설정방법.pptxReaR 를 이용하여 Linux OS Backup 설정방법.pptx
ReaR 를 이용하여 Linux OS Backup 설정방법.pptx
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화
 
Red Hat OpenStack 17 저자직강+스터디그룹_5주차
Red Hat OpenStack 17 저자직강+스터디그룹_5주차Red Hat OpenStack 17 저자직강+스터디그룹_5주차
Red Hat OpenStack 17 저자직강+스터디그룹_5주차
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
 
Gradle & IntelliJ & Vert.x
Gradle & IntelliJ & Vert.xGradle & IntelliJ & Vert.x
Gradle & IntelliJ & Vert.x
 

Mehr von Aiden Seonghak Hong (6)

IoT and Big data with R
IoT and Big data with RIoT and Big data with R
IoT and Big data with R
 
R hive tutorial supplement 3 - Rstudio-server setup for rhive
R hive tutorial supplement 3 - Rstudio-server setup for rhiveR hive tutorial supplement 3 - Rstudio-server setup for rhive
R hive tutorial supplement 3 - Rstudio-server setup for rhive
 
R hive tutorial supplement 2 - Installing Hive
R hive tutorial supplement 2 - Installing HiveR hive tutorial supplement 2 - Installing Hive
R hive tutorial supplement 2 - Installing Hive
 
R hive tutorial supplement 1 - Installing Hadoop
R hive tutorial supplement 1 - Installing HadoopR hive tutorial supplement 1 - Installing Hadoop
R hive tutorial supplement 1 - Installing Hadoop
 
R hive tutorial - udf, udaf, udtf functions
R hive tutorial - udf, udaf, udtf functionsR hive tutorial - udf, udaf, udtf functions
R hive tutorial - udf, udaf, udtf functions
 
RHive tutorial - HDFS functions
RHive tutorial - HDFS functionsRHive tutorial - HDFS functions
RHive tutorial - HDFS functions
 

Kürzlich hochgeladen

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
Wonjun Hwang
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
Wonjun Hwang
 

Kürzlich hochgeladen (6)

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 

RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정

  • 1. RHive 튜토리얼 – 설치 및 설정 RHive 설치 방법들 RHive를 설치하기 위해 소스를 얻으려면 아래의 3가지 방법을 이용할 수 있다. • R을 실행한 뒤 install.packages() 함수를 사용해서CRAN으로부터 설치 • RHive 프로젝트 홈페이지에서 빌드된 R 패키지를 다운로드 받은 후 R CMD명령어를 를 이용해서 설치 • Github에서 source를 다운로드 받아서 build한 후 설치 CRAN에서 배포하는 버전을 포함한 모든 RHive의 패키지와 소스는 RHive의 공식 개발 사이트에서 찾을 수 있다. RHive의 Github repository는 경로: https://github.com/nexr/RHive 튜토리얼의 내용 이 튜토리얼에서는 Hadoop과 Hive가 설치되어 있고 이미 작동하고 있는 환경에 R과 RHive를 추가로 설치하여 작동할 수 있게 만드는 것을 설명할 것이다. 튜토리얼에서 사용한 환경 이 튜토리얼에서는 RHive을 CentOs5 Linux 64bit 버전에 설치하는 것을 기준으로 작업하였다. 하지만 다른 Linux 배포판이나 Mac OS X나 FreeBSD등에서 설치하는 방법은 크게 차이가 없을 것으로 예상하며, 단지 Linux 배포판별로 git이나 ant와 같은 패키지를 설치하는 방법이 배포판이 사용하는 패키징시스템이나 설치방법의 차이로 다를 수 있다. Windows에서 RHive를 설치해서 사용하는 방법은 이 튜토리얼에서는 소개하지 않으며 별도의 튜토리얼로 제공할 것이다. 추가로 Windows에서 RHive를 사용하려고 한다면 RStudio-server를 이용한 원격접속을 권장한다. Hadoop과 Hive 구성 환경 이 튜토리얼에서 사용한 서버들의 IP 주소와 그 서버들에 각각 설치되어 작동하고 있는 소프트웨어 및 콤포넌트 및 역할들은 다음과 같다.
  • 2. 10.1.1.1 - Hadoop namenode, Hive server, R, RHive 10.1.1.[2-4] - Hadoop job node, DFS node, Rserve node 즉, 이 튜토리얼에서는 다음과 같은 것이 R과 RHive설치전에 이미 구성되어 있다는 것을 전제한다. 단, IP주소는 사용자의 환경에 따라 다를 수 있다. • 10.1.1.1주소를 가진 서버에 Hadoop namenode가 설치되어 있고 Hive가 설치되어 있으며 Hive server가 작동하고 있다고 가정한다. • 10.1.1.2, 10.1.1.3, 10.1.1.4 주소를 가진 서버들에는 Hadoop DFS node와 Hadoop Job node가 설정되어 있으며 작동하고 있다고 가정한다. • 위의 구성이 잘 작동하므로 Hadoop과 Hive가 정상 작동하고 있다고 가정한다. 만약 Hadoop과 Hive의 설치 과정부터 필요하다면 설치를 위해서 Hadoop과 Hive의 공식 사이트를 비롯한 다른 reference를 참조하여 설치하기 바란다. 참조할 사항 원칙적으로 Hadoop namenode에는 namenode 기능 외의 다른 것들을 설치하거나 실행하지 않는 것이 좋으며 그렇게 설정하는 것이 권장되지만 학습또는 빠른 작업을 위해 소규모의 클러스터를 셋업하기 위한 목적으로 이 튜토리얼에서는 편의상 Hadoop namenode에 Hive server와 R, RHive를 모두 설치하였다. 더 큰 규모와 여러 사용자가 동시에 사용해야 하는 안정된 환경을 구성하려고 한다면 이 튜토리얼의 내용을 참조해서 충분히 알맞게 설정을 변경할 수 있을것으로 예상한다. Git을 이용해서 소스를 다운로드 받아 설치하는 방법 RHive는 Github으로 소스코드 관리를 하고 있다. Github에서 source code를 다운로드 해서 설치하는 것은 많이 번거롭지 않으며 가장 최근에 변경된 소스를 기반으로 패키지를 그대로 빌드해서 사용할 수 있다는 장점이 있다. 현재 자신이 사용하고 있는 RHive 패키지에 어떤 문제가 발견되었고 최신 소스코드에 수정된 내용이 업데이트 되었다는 것을 확인했고 바로 적용해서 사용하려고 한다면 Github에서 source code를 직접 받아서 스스로 RHive를 빌드해서 사용하는 것이 가장 빠른 방법이다. RHive의 소스코드를 받을 수 있는 Github repository 경로는 아래와 같다. git://github.com/nexr/RHive.git Git을 사용하는데 익숙한 사용자라면 Github repository의 경로를 아는 것 만으로도 RHive 패키지를 빌드할 수 있을 것이다. 하지만 여러분이 Github을 사용하는데 익숙하지 않다면 이 튜토리얼을 보고 간단하게 빌드하는 방법을 배울 것이다. 여러분이 사용하는 OS가 Linux나 Mac OS X같은 것들이라면 terminal을 열고 서버에서 작업할 것이라면 작업할 원격 서버로 SSH등을 이용해서 접속한다.
  • 3. 이 튜토리얼에서는 다소 위험하지만 작업 계정 root계정을 바로 사용할 것인데 만약 사용자의 환경이 root계정으로 접속하지 못하는 환경이거나 root의 패쓰워드를 알아 낼 수 없다면 sudo를 설치한 후 root권한을 가진 관리자에게 요청하여sudoer 권환을 획득해서 sudo 명령어와 함께 작업할 필요가 있다. 이 튜토리얼에서는 root계정을 그대로 사용할 것이므로 sudo 명령어를 사용하지 않을 것이므로 sudo 명령을 이용하는 사용자는 Linux 명령의 앞에 sudo를 입력해야 하는 것을 잊지 않아야 한다. 터미널 열기 또는 접속하기 SSH터미널 장을 열거나 터미널을 열고 ssh 명령어를 이용해 작업할 서버에 접속한다 ssh  root@10.1.1.1   여기서 10.1.1.1은 RHive가 설치될 서버이며 Hadoop의 namenode이기도 하다. 소스 다운로드 Github에서 RHive소스코드를 다운로드하기 위해서 임시 디렉토리를 만들고 RHive의 소스를 git명령으로 다운로드 받는다. mkdir  RHive_source   cd  RHive_source   git  clone  git://github.com/nexr/RHive.git   #  if  you  succeed,  the  name  "RHive'  is  made  automatically   cd  RHive   그리고 자동으로 생성된 하위 디렉토리인 RHive로 이동한다. 만약 git명령이 동작하지 않아서clone 을 하지 못한다면 아래의 명령으로 git을 설치하고 위의 과정을 다시 진행해야 한다. (CentOs5 기준) yum  install  git   git을 설치할 수 없다면 http://github.com 방문하여 git client를 설치하고 앞서 설명한 clone을 수행하도록 한다. ant를 이용해서 jar를 빌드하기 RHive를 R에서 사용가능한 R package로 만들기 전에 선행작업으로 확장자가 jar인 몇개의 java로 작성된 내부 모듈이 먼저 빌드되어야 한다. R의 패키징 시스템은 Java의
  • 4. 소스를 컴파일해서 jar파일로 묶어 주는 작업을 해주지 않기 때문이다. CRAN에서 다운로드 받거나 R에서 바로 설치가 가능한 패키지의 최종본을 다운로드 받는 경우에는 jar파일들이 이미 포함되어 있어 이 과정이 필요없지만 소스를 받아서 직접 빌드하는 경우에는 이 과정을 직접 해야 한다. 다음과 같이 하여 ant로 RHive 패키지에 포함될 jar를 컴파일한다. ant  build   만약 ant가 없다면 역시 ant를 먼저 Linux에 설치한 후 위의 과정을 진행해야 한다. 또한 당연한 것이지만 java도 설치가 되어 있어야 한다. ant는 아래의 명령어로 설치할 수 있다. yum  install  ant   명령이 실행되고 나면 다음과 유사한 결과를 볼 수 있다.
  • 5. 실행 후 "BUILD SUCCESSFUL" 메세지를 본다면 빌드가 성공한 것을 알 수 있으며 만약 에러 메세지와 함께 빌드에 실패한 것을 확인했다면 RHive 개발팀에 바로 문의하는 것이 해결할 수 있는 가장 빠른 방법이다. 빌드의 실패한 이유는 소스 코드에 오류가 있거나 환경적인 문제가 대부분일 것이다. RHive 패키지 빌드하기 앞서 과정을 통해서 ant로 jar를 빌드하고 난 후에 RHive를 R package의 배포본이 되도록 만들어야 한다. 즉, 이것은 CRAN에서 제공하는 패키지를 만드는 작업과 완전하게 동일하지는 않지만 거의 같은 작업이며 이 작업을 한 후에 R에 RHive를 설치할 수 있다. 현재 경로가 jar를 빌드했던 디렉토리와 동일한지 확인하고 아래와 같이 RHive 패키지를 빌드한다. #  antBuildfile:  build.xml   compile:         [mkdir]   Created   dir:   /mnt/srv/RHive_package/RHive/build/classes         [javac]   Compiling   5   source   files   to   /mnt/srv/RHive_package/RHive/build/classes         [unjar]   Expanding:   /mnt/srv/RHive_package/RHive/RHive/inst/javasrc/lib/REngine.jar   into   /mnt/srv/RHive_package/RHive/build/classes         [unjar]   Expanding:   /mnt/srv/RHive_package/RHive/RHive/inst/javasrc/lib/RserveEngine.j ar  into  /mnt/srv/RHive_package/RHive/build/classes   jar:             [jar]   Building   jar:   /mnt/srv/RHive_package/RHive/rhive_udf.jar   cran:          [copy]   Copying   1   file   to   /mnt/srv/RHive_package/RHive/RHive/inst/java          [copy]  Copying  13   files   to   /mnt/srv/RHive_package/RHive/build/CRAN/rhive/inst          [copy]   Copying   9   files   to   /mnt/srv/RHive_package/RHive/build/CRAN/rhive/man          [copy]   Copying   3   files   to   /mnt/srv/RHive_package/RHive/build/CRAN/rhive/R          [copy]   Copying   1  file  to  /mnt/srv/RHive_package/RHive/build/CRAN/rhive          [copy]   Copying   1   file   to   /mnt/srv/RHive_package/RHive/build/CRAN/rhive      [delete]   Deleting:   /mnt/srv/RHive_package/RHive/rhive_udf.jar   main:   BUILD  SUCCESSFUL  
  • 6. "R CMD build"의 대소문자를 주의해야 하며 디렉토리내의 파일을 build하기 전에 확인하는 이유는 "R CMD build"에 인자로 주어지는 경로내에 DESCRIPTION이라는 R패키지를 생성하는데 필요한 필수 정의파일이 존재하는 경로여야 하기 때문이다. 아래와 같은 명령으로 간단하게 만들 수 있다. #  pwd   /root/RHive_package/RHive   #  ls  -­‐l   total  76   -­‐rw-­‐r-­‐-­‐r-­‐-­‐  1  root  root    1413  Dec  11  16:41  ChangeLog   -­‐rw-­‐r-­‐-­‐r-­‐-­‐  1  root  root    2068  Dec  11  16:41  INSTALL   -­‐rw-­‐r-­‐-­‐r-­‐-­‐  1  root  root    2444  Dec  11  16:41  README   drwxr-­‐xr-­‐x  5  root  root    4096  Dec  11  16:41  RHive   drwxr-­‐xr-­‐x  4  root  root    4096  Dec  11  16:42  build   -­‐rw-­‐r-­‐-­‐r-­‐-­‐  1  root  root    2999  Dec  11  16:41  build.xml   -­‐rw-­‐r-­‐-­‐r-­‐-­‐  1  root  root  35244  Dec  11  16:41  rhive-­‐logo.jpg   -­‐rw-­‐r-­‐-­‐r-­‐-­‐  1  root  root  12732  Dec  11  16:41  rhive-­‐logo.png   #  R  CMD  build  ./RHive   빌드가 정상적으로 진행되었다면 아래와 유사한 결과 메세지를 볼 수 있다. *  checking  for  file  './RHive/DESCRIPTION'  ...  OK   *  preparing  'RHive':   *  checking  DESCRIPTION  meta-­‐information  ...  OK   *  checking  for  LF  line-­‐endings  in  source  and  make  files   *  checking  for  empty  or  unneeded  directories   *  building  'RHive_0.0-­‐4.tar.gz'   RHive_0.0-4.tar.gz 라는 타르볼 파일이 생성되었음을 확인할 수 있으며, 이 패키지는 R에서 명령어나 함수를 이용해서 바로 설치할 수 있는 패키지의 최종 형태이다. 생성된 파일의 이름은 빌드한 RHive 패키지의 버전에 따라 숫자부분이 다를 것이며 이 튜토리얼의 시점에서의 RHive버전은 0.0-4이다. RHive 패키지 설치
  • 7. 이제 생성한 RHive패키지 또는 만약 최종 형태의 RHive패키지를 직접 다운로드 받았다면 그 RHive패키지를 R에서 사용할 수 있도록 설치 한다. 아래와 같은 명령으로 설치할 수 있다. R  CMD  INSTALL  ./RHive_0.0-­‐4.tar.gz   특별한 에러 메세지가 없다면 설치가 완료된 것이다. 그러나 실패하는 많은 경우 아래와 같은 rJava와 Rserve 패키지들에 관련된 에러 메세지를 볼 수도 있다. *   installing   to   library   '/usr/lib64/R/library'ERROR:   dependencies   'rJava',   'Rserve'   are   not   available   for   package   'RHive'*  removing  '/usr/lib64/R/library/RHive'   이 에러메세지는 rJava와 Rserve라는 R 패키지가 현재 여러분이 사용하는 R에 설치되어 있지 않았음을 나타낸다. RHive은 rJava와 Rserve 패키지에 의존성을 가지고 있기 때문에 이 패키지가 RHive를 설치하기 전에 이미 R에 설치되어 있어야 한다. CRAN을 이용해서 RHive를 설치하는 경우에는 의존성이 있는 패키지들을 자동으로 찾아서 설치해 주지만 소스를 이용한 경우에는 자동으로 설치가 되지 않는다. 의존성이 있는 패키지를 수동으로 먼저 설치한 후 RHive 패키지 설치를 재시도한다. #  R을  연다   install.packages("rJava")   install.packages("Rserve")   #  그리고  RHive를  설치한다   install.packages("./RHive_0.0-­‐4.tar.gz",  repos=NULL)   에러 메세지가 출력되지 않는다면 설치가 완료된 것이다. RHive package를 프로젝트 사이트에서 직접 받기 빌드된 패키지를 다운로드 받을 수 있는 URL은 아래와 같다. https://github.com/nexr/RHive/downloads 위 페이지에서는 버전별로 바로 설치가 가능한 완성된 형태의 패키지를 제공한다. 이 튜토리얼에서는 아래에 표시된 버전을 받아서 설치할 것 이다. 여러분은 튜토리얼을 읽는 시점에서 가장 최신 버전을 다운로드 받을 것을 권장한다.
  • 8. RHive_0.0-­‐4-­‐2011121201.tar.gz   —   RHive_0.0-­‐4   SNAPSHOP   (build2011121201)  -­‐  R  package   여러분은 이 페이지에서 웹브라우저를 이용해서 파일을 다운로드 받아서 랩탑 또는 데스크탑에 설치하거나 원격서버에 FTP로 파일을 전송해서 설치할 수도 있다. 이 튜토리얼에서는 원격에 있는 리눅스서버에 설치하는 것을 예로 보여줄 것이다. 우선 터미널로 원격에 있는 RHive를 설치할 리눅스에 접속한다. 이 튜토리얼에서는 10.1.1.1 이라는 사설 네트워크 즉, 내부 네트워크에 안쪽에 위치하는 서버이다. ssh  root@10.1.1.1   mkdir  RHive_installable   cd  RHive_installable   이제 임시 디렉토리를 생성하고 wget을 이용해 파일을 다운로드 받는다. 다운로드 링크의 경로는 위에서 언급한 다운로드 사이트에서 링크 주소를 알아낼 수 있다. wget 의 옵션에 --no-check-certificate를 적어 주는 것을 기억하자. wget   -­‐-­‐no-­‐check-­‐certificate   https://github.com/downloads/nexr/RHive/RHive_0.0-­‐4-­‐ 2011121401.tar.gz   다운로드가 완료되었다면 여러분은 아래와 같은 파일을 현재 디렉토리에서 찾을 수 있을 것이다. #  ls  -­‐al   total  3240   drwxr-­‐xr-­‐x  2  root  root        4096  Dec  11  18:00  .   drwxr-­‐x-­‐-­‐-­‐  6  root  root        4096  Dec  11  18:02  ..   -­‐rw-­‐r-­‐-­‐r-­‐-­‐   1   root   root   3302766   Dec   12     2011   RHive_0.0-­‐4-­‐ 2011121401.tar.gz   이 파일은 CRAN에 올리기 위해서 RHive 개발팀이 생성한 패키지이므로 별도의 빌드과정이 필요하지 않다. R을 이용해서 바로 설치가 가능하다. R  CMD  INSTALL  ./RHive_0.0-­‐4-­‐2011121201.tar.gz  
  • 9. 만약 앞서에서 봤던 것처럼 rJava와 Rserve와 관련된 의존성과 관련된 에러 메세지를 본다면 아래와 같이 R내부에서 그것들을 먼저 설치하고 다운로드 받은 것을 다시 설치한다. 앞서에서도 언급했지만 아래와 같은 방법으로 설치할 수 있다. Open  R   install.packages('rJava')   install.packages('Rserve')   에러 메세지가 없다면 설치가 완료된 것이다. Git client를 사용하지 않고 source code 다운로드 하기 Git명령어나 클라이언트를 이용하지 않고도 Github에서 소스코드를 다운로드 받을 수 있다. Github에서는 압축된 소스코드를 웹브라우저를 이용해서 다운로드 받을 수 있도록 지원한다. 아래와 같이 최신의 소스를 다운로드 할 수 있다. wget   -­‐-­‐no-­‐check-­‐certificate   https://github.com/nexr/RHive/zipball/master  -­‐O  RHive.zip   unzip  RHive.zip   cd  nexr-­‐RHive-­‐df7341c/   소스를 컴파일하고 패키지를 빌드 하는 방법은 Git client를 이용해서 RHive 소스를 받은 경우와 동일하다. R과 Rserve 설치하기 RHive를 사용하기 위해서는 Hadoop의 모든 job node에 Rserve가 설치되어 있어야 한다. Rserve는 R core 팀에서 제공하는 패키지이며 R을 서버의 형태로 작동시키는 패키지로 기본으로 제공되지 않으며 별도로 설치해야 한다. RHive는 Hadoop의 conf에 있는 slaves를 참조해 각 job node에 실행된 Rserve의 위치를 확인한 후 접속하여 제어한다. Rserve를 설치하는 것은 어렵지 않으며 다음 과정을 따라 Rserve를 설치한다. 이제부터 Hadoop name node와 job node에 모두 접속해서 각각 R과 Rserve를 설치한다. 단, name node에는 Rserve를 반드시 설치할 필요는 없다.
  • 10. ssh  root@10.1.1.1   만약 R이 설치되어 있지 않다면 R을 먼저 설치한다. CentOs5에서는 다음과 같은 방법으로 쉽게 R 최신 버전을 설치할 수 있다. R과 함께 R-devel를 함께 설치해서 Rserve가 설치될 때 필요한 header 파일들을 한꺼번에 설치해 주는 것을 기억하자. rpm   -­‐Uvh   http://download.fedora.redhat.com/pub/epel/5/i386/epel-­‐ release-­‐5-­‐4.noarch.rpm       yum  install  R   yum  install  R-­‐devel   필요한 패키지가 설치되었으면 다음과 같은 명령으로 Rserve를 설치한다. open  R   install.packages("Rserve")   만약 설치된 R이 libR.so라는 파일을 함께 가지고 있지 않은 경우에 Rserve를 설치할 때 다음과 같은 에러가 발생한다. *  installing  *source*  package  'Rserve'  ...   **  package  'Rserve'  successfully  unpacked  and  MD5  sums  checked   checking  whether  to  compile  the  server...  yes   configure:  error:  R  was  configured  without  -­‐-­‐enable-­‐R-­‐shlib  or  -­‐-­‐ enable-­‐R-­‐static-­‐lib       ***   Rserve   requires   R   (shared   or   static)   library.                                              ***   ***  Please  install  R  library  or  compile  R  with  either  -­‐-­‐enable-­‐R-­‐ shlib    ***   ***   or   -­‐-­‐enable-­‐R-­‐static-­‐lib   support                                                                        ***        Alternatively   use   -­‐-­‐without-­‐server   if   you   wish   to   build   only   Rserve  client.      
  • 11.     ERROR:  configuration  failed  for  package  'Rserve'   *  removing  '/usr/lib64/R/library/Rserve'   이를 해결하기 위해서는 R이 컴파일 될 때 --neable-R-shlib 또는 --enable-R-static- lib로 컴파일 된 것이어야 하는데 대부분의 Linux에 제공되는 R패키지들은 이미 이 옵션들로 컴파일이 된 것이며 그렇기 때문에 사용자가 이 에러를 본다면 R을 소스를 다운로드하여 컴파일하면서 옵션을 포함하지 않았거나 다른 환경적인 문제일 가능성이 크다. 소스를 컴파일할 때 옵션을 빠뜨린 것이 아니고 Linux에서 제공하는 rpm이나 yum, aptitude와 같은 패키징 시스템으로 설치하였음에도 불구하고 위와 같은 에러를 본다면 먼저 아래와 같은 명령으로 R이 library 파일이 있는 경로를 출력하는지 확인한다. #  R  CMD  config  -­‐-­‐ldflags   -­‐L/usr/lib64/R/lib  -­‐lR   만약 위의 명령을 실행하던 중 아래와 같은 에러를 볼 수도 있다. [root@i-­‐10-­‐24-­‐1-­‐34  Rserve]#  R  CMD  config  -­‐-­‐ldflags   /usr/lib64/R/bin/config:  line  142:  make:  command  not  found   /usr/lib64/R/bin/config:  line  143:  make:  command  not  found   이것은 make 유틸리티가 없다는 것을 의미하며 Rserve를 설치하는 과정중에 컴파일 과정이 있는데 make 유틸리티가 없어 컴파일을 하지 못한 것이므로 make 를 설치해 주어야 한다. 아래와 같이 make를 설치한 후 "R CMD config --ldflags"를 실행해서 compile에 필요한 library path가 정상적으로 출력되는지 다시 확인해 본다. yum  install  make   그리고 libR.so가 출력된 경로에 있는지 확인해 본다. #  ls  -­‐al  /usr/lib64/R/lib   total  4560   drwxr-­‐xr-­‐x  2  root  root        4096  Dec  13  03:00  .   drwxr-­‐xr-­‐x  7  root  root        4096  Dec  13  03:35  ..   -­‐rwxr-­‐xr-­‐x  1  root  root  2996480  Nov    8  14:19  libR.so   -­‐rwxr-­‐xr-­‐x  1  root  root    177176  Nov    8  14:19  libRblas.so   -­‐rwxr-­‐xr-­‐x  1  root  root  1470264  Nov    8  14:19  libRlapack.so  
  • 12. libR.so가 존재하는 것을 확인할 수 있다. 이제 Rserve를 설치할 수 있는 준비가 다 되었으므로 Rserve를 설치를 재시도해서 완료한다. open  R   install.packages("Rserve")   Rserve 실행하기 Rserv를 설치하는데 성공했다면 다음과 같이 Rserve를 대몬(DAEMON)으로 실행하여야 하는데 Rserve를 실행하기 전에 Rserve에 원격 접속을 허용할 수 있도록 설정파일을 고쳐야 한다. 다음과 같이 설정을 작업을 해준다. #  Rserve를  실행할  서버에  모두 접속한다.  모든  Hadoop  job  node   #  "/etc/Rserv.conf"  파일을  텍스트편집기로  오픈한다.  파일이  없다면  파 일을  만들어야  한다.   #  'remote  enable'라는  내용을  파일에  넣는다.   #  저장하고  닫는다.   Rserv.conf는 이 외에도 여러가지 옵션을 설정할 수 있다. configuration에 대한 자세한 내용은 아래 URL의 내용을 참조하기 바란다. http://www.rforge.net/Rserve/doc.html 이제 R을 종료하고 RHIVE_DATA 환경변수를 설정한다. Rserve가 실행되는 서버들에는 RHIVE_DATA라는 환경변수가 설정되어야 하는데 RHIVE_DATA에는 RHive가 분산환경에서 작동할 때 임시로 사용할 디렉토리를 지정해야 한다. RHIVE_DATA는 RHive UDF/UDAF나 Map/Reduce 관련 함수를 사용하지 않을 것이라면 설정하지 않아도 되지만 RHive의 모든 기능을 사용하기 위해서는 Rserve를 설치할 때 미리 설정해 두는 것을 권장한다. RHIVE_DATA 환경변수에 사용할 디렉토리는 미리 생성하고 환경변수를 설정한다. mkdir  /service/rhive_data       export  RHIVE_DATA="/service/rhive_data"   그리고 텍스트 편집기를 이용해 /etc/profile이나 ~/.bash_profile, ~/.bashrc 파일에 넣어 두는것도 필요할 수 있다.
  • 13. vi  /etc/profile       export  RHIVE_DATA='/service/rhive_data'   이제 명령프롬프트에서 Rserve를 실행한다. R  CMD  Rserve   Rserve가 대먼(DAEMON)으로 실행되었는지 확인하려면 아래와 같은 방법으로 port를 listening하고 있는지 확인해 볼 수 있다. #  netstat  -­‐nltp   Active  Internet  connections  (only  servers)   Proto   Recv-­‐Q   Send-­‐Q   Local   Address                               Foreign   Address                          State              PID/Program  name   tcp                 0             0   0.0.0.0:6311                                0.0.0.0:*                                      LISTEN            25516/Rserve   tcp                0            0  :::59873                                        :::*                                                LISTEN            13023/java   tcp                0            0  :::50020                                        :::*                                                LISTEN            13023/java   tcp                0            0  ::ffff:127.0.0.1:46056            :::*                                                LISTEN            13112/java   tcp                0            0  :::50060                                        :::*                                                LISTEN            13112/java   tcp                0            0  :::22                                              :::*                                                LISTEN            1109/sshd   tcp                0            0  :::50010                                        :::*                                                LISTEN            13023/java   tcp                0            0  :::50075                                        :::*                                                LISTEN            13023/java   6311 port를 주시(listening)하고 있는 Rserve 대먼을 확인할 수 있다. 6311 port는 Rserve가 사용하는 default port이며 설정파일을 수정하여 변경할 수도 있다. 하지만 바꾸는 경우 혼동할 수 있으므로 특별한 이유가 없다면 바꾸지 않도록 한다. 또한 방화벽등의 보안 소프트웨어나 하드웨어등으로6311 port에 접근할 수 없도록 되어 있다면 적어도 Hadoop을 작동시키는 node들 즉, 내부 서버들 간에는 모두 6311port로 접속이 가능하도록 해야 한다.
  • 14. 이를 확인해 보기 위해서 RHive가 실행될 서버에서 접속이 되는지 먼저 확인해 볼 필요가 있다. 다음과 같이 RHive가 설치될 서버에 접속해서 그 서버에서 다른 서버들의 Rserve로 접속이 가능한지 telnet으로 확인해 본다 #  connect  to  the  RHive  server   ssh  root@10.1.1.1   #  telnet  10.1.1.2  6311   Trying  10.1.1.2...   Connected  to  10.1.1.2.   Escape  character  is  '^]'.   Rsrv0103QAP1       -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   #  telnet  10.1.1.3  6311   Trying  10.1.1.3...   Connected  to  10.1.1.3.   Escape  character  is  '^]'.   Rsrv0103QAP1       -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   #  telnet  10.1.1.4  6311   Trying  10.1.1.4...   Connected  to  10.1.1.4.   Escape  character  is  '^]'.   Rsrv0103QAP1       -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   RHive실행을 위한 위한 환경변수 설정 RHive가 실행되기 위해서는 Hadoop과 Hive가 RHive가 설치된 서버, 랩탑 또는 데스크탑에 설치가 되어 있어야 하며 데스크탑에 있는Hadoop의 configuration도 설치된 Hadoop의 configuration과 일치해야 한다.
  • 15. 만약 RHive를 설치하는 서버 또는 랩탑에 Hadoop과 Hive가 설치되어 있지 않아면 구성되어 있는 것과 동일한 버전을 설치하고 Hadoop의 configuration을 복사해서 동일하게 맞추어 준다. 맞춘 후에 는 environment variable을 설정해야 한다. export  HADOOP_HOME=/service/hadoop-­‐0.20.203.0   export  HIVE_HOME=/service/hive-­‐0.7.1   위의 내용에서 /service/hadoop-0.20.203.0는 Hadoop이 설치된 경로이며 /service/hive-0.7.1는 Hive가 설치된 경로이다. 이 내용을 /etc/profile등에 넣어 두는 것을 권장한다. 만약 RHive을 Hadoop namenode와 동일한 서버에 설치하고 namenode에 접속해서 R을 실행하고 RHive를 사용할 것이라면 이 설정이 필요하지 않다. 그러나 RHive가 설치될 서버가 Hadoop namenode와 같은 서버가 아니거나 자신의 랩탑 또는 데스크탑이라면 "/service/hadoop-0.20.203.0/conf"의 내용을 반드시 RHive를사용할 Hadoop 클러스터의 configuration과 동일하게 맞추어 주는 것을 해야 한다. RHive 예제 실행하기 앞서 말했듯이 RHive를 작동시키기 위해서는 R을 실행하기 전에 환경변수를 설정해야 한다. 좀더 정확하게 말하자면 RHive 초기화(initialize)하기전에 RHive에서 필요로 하는 환경변수가 모두 설정되어 있어야 한다. 만약 R을 실행하기 전에 랩탑 또는 서버의 환경변수에 HIVE_HOME과 HADOOP_HOME을 세팅하는 것을 잊어버렸거나 또는 설정하는 방법에 익숙하지 않거나 여러가지 다른 버전을 바꿔 가면서 사용하기 위해서 일부러 그 과정을 생략했다면 아래와 같이 R을 실행한 후에도 지정해 줄 수 있다. Open  R   Sys.setenv(HIVE_HOME="/service/hive-­‐0.7.1")   Sys.setenv(HADOOP_HOME="/service/hadoop-­‐0.20.203.0")   library(RHive)   앞서의 과정에 이미 /etc/profile등을 수정하여 RHive에서 필요로 하는 HIVE_HOME과 HADOOP_HOME 환경변수를 정의했고 R을 실행하기 전에 적용되었다면 R에서 위의 코드는 실행하지 않고 생략할 수 있다.
  • 16. 하지만 그렇지 않다면 RHive를 사용하기 위해서 위 코드들 R을 실행할 때 매번 해 주어야 한다는 단점이 있다. RHive 환경변수 확인하기 및 세팅하기 RHIVE_HOME과 HADOOP_HOME이 정확하게 설정되어 있지 않다면 RHive는 정상작동을 하지 않는다. 현재 위의 변수들에 지정된 경로(path)를 R에서 쉽게 확인하기 위해서 rhive.env()라는 펑션을 이용해서 현재 환경변수가 제대로 세팅되어 있는지 확인할 수 있다. 만약 Hive Home Directory나 Hadoop Home Directory가 제대로 출력되어 보이지 않는다면 세팅을 다시 확인해야 할 것이다. >  rhive.env()   Hive  Home  Directory  :  /mnt/srv/hive-­‐0.8.1   Hadoop  Home  Directory  :  /mnt/srv/hadoop-­‐0.20.203.0   Default  RServe  List   node1  node2  node3   Disconnected  HiveServer  and  HDFS   RHive connect 실행 RHive를 loading한 후에는 작업을 하기 전에 rhive.connect()펑션을 호출해서 Hive server와의 connection을 만들어야 한다. connection을 만들지 않으면 RHive 함수들은 작동하지 않는다. >  rhive.connect()   SLF4J:  Class  path  contains  multiple  SLF4J  bindings.   SLF4J:   Found   binding   in   [jar:file:/service/hive-­‐0.7.1/lib/slf4j-­‐ log4j12-­‐1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]   SLF4J:   Found   binding   in   [jar:file:/service/hadoop-­‐ 0.20.203.0/lib/slf4j-­‐log4j12-­‐ 1.4.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]   SLF4J:   See   http://www.slf4j.org/codes.html#multiple_bindings   for   an  explanation.   rhive.connect() 함수는 connection에 대한 return 값을 가지고 있지만 return 값을 처리하지 않는 경우 default로 내장된 변수 connection을 유지하며 따로 return값을 다룰 필요 없이 내장 변수를 이용해서 이미 연결된 connection을 계속 사용한다.
  • 17. 여러개 Hive에 동시에 접속하는 경우가 아니라면 return값을 따로 다룰 필요가 없으며 그런 경우가 발생한다면 좀더 구체적인 사용법을 위해 RHive 도움말을 참조하는 것이 좋다. HDFS에 있는 파일 확인하기 rhive.connect() 함수를 이용해서 최초의Hive connection을 만들 때 RHive가 몇 줄의 복잡한 메세지를 출력하는 것을 확인할 수 있다. 이것들은 무시해도 상관 없다. 이제 rhive.hdfs.* 함수들을 이용하여 Hadoop의 HDFS를 다룰 수 있으며 이것들은 "hadoop fs"가 지원하는 명령들과 대응된다. 만약 Hadoop에 익숙하지 않은 사용자라면 “hadoop fs” 명령들은 HDFS라는 분산파일시스템을 이용해 Linux 명령어와 유사한 인터페이스로 파일을 관리하는 명령어라는 것만을 이해해도 충분하다. HDFS상의 파일 목록을 확인하기 위해서는 rhive.hdfs.ls() 함수를 이용하여 확인할 수 있다. >  rhive.hdfs.ls("/")      permission   owner             group       length             modify-­‐ time                file   1     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐07   14:27        /airline   2     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐07   13:16   /benchmarks   3     rw-­‐r-­‐-­‐r-­‐-­‐     root   supergroup   11186419   2011-­‐12-­‐06   03:59      /messages   4     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐07   22:05                /mnt   5     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐07   22:15            /rhive   6     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐07   20:19                /tmp   Hive의 테이블 목록 확인하기 또 rhive.list.tables() 함수를 이용해서 Hive에 등록된 table의 목록을 확인할 수 있다. Hive에 익숙하지 않은 사용자라면 Hive는 일반적인 SQL 부류의 서버들과 유사하게 작동한다는 점을 이해하는 것으로 충분할 것이며 만약 SQL에 대해서 잘 모른다해도 크게 문제가 되지 않지만 Hive와 RHive 기능을 활용하기 위해 따로 학습을 할 것을 권장한다.
  • 18. Hive를 설치하고 아무런 테이블로 생성하지 않았다면 아래와 같은 결과를 볼 것이다. >  rhive.list.tables()   [1]  tab_name   <0  rows>  (or  0-­‐length  row.names)   Hive의 테이블 생성하기 간단한 RHive명령으로 R의 data frame을 Hive의 테이블로 저장할 수 있다. tablename  <-­‐  rhive.write.table(USArrests)   USArrests는 R을 설치하면 기본으로 제공되는 data set이며 RHive는 인수로 주어진 data.frame의 객체이름을 Hive table name으로 취급하여Hive에 하나의 table로 저장한다. Table의 description 확인하기 그리고 rhive.list.desc() 함수를 이용해 Hive에 저장되어 있는 table의 description을 확인할 수 있다. 이것은 SQL의 “DESC tablename” 명령과 같은 것이다. >  rhive.desc.table("USArrests")      col_name  data_type  comment   1    rowname        string   2      murder        double   3    assault              int   4  urbanpop              int   5          rape        double   참고로 Hive의 table name은 대소문자를 구문하지 않는다. Hive의 테이블 생성하기2 MASS package에 있는 다른 data들이나 또는 CSV 파일등을 로딩한 데이터를 Hive로 저장하는 것이 가능하다. library(MASS)   tablename  <-­‐  rhive.write.table(Aids2)   rhive.desc.table(tablename)  
  • 19. rhive.load.table(tablename)   이 방법은 비교적 작은 크기의 데이터를 Hive에 업로드 하는데 유용한 것이며 만약 수GiB 이상의 데이터를 Hive에 저장하려고 한다면, 먼저 rhive.hdfs.* 함수들을 이용하여HDFS에 파일을 저장한 후 Hive에서 external table을 생성하여 사용하는 방법을 추천한다. RHive는 R문법으로 아직 용량이 큰 데이터를 자동으로 업로드하거나 저장하는 기능을 제공하지 않으며 기능추가를 고려중이다. 간단한 SQL문 실행하기 rhive.query() 함수를 이용하여 SQL을 Hive에 전달할 수 있다. 앞에서 생성한 usarrests라는 이름을 가진 Hive table의 전체 레코드수를 확인하는 간단한 SQL문을 실행해 보자. rhive.query("SELECT  COUNT(*)  FROM  usarrests")      X_c0   1      50   위에서 실행한 SQL 구문은 Hive와 Hadoop을 이용해 Map/Reduce 과정을 수행한 것으로 SQL의 결과를 정상적으로 확인하였다면, RHive와 Hadoop 및 Hive 환경설정이 모두 제대로 되었음을 의미하며 Hadoop이 Map/Reduce를 통해서 입력한 데이터의 카운트를 계산해서 출력하였음을 의미한다. 주의할 점은 이 예제에서는 아주 작은 데이터를 사용하였기 때문에 분산처리플랫폼인 Hadoop과 Hive의 성능을 충분히 활용했다고 할 수는 없으며, usarrests와 같이 단일 서버 또는 랩탑에 장착된 메모리 한도내에 로딩될 수 있는 작은 크기의 데이터는 RHive를 이용하지 않고 R만을 이용해서 직접 처리할 수 있는 크기이다. 다시 말하면 이 과정은 단지 환경설정이 완료된 것과 RHive가 기본적인 작동을 정상으로 하는지 확인해 본 것이다. Hadoop과 Hive를 통해 RHive의 기능을 충분히 활용하고자 한다면 최소한 수GiB에서 수십GiB의 데이터를 대상으로 사용하는 것이 바람직하다. 문의 또는 도움이 필요할 때 RHive에 대한 각 함수의 설명 및 자세한 내용은 각각의 튜토리얼 및 도움말을 참조하기 바란다. 버그를 발견했거나 도움말이 난해하고 RHive를 사용하는데 어려움이 있다면 github의 RHive 사이트에 버그리포팅을 하거나 아래의 e-mail주소로 RHive 개발팀에 문의할 수 있다. 문의와 요청, 버그리포트에 대해서 RHive개발팀은 항상 열려 있으며 기꺼히 협조할