rhive tutorial 3: rhive 튜토리얼 3 - hdfs 함수

6
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 함수를 수행하면 자동으로 처리가 되므로 일반적으로는 따로 할 필요는 없다.

Upload: aiden-seonghak-hong

Post on 26-May-2015

1.057 views

Category:

Technology


5 download

DESCRIPTION

RHive tutorial 3: RHive 튜토리얼 3 - HDFS 함수 (한글판)

TRANSCRIPT

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

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 함수를 수행하면 자동으로 처리가 되므로 일반적으로는 따로 할 필요는 없다.

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

하지만 만약 다른 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  /

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

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  

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

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  

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

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-­‐

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

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: [email protected]