SlideShare uma empresa Scribd logo
1 de 6
Baixar para ler offline
RHive 튜토리얼 3 - HDFS 함수
이 튜토리얼에서는 HDFS 의 데이터를 관리하는데 필요한 펑션들인 RHive 의 HDFS
관련함수들에 설명한다.


RHive - HDFS functions
Hive 은 분산파일시스템에 저장된 데이터를 관리하기 위해 Hadoop 의 시스템을
이용한다. 그렇기 때문에 Hive 와 RHive 을 효과적으로 사용하기 위해서는 HDFS 를
이용해서 BigData 를 저장하고 읽어오며 remove 하는 등의 일련의 작업을 원할하게 할
수 있어야 한다.
RHive 는 hdfs 를 R 의 환경에서 관리할 수 있도록 "hadoop fs" 명령이 지원하는 것들과
각각 대응되는 함수들을 가지고 있다.
이 함수들을 이용하면 HADOOP CLI(command line interface)를 이용하거나 Hadoop
HDFS library 를 이용하지 않고도 R 환경에서 HDFS 를 다룰 수 있다.
만약 "hadoop"의 CLI 를 이용하거나 Hadoop library 을 사용하는 것이 더 익숙하다면
그것들을 이용하는 것도 좋다.
그러나 Rstudio server 를 이용하거나 terminal 에서 작업하는 것이 익숙하지 않다면
RHive HDFS function 들은 R 유저가 HDFS 를 쉽게 다룰 수 있는 해결책이 될 것이다.
예제를 따라하기 전에
rhive.hdfs.* 함수들은 RHive 가 정상적으로 설치되고 library(RHive)와
rhive.connect 가 정상적으로 수행이 된 후에 작동이 가능하다.
예제를 따라하기 전에 다음을 먼저 수행하는 것을 잊지 말자.

#	
  Open	
  R	
  
library(RHive)	
  
rhive.connect()


rhive.hdfs.connect
RHive 펑션들을 이용해서 Hive 와 마찬가지로 HDFS 에 연결하는 작업이 필요하다.
그러나 이 함수는 HDFS 를 참조하기 위한 정보를 가지고 있는 Hadoop
configuration 이 정상적으로 설정되었고 환경변수를 맞게 설정하였다면
rhive.connect 함수를 수행하면 자동으로 처리가 되므로 일반적으로는 따로 할 필요는
없다.
하지만 만약 다른 HDFS 에 접속을 해야 하거나 어떤 이유로 인해서라도 강제 접속을
하려고 한다면 다음과 같이 사용할 수 있다.

rhive.hdfs.connect("hdfs://10.1.1.1:9000")	
  
[1]	
   "Java-­‐Object{DFS[DFSClient[clientName=DFSClient_630489789,	
  
ugi=root]]}"	
  

rhive.hdfs.connect 에 HDFS 를 서비스하는 hostname 과 port 를 정확히 기재하지
않으면 접속이 되지 않는다.
HDFS servce 를 담당하는 server 의 주소와 port 를 모른다면 시스템 관리자에게
문의하여 알아낸뒤 설정을 하도록 한다.


rhive.hdfs.ls
"hadoop fs -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-­‐13	
  
20:24	
  	
  	
  	
  	
  	
  /rhive	
  
6	
  	
   rwxr-­‐xr-­‐x	
  	
                       root	
                supergroup	
  	
  	
  	
  	
  	
  	
  	
          0	
            2011-­‐12-­‐07	
  
20:19	
  	
  	
  	
  	
  	
  	
  	
  /tmp	
  
7	
  	
   rwxr-­‐xr-­‐x	
  	
                       root	
                supergroup	
  	
  	
  	
  	
  	
  	
  	
          0	
            2011-­‐12-­‐14	
  
01:14	
  	
  	
  	
  	
  	
  	
  /user

이것은 Hadoop CLI(Command Line Interface)를 이용한 다음의 명령과 동일하다.

hadoop	
  fs	
  -­‐ls	
  /
rhive.hdfs.get
rhive.hdfs.get 함수는 HDFS 에 있는 데이터를 로칼로 가져오는 기능을 한다.
이것은 "hadoop fs -get"과 동일한 기능을 한다.
다음은 HDFS 에 있는 messages 라는 data 를 local 시스템의 /tmp/messages 로
저장하고 record 수를 확인하는 예제이다.

 rhive.hdfs.get("/messages",	
  "/tmp/messages")	
  
 [1]	
  TRUE	
  
 system("wc	
  -­‐l	
  /tmp/messages")	
  
 145889	
  /tmp/messages


rhive.hdfs.put
rhive.hdfs.put 함수는 로칼에 있는 데이터를 HDFS 로 업로드 하는 기능을 한다.
"hadoop fs -put"과 동일한 기능을 하며 rhive.hdfs.get 과는 반대의 기능을 하는
함수이다.
다음 예제는 로컬 시스템에 있는 "/tmp/messages" 파일을 HDFS 에
"/messages_new"라는 이름으로 업로드하는 기능을 한다.

rhive.hdfs.put("/tmp/messages",	
  "/messages_new")	
  
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	
  	
   rw-­‐r-­‐-­‐r-­‐-­‐	
  	
             root	
             supergroup	
                   11186419	
                2011-­‐12-­‐14	
            02:02	
  
/messages_new	
  
5	
  	
    rwxr-­‐xr-­‐x	
  	
                        root	
                   supergroup	
  	
  	
  	
  	
  	
  	
  	
          0	
            2011-­‐12-­‐07	
  
22:05	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  /mnt	
  
6	
  	
    rwxr-­‐xr-­‐x	
  	
                  root	
                         supergroup	
  	
  	
  	
  	
  	
  	
  	
          0	
            2011-­‐12-­‐13	
  
20:24	
  	
  	
  	
  	
  	
  	
  	
  /rhive	
  
7	
  	
          rwxr-­‐xr-­‐x	
  	
                     root	
                supergroup	
  	
  	
  	
  	
  	
  	
  	
          0	
            2011-­‐12-­‐14	
  
01:14	
  	
  	
  	
  	
  	
  	
  	
  	
  /user

"/messages_new"라는 파일이 HDFS 에 생긴 것을 확인할 수 있다.


rhive.hdfs.rm
"hadoop fs -rm"과 동일한 기능을 수행하며
HDFS 에 있는 파일을 삭제한다.

rhive.hdfs.rm("/messages_new")	
  
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-­‐13	
  
20:24	
  	
  	
  	
  	
  	
  /rhive	
  
6	
  	
   rwxr-­‐xr-­‐x	
  	
                               root	
                    supergroup	
  	
  	
  	
  	
  	
  	
  	
          0	
            2011-­‐12-­‐14	
  
01:14	
  	
  	
  	
  	
  	
  	
  /user

"/messages_new"라는 HDFS 내의 파일이 삭제된 것을 확인할 수 있다.


rhive.hdfs.rename
"hadoop fs -mv"와 동일한 기능을 한다.
즉, HDFS 내에 파일의 이름을 변경하거나 디렉토리를 이동시키는 기능을 한다.

rhive.hdfs.rename("/messages",	
  "/messages_renamed")	
  
[1]	
  TRUE	
  
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_renamed	
  
4	
  	
   rwxr-­‐xr-­‐x	
  	
                                 root	
          supergroup	
  	
  	
  	
  	
  	
  	
  	
         0	
             2011-­‐12-­‐07	
  
22:05	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  /mnt	
  
5	
  	
   rwxr-­‐xr-­‐x	
  	
                           root	
                supergroup	
  	
  	
  	
  	
  	
  	
  	
         0	
             2011-­‐12-­‐13	
  
20:24	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  /rhive	
  
6	
  	
   rwxr-­‐xr-­‐x	
  	
                              root	
             supergroup	
  	
  	
  	
  	
  	
  	
  	
         0	
             2011-­‐12-­‐14	
  
01:14	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  /user


rhive.hdfs.exists
HDFS 내에 파일이 존재하는지 확인하는 기능을 한다.
이 함수에 대응하는 hadoop 명령어는 따로 없다.

 rhive.hdfs.exists("/messages_renamed")	
  
 [1]	
  TRUE	
  
 rhive.hdfs.exists("/foobar")	
  
 [1]	
  FALSE	
  

이 함수는 R 로 작성된 코드에서 Hive 의 테이블이 존재하는지에 따라 실행코드를 달리
할때 사용하는데 유용하다. 특정한 코드가 실행되기 전에 이전 단계의 코드가
실행되면서 만들어 내야할 결과물이 제대로 생성되었는지 간단히 확인하기 위한
방법으로 중간 결과 테이블의 존재 유무를 조사하는 코드를 작성하는데도 유용하다.


rhive.hdfs.mkdirs
"hadoop fs -mkdir"과 동일한 기능을 한다.
HDFS 에 디렉토리를 생성하는 기능을 한하며 하위 디렉토리까지도 한꺼번에 생성한다.

 rhive.hdfs.mkdirs("/newdir/newsubdir")	
  
 [1]	
  TRUE	
  
 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_renamed	
  
4	
  	
   rwxr-­‐xr-­‐x	
  	
                                 root	
                   supergroup	
  	
  	
  	
  	
  	
  	
  	
         0	
           2011-­‐12-­‐07	
  
22:05	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  /mnt	
  
5	
  	
   rwxr-­‐xr-­‐x	
  	
                        root	
                            supergroup	
  	
  	
  	
  	
  	
  	
  	
         0	
           2011-­‐12-­‐14	
  
02:13	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  /newdir	
  
6	
  	
   rwxr-­‐xr-­‐x	
  	
                           root	
                         supergroup	
  	
  	
  	
  	
  	
  	
  	
         0	
           2011-­‐12-­‐13	
  
20:24	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  /rhive	
  
7	
  	
   rwxr-­‐xr-­‐x	
  	
                              root	
                      supergroup	
  	
  	
  	
  	
  	
  	
  	
         0	
           2011-­‐12-­‐14	
  
01:14	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  /user	
  
rhive.hdfs.ls("/newdir")	
  
	
  	
  permission	
                                   owner	
  	
  	
  	
  	
  	
             group	
               length	
  	
  	
  	
  	
  	
         modify-­‐
time	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  file	
  
1	
  	
   rwxr-­‐xr-­‐x	
  	
   root	
                                    supergroup	
  	
  	
  	
  	
  	
              0	
         2011-­‐12-­‐14	
          02:13	
  
/newdir/newsubdir


rhive.hdfs.close
HDFS 를 사용한 후 HDFS 를 더 이상 사용할 일이 없는 경우 connection 을 닫기 위해
사용한다.

rhive.hdfs.close()	
  




문의 및 연락
RHive 의 HDFS 관련된 함수들의 버그 및 기능 개선에 대한 조언 및 추가로 필요한
함수들에 대한 요구사항 또는 의견이 있다면 RHive 개발팀에서는 적극적으로 답변하고
커뮤니케이션할 준비가 되어 있다.
email: rhive@nexr.com

Mais conteúdo relacionado

Mais procurados

Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정HyeonSeok Choi
 
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)Matthew (정재화)
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다민철 정민철
 
하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기beom kyun choi
 
처음 접하는 Oozie Workflow, Coordinator
처음 접하는 Oozie Workflow, Coordinator처음 접하는 Oozie Workflow, Coordinator
처음 접하는 Oozie Workflow, CoordinatorKim Log
 
하둡 HDFS 훑어보기
하둡 HDFS 훑어보기하둡 HDFS 훑어보기
하둡 HDFS 훑어보기beom kyun choi
 
Hive 입문 발표 자료
Hive 입문 발표 자료Hive 입문 발표 자료
Hive 입문 발표 자료beom kyun choi
 
SW1차 프로젝트 Hive 최종발표
SW1차 프로젝트 Hive 최종발표SW1차 프로젝트 Hive 최종발표
SW1차 프로젝트 Hive 최종발표Sinhyub Kim
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3Sung-jae Park
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대DaeHeon Oh
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Gruter
 
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기beom kyun choi
 
introduce of Hadoop map reduce
introduce of Hadoop map reduceintroduce of Hadoop map reduce
introduce of Hadoop map reduceDaeyong Shin
 
하둡완벽가이드 Ch6. 맵리듀스 작동 방법
하둡완벽가이드 Ch6. 맵리듀스 작동 방법하둡완벽가이드 Ch6. 맵리듀스 작동 방법
하둡완벽가이드 Ch6. 맵리듀스 작동 방법HyeonSeok Choi
 

Mais procurados (20)

Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정
 
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다
 
하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기
 
하둡관리
하둡관리하둡관리
하둡관리
 
Apache hive
Apache hiveApache hive
Apache hive
 
Hadoop overview
Hadoop overviewHadoop overview
Hadoop overview
 
처음 접하는 Oozie Workflow, Coordinator
처음 접하는 Oozie Workflow, Coordinator처음 접하는 Oozie Workflow, Coordinator
처음 접하는 Oozie Workflow, Coordinator
 
R hive tutorial 1
R hive tutorial 1R hive tutorial 1
R hive tutorial 1
 
하둡 HDFS 훑어보기
하둡 HDFS 훑어보기하둡 HDFS 훑어보기
하둡 HDFS 훑어보기
 
Hive 입문 발표 자료
Hive 입문 발표 자료Hive 입문 발표 자료
Hive 입문 발표 자료
 
SW1차 프로젝트 Hive 최종발표
SW1차 프로젝트 Hive 최종발표SW1차 프로젝트 Hive 최종발표
SW1차 프로젝트 Hive 최종발표
 
HBase 훑어보기
HBase 훑어보기HBase 훑어보기
HBase 훑어보기
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013
 
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기
 
Hdfs
HdfsHdfs
Hdfs
 
introduce of Hadoop map reduce
introduce of Hadoop map reduceintroduce of Hadoop map reduce
introduce of Hadoop map reduce
 
하둡완벽가이드 Ch6. 맵리듀스 작동 방법
하둡완벽가이드 Ch6. 맵리듀스 작동 방법하둡완벽가이드 Ch6. 맵리듀스 작동 방법
하둡완벽가이드 Ch6. 맵리듀스 작동 방법
 

Mais de Aiden Seonghak Hong

RHive tutorial supplement 3: RHive 튜토리얼 부록 3 - RStudio 설치
RHive tutorial supplement 3: RHive 튜토리얼 부록 3 - RStudio 설치RHive tutorial supplement 3: RHive 튜토리얼 부록 3 - RStudio 설치
RHive tutorial supplement 3: RHive 튜토리얼 부록 3 - RStudio 설치Aiden Seonghak Hong
 
RHive tutorial supplement 2: RHive 튜토리얼 부록 2 - Hive 설치
RHive tutorial supplement 2: RHive 튜토리얼 부록 2 - Hive 설치RHive tutorial supplement 2: RHive 튜토리얼 부록 2 - Hive 설치
RHive tutorial supplement 2: RHive 튜토리얼 부록 2 - Hive 설치Aiden Seonghak Hong
 
RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치
RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치
RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치Aiden Seonghak Hong
 
RHive tutorial 5: RHive 튜토리얼 5 - apply 함수와 맵리듀스
RHive tutorial 5: RHive 튜토리얼 5 - apply 함수와 맵리듀스RHive tutorial 5: RHive 튜토리얼 5 - apply 함수와 맵리듀스
RHive tutorial 5: RHive 튜토리얼 5 - apply 함수와 맵리듀스Aiden Seonghak Hong
 
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 함수Aiden Seonghak Hong
 
RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수
RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수
RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수Aiden Seonghak Hong
 
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정Aiden Seonghak Hong
 
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 rhiveAiden Seonghak Hong
 
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 HiveAiden Seonghak Hong
 
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 HadoopAiden Seonghak Hong
 
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 reduceAiden Seonghak Hong
 
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 functionsAiden Seonghak Hong
 
RHive tutorials - Basic functions
RHive tutorials - Basic functionsRHive tutorials - Basic functions
RHive tutorials - Basic functionsAiden Seonghak Hong
 

Mais de Aiden Seonghak Hong (16)

IoT and Big data with R
IoT and Big data with RIoT and Big data with R
IoT and Big data with R
 
RHive tutorial supplement 3: RHive 튜토리얼 부록 3 - RStudio 설치
RHive tutorial supplement 3: RHive 튜토리얼 부록 3 - RStudio 설치RHive tutorial supplement 3: RHive 튜토리얼 부록 3 - RStudio 설치
RHive tutorial supplement 3: RHive 튜토리얼 부록 3 - RStudio 설치
 
RHive tutorial supplement 2: RHive 튜토리얼 부록 2 - Hive 설치
RHive tutorial supplement 2: RHive 튜토리얼 부록 2 - Hive 설치RHive tutorial supplement 2: RHive 튜토리얼 부록 2 - Hive 설치
RHive tutorial supplement 2: RHive 튜토리얼 부록 2 - Hive 설치
 
RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치
RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치
RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치
 
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 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 함수
 
RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수
RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수
RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수
 
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
 
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 - 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
 
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
 
RHive tutorials - Basic functions
RHive tutorials - Basic functionsRHive tutorials - Basic functions
RHive tutorials - Basic functions
 
RHive tutorial - Installation
RHive tutorial - InstallationRHive tutorial - Installation
RHive tutorial - Installation
 

RHive tutorial 3: RHive 튜토리얼 3 - HDFS 함수

  • 1. RHive 튜토리얼 3 - HDFS 함수 이 튜토리얼에서는 HDFS 의 데이터를 관리하는데 필요한 펑션들인 RHive 의 HDFS 관련함수들에 설명한다. RHive - HDFS functions Hive 은 분산파일시스템에 저장된 데이터를 관리하기 위해 Hadoop 의 시스템을 이용한다. 그렇기 때문에 Hive 와 RHive 을 효과적으로 사용하기 위해서는 HDFS 를 이용해서 BigData 를 저장하고 읽어오며 remove 하는 등의 일련의 작업을 원할하게 할 수 있어야 한다. RHive 는 hdfs 를 R 의 환경에서 관리할 수 있도록 "hadoop fs" 명령이 지원하는 것들과 각각 대응되는 함수들을 가지고 있다. 이 함수들을 이용하면 HADOOP CLI(command line interface)를 이용하거나 Hadoop HDFS library 를 이용하지 않고도 R 환경에서 HDFS 를 다룰 수 있다. 만약 "hadoop"의 CLI 를 이용하거나 Hadoop library 을 사용하는 것이 더 익숙하다면 그것들을 이용하는 것도 좋다. 그러나 Rstudio server 를 이용하거나 terminal 에서 작업하는 것이 익숙하지 않다면 RHive HDFS function 들은 R 유저가 HDFS 를 쉽게 다룰 수 있는 해결책이 될 것이다. 예제를 따라하기 전에 rhive.hdfs.* 함수들은 RHive 가 정상적으로 설치되고 library(RHive)와 rhive.connect 가 정상적으로 수행이 된 후에 작동이 가능하다. 예제를 따라하기 전에 다음을 먼저 수행하는 것을 잊지 말자. #  Open  R   library(RHive)   rhive.connect() rhive.hdfs.connect RHive 펑션들을 이용해서 Hive 와 마찬가지로 HDFS 에 연결하는 작업이 필요하다. 그러나 이 함수는 HDFS 를 참조하기 위한 정보를 가지고 있는 Hadoop configuration 이 정상적으로 설정되었고 환경변수를 맞게 설정하였다면 rhive.connect 함수를 수행하면 자동으로 처리가 되므로 일반적으로는 따로 할 필요는 없다.
  • 2. 하지만 만약 다른 HDFS 에 접속을 해야 하거나 어떤 이유로 인해서라도 강제 접속을 하려고 한다면 다음과 같이 사용할 수 있다. rhive.hdfs.connect("hdfs://10.1.1.1:9000")   [1]   "Java-­‐Object{DFS[DFSClient[clientName=DFSClient_630489789,   ugi=root]]}"   rhive.hdfs.connect 에 HDFS 를 서비스하는 hostname 과 port 를 정확히 기재하지 않으면 접속이 되지 않는다. HDFS servce 를 담당하는 server 의 주소와 port 를 모른다면 시스템 관리자에게 문의하여 알아낸뒤 설정을 하도록 한다. rhive.hdfs.ls "hadoop fs -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-­‐13   20:24            /rhive   6     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐07   20:19                /tmp   7     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐14   01:14              /user 이것은 Hadoop CLI(Command Line Interface)를 이용한 다음의 명령과 동일하다. hadoop  fs  -­‐ls  /
  • 3. rhive.hdfs.get rhive.hdfs.get 함수는 HDFS 에 있는 데이터를 로칼로 가져오는 기능을 한다. 이것은 "hadoop fs -get"과 동일한 기능을 한다. 다음은 HDFS 에 있는 messages 라는 data 를 local 시스템의 /tmp/messages 로 저장하고 record 수를 확인하는 예제이다. rhive.hdfs.get("/messages",  "/tmp/messages")   [1]  TRUE   system("wc  -­‐l  /tmp/messages")   145889  /tmp/messages rhive.hdfs.put rhive.hdfs.put 함수는 로칼에 있는 데이터를 HDFS 로 업로드 하는 기능을 한다. "hadoop fs -put"과 동일한 기능을 하며 rhive.hdfs.get 과는 반대의 기능을 하는 함수이다. 다음 예제는 로컬 시스템에 있는 "/tmp/messages" 파일을 HDFS 에 "/messages_new"라는 이름으로 업로드하는 기능을 한다. rhive.hdfs.put("/tmp/messages",  "/messages_new")   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     rw-­‐r-­‐-­‐r-­‐-­‐     root   supergroup   11186419   2011-­‐12-­‐14   02:02   /messages_new   5     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐07   22:05                    /mnt   6     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐13   20:24                /rhive   7     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐14  
  • 4. 01:14                  /user "/messages_new"라는 파일이 HDFS 에 생긴 것을 확인할 수 있다. rhive.hdfs.rm "hadoop fs -rm"과 동일한 기능을 수행하며 HDFS 에 있는 파일을 삭제한다. rhive.hdfs.rm("/messages_new")   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-­‐13   20:24            /rhive   6     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐14   01:14              /user "/messages_new"라는 HDFS 내의 파일이 삭제된 것을 확인할 수 있다. rhive.hdfs.rename "hadoop fs -mv"와 동일한 기능을 한다. 즉, HDFS 내에 파일의 이름을 변경하거나 디렉토리를 이동시키는 기능을 한다. rhive.hdfs.rename("/messages",  "/messages_renamed")   [1]  TRUE   rhive.hdfs.ls("/")      permission   owner             group       length             modify-­‐ time                            file  
  • 5. 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_renamed   4     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐07   22:05                            /mnt   5     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐13   20:24                        /rhive   6     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐14   01:14                          /user rhive.hdfs.exists HDFS 내에 파일이 존재하는지 확인하는 기능을 한다. 이 함수에 대응하는 hadoop 명령어는 따로 없다. rhive.hdfs.exists("/messages_renamed")   [1]  TRUE   rhive.hdfs.exists("/foobar")   [1]  FALSE   이 함수는 R 로 작성된 코드에서 Hive 의 테이블이 존재하는지에 따라 실행코드를 달리 할때 사용하는데 유용하다. 특정한 코드가 실행되기 전에 이전 단계의 코드가 실행되면서 만들어 내야할 결과물이 제대로 생성되었는지 간단히 확인하기 위한 방법으로 중간 결과 테이블의 존재 유무를 조사하는 코드를 작성하는데도 유용하다. rhive.hdfs.mkdirs "hadoop fs -mkdir"과 동일한 기능을 한다. HDFS 에 디렉토리를 생성하는 기능을 한하며 하위 디렉토리까지도 한꺼번에 생성한다. rhive.hdfs.mkdirs("/newdir/newsubdir")   [1]  TRUE   rhive.hdfs.ls("/")      permission   owner             group       length             modify-­‐
  • 6. 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_renamed   4     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐07   22:05                            /mnt   5     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐14   02:13                      /newdir   6     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐13   20:24                        /rhive   7     rwxr-­‐xr-­‐x     root   supergroup                 0   2011-­‐12-­‐14   01:14                          /user   rhive.hdfs.ls("/newdir")      permission   owner             group   length             modify-­‐ time                            file   1     rwxr-­‐xr-­‐x     root   supergroup             0   2011-­‐12-­‐14   02:13   /newdir/newsubdir rhive.hdfs.close HDFS 를 사용한 후 HDFS 를 더 이상 사용할 일이 없는 경우 connection 을 닫기 위해 사용한다. rhive.hdfs.close()   문의 및 연락 RHive 의 HDFS 관련된 함수들의 버그 및 기능 개선에 대한 조언 및 추가로 필요한 함수들에 대한 요구사항 또는 의견이 있다면 RHive 개발팀에서는 적극적으로 답변하고 커뮤니케이션할 준비가 되어 있다. email: rhive@nexr.com