rhive tutorial supplement 1: rhive 튜토리얼 부록 1 - hadoop 설치

13
RHive 튜토리얼 부록 1 - Hadoop 설치 RHive 튜토리얼- Hadoop 설치 이 튜토리얼에서는 Hadoop에 대한 지식이 많지 않은 사용자가 RHive를 설치하기에 앞서의 과정으로 필요한 Hadoop을 설치하는 방법에 대해서 간단하게 설명한다. 당연한 것이겠지만 Hive에 의존성을 가지고 있으며 Hive는 Hadoop에 의존성을 가지고 있다. 그렇기 때문에 RHive를 설치하기 위해서는 Hadoop과 Hive가 RHive를 설치하려는 환경에 이미 설치되어 있어야 한다. 이 튜토리얼에서 소개할 Hadoop 설치 방법은 RHive를 사용할 수 있도록 해주는 작은 Hadoop 환경을 구성하는 것이다. 이런 약식의 간단한 설치 방법은 클라우드서비스나 가상화기반의 인프라를의 VM(Virtual Machine)을 이용해서 작은 분산 처리 환경을 빠르게 만드는데 유용할 것이며, 반면에 크고 구조화된(well structured) 여러 사람을 위한 안정화된 복잡한 환경을 구축하려 한다면 적합하지 않을 수 있음을 미리 알려둔다. Hadoop 설치 작업 환경 이 튜토리얼에서 사용한 환경은 다음과 같은 구성으로 이루어져있다. Server cluster environment: 클라우드 서비스 Server 수: 총 4 virtual machines Server 사양: 가상머신, 1 core, 1Gb main memory, 25Gb Harddisk for OS, 2TB additional harddisk OS: CentOS5 Network: 10.x.x.x IP address 설치전에 확인할 사항 root 계정, firewall, SElinux 확인하기 Hadoop을 설치하기 위해 준비한 서버들에 root계정으로 접속이 가능하거나 sudo명령어로 root와 같은 시스템권한등급을 행사할 수 있도록 sudoer 권한을 획득한 상태여야 한다. 그리고 각각의 서버들에는 특별한 방화벽 설정이나 보안에 대한 설정이 없어야 하며 만약 그런것이 설정이 되어 있는 Linux를 사용한다면 그러한 설정을 제어할 수 있는 권한을 가지고 있거나 그에 대한 사용법에 대해 알고 있어야 한다.

Upload: aiden-seonghak-hong

Post on 26-May-2015

2.859 views

Category:

Technology


0 download

DESCRIPTION

RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치 (한글판)

TRANSCRIPT

Page 1: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

RHive 튜토리얼 부록 1 - Hadoop 설치

RHive 튜토리얼- Hadoop 설치

이 튜토리얼에서는 Hadoop에 대한 지식이 많지 않은 사용자가 RHive를 설치하기에 앞서의 과정으로 필요한 Hadoop을 설치하는 방법에 대해서 간단하게 설명한다.

당연한 것이겠지만 Hive에 의존성을 가지고 있으며 Hive는 Hadoop에 의존성을 가지고 있다. 그렇기 때문에 RHive를 설치하기 위해서는 Hadoop과 Hive가 RHive를 설치하려는 환경에 이미 설치되어 있어야 한다.

이 튜토리얼에서 소개할 Hadoop 설치 방법은 RHive를 사용할 수 있도록 해주는 작은 Hadoop 환경을 구성하는 것이다. 이런 약식의 간단한 설치 방법은 클라우드서비스나 가상화기반의 인프라를의 VM(Virtual Machine)을 이용해서 작은 분산 처리 환경을 빠르게 만드는데 유용할 것이며, 반면에 크고 구조화된(well structured) 여러 사람을 위한 안정화된 복잡한 환경을 구축하려 한다면 적합하지 않을 수 있음을 미리 알려둔다.

Hadoop 설치

작업 환경

이 튜토리얼에서 사용한 환경은 다음과 같은 구성으로 이루어져있다.

• Server cluster environment: 클라우드 서비스 • Server 수: 총 4 virtual machines • Server 사양: 가상머신, 1 core, 1Gb main memory, 25Gb Harddisk for OS, 2TB additional harddisk

• OS: CentOS5 • Network: 10.x.x.x IP address

설치전에 확인할 사항

root 계정, firewall, SElinux 확인하기

Hadoop을 설치하기 위해 준비한 서버들에 root계정으로 접속이 가능하거나 sudo명령어로 root와 같은 시스템권한등급을 행사할 수 있도록 sudoer 권한을 획득한 상태여야 한다. 그리고 각각의 서버들에는 특별한 방화벽 설정이나 보안에 대한 설정이 없어야 하며 만약 그런것이 설정이 되어 있는 Linux를 사용한다면 그러한 설정을 제어할 수 있는 권한을 가지고 있거나 그에 대한 사용법에 대해 알고 있어야 한다.

Page 2: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

SElinux나 firewall등이 작동하고 있으며 보안을 위해서 강력한 제한을 가지고 있다면 Hadoop과 관련된 port나 ACL(Access Control List)을 직접 설정해서 서버들간의 연결에 문제가 없도록 설정하거나 SELinux와 firewall을 아예 비활성화 할 필요가 있다. 이 튜토리얼에서는 외부와는 차단된 VM에 Hadoop을 설치하며 이것들은 다른 곳에서 접속이 가능하지 않도록 독립되어 있어 설치된 Linux에서 SELinux와 firewall을 통째로 비활성화하였다.

서버의 IP address 확인

자신이 사용할 서버들의 IP주소를 미리 알아 두어야 한다. 이 튜토리얼에서 사용하는 서버는 각기 아래와 같은 IP address를 가지고 있다.

10.1.1.1  

10.1.1.2  

10.1.1.3  

10.1.1.4

이 튜토리얼에서는 10.1.1.1을 Hadoop name node로 만들 것이다. 그리고 10.1.1.2, 10.1.1.3, 10.1.1.4를 Hadoop의 Job node로 만들것이다.

Hadoop 설치전에 서버에 해 놓을 일

Hostname 설정

각 서버들의 /etc/hosts 파일을 수정해 놓을 필요가 있다. 이미 알고 있겠지만 이 파일들은 hostname과 IP address를 수동으로(manually) 맵핑하는 파일이다. 이렇게 하는 이유는 Hadoop 세팅을 편하게 하기 위해서 이며 이렇게 하면 Hadoop을 configuration을 설정할 때 편리하다.

다음과 같은 설정으로 모든 서버에 (4대의 서버) 접속해서 /etc/hosts 파일을 아래와 같은 라인을 모두 추가해 둔다.

10.1.1.1  node0  

10.1.1.2  node1  

10.1.1.3  node2  

10.1.1.4  node3  

node0 ~ node3은 임의로 지정한 hostname이며 기억하기 쉬운 이름이라면 상관없다. 하지만 Hadoop을 설치하고 가동시킨 후에는 변경하는 것이 매우 위험하므로 그에 대해서 고려할 필요가 있다.

Page 3: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

Java설치

Hadoop은 Java로 작성되었으므로 당연히 JVM이 필요하다. Java는 대부분 Linux를 설치하고 나면 이미 설치가 되어 있으며, 만약 설치되어 있지 않다고 해도 매우 쉽게 설치할 수 있다. 여러분이 사용하는 서버에 Java가 설치되어 있지 않다면 아래의 명령어를 이용해 모든 서버에 설치한다. (CentOS5 기준)

yum  install  java

JAVA_HOME 환경변수 설정

JAVA_HOME 환경변수가 설정되어 있어야 한다. JAVA_HOME의 값에는 Java SDK나 JRE가 설치된 디렉토리를 지정해야 하는데, 사용하는 OS가 CentOS라면 아래 명령을 이용해서 알아낼 수 있다.

update-­‐alternatives  -­‐-­‐display  java

이 튜토리얼에 사용하는 작업환경에서는 JAVA_HOME이 "/usr/lib/jvm/jre-1.6.0-openjdk.x86_64" 이다. JAVA_HOME의 경로는 사용자의 환경이나 설치된 Java의 버전에 따라 달라 질 수 있으므로 자신의 서버에서 정확한 JAVA_HOME을 알아내야 한다. 그에 대한 방법은 관련 Linux 배포판에 대한 문서를 참고하거나 Java 설치법에 대한 다른 문서를 참고하기 바란다.

사용자의 환경에 맞는 적절한 JAVA_HOME을 알아 냈다면 다음과 같이 /etc/profile 또는 ~/.bashrc 등에 JAVA_HOME 환경변수를 등록해 둔다.

JAVA_HOME=/usr/lib/jvm/jre-­‐1.6.0-­‐openjdk.x86_64/  

export  JAVA_HOME=/usr/lib/jvm/jre-­‐1.6.0-­‐openjdk.x86_64

당연히 Java를 설치하고 JAVA_HOME을 설정하는 작업은 Hadoop이 설치될 서버에 모두 공통으로 해야 한다.

Hadoop 다운로드

이제 Hadoop을 설치하기 시작할 것이다. Hadoop은 Java로 작성되어 있어 다운로드 받은 파일의 압축을 해제(uncompress)하는 것만으로도 설치가 완료된다. Hadoop-1.0.0 버전은 rpm과 deb로 패키징 된 것을 지원하기 때문에 압축을 해지 하지 않고 rpm이나 dpkg 등을 이용해서 설치가 가능하다. 하지만 Hive를 함께 사용한다면 Hive가 아직 Hadoop-1.0.0을 지원하지 않으므로 사용하지 않는 것이 좋다.

Page 4: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

Hadoop을 설치하기 전에 Hadoop을 설치할 디렉토리를 먼저 만들어 두어야 한다. 다시말하면 압축을 해제할 적당한 디렉토리를 결정하고 생성해야 한다. 그리고 생성될 디렉토리는 공간이 충분한 Harddisk에 위치하도록 고려해야 한다. Hadoop은 작동하기 시작하면 로그 파일등을 만들어 내며 HDFS관리하면서 파일들을 저정하고 관리하기 위해서 많은 디스크 공간을 사용한다. 그렇기 때문에 Hadoop을 설치하려고 하는 디스크의 공간이 충분한지 확인하고 별도로 용량이 큰 추가의 하드디스크가 설치되어 있다면 어느곳에 마운트(mount) 되어 있는지 확인하고 그곳에 설치하는 것이 좋다. 이 튜토리얼에서는 각 2TB 이상의 하드디스크를 각 서버의 "/mnt"에 마운트를 만들어 놓았으며 그 하위에 "/mnt/srv" 디렉토리를 만들고 Hadoop을 그 디렉토리에 설치할 것이다. 이와 같은 디렉토리 구조도 역시 모든 서버에 동일하게 적용되는 것이 좋다.

아래와 같이 srv라는 임의의 디렉토리를 만든다.

mkdir  /mnt/srv  

cd  /mnt/srv

위에서 지정한 베이스(base) 디렉토리 이하에 Hadoop을 설치할 것이다.

이제 Hadoop의 공식홈페이지에서 사용할 Hadoop version을 다운로드 한다. 이 튜토리얼에서는 0.20.203 버전을 사용하는 것을 권장한다. Hadoop의 각 버전들은 아래 사이트를 방문하여 다운로드 할 수 있다. http://www.apache.org/dyn/closer.cgi/hadoop/common/

동일한 버전을 모든 서버에 똑같이 설치해야 하므로 다운로드 받은 파일을 모든 서버에서 복사하거나 다운로드 받은 파일을 모든 서버에 복사하면 된다.

아래와 같이 서버에서 Hadoop의 최신 버전을 다운로드 받는다.

wget   http://apache.tt.co.kr//hadoop/common/hadoop-­‐0.20.203.0/hadoop-­‐0.20.203.0rc1.tar.gz

다운로드 받은 파일의 압축을 해제한다.

tar  xvfz  hadoop-­‐0.20.203.0rc1.tar.gz

하나의 서버에서 다운로드 받은 후 다른 서버에 일괄적으로 동일한 디렉토리를 만들고 파일을 복사하려면 다음과 같이 shell command를 이용해서 할 수 있다. shell command에 익숙하지 않다면 직접 수작업으로 개별서버에 모두 동일한 작업을 하면 된다.

Page 5: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

$  for  I  in  `seq  3`;  do  ssh  node$I  'mkdir  /mnt/srv'  done  

   

$  for  I  in  `seq  3`;  do  scp  hadoop*.gz  node$I:/mnt/srv/;  done  

   

$   for   I   in   `seq   3`;   do   ssh   node$I   'cd   /mnt/srv/;   tar   xvfz  hadoop*.gz';  done

SSH key 설정

Hadoop의 namenode가 각각의 node를 제어할 수 있도록 하기 위해서 null passphrase key를 생성하고 세팅해야 한다. null passphrase key는 ssh의 key를 생성할 때 key의 패스워드를 물어보지 않도록 password를 입력하지 않는 것을 말하며 일반적으로 이것은 보안의 문제로 권장되지 않는 것이다. 하지만 보안시스템이 잘 구성된 안전한 환경내에서 각 서버들간의 접속을 자동화하기 위해서 많이 사용되는 방법이기도 하다. Hadoop은 namenode에서 각각의 서버에 접속해서 tasktracker를 실해하거나 datanode를 실행하는 작업을 하는데 이를 위해서는 이와 같이 null passphrase key를 이용해 password없이 특정한 계정으로 각각의 노드에 접속할 수 있도록 해 주어야 한다. 이 튜토리얼에서는 root계정으로 모든 서버에 각각 접속할 수 있도록 key를 생성하고 설정할 것이다. 더불어 root 계정의 null passphrase key를 생성하는것은 아주 위험한 것이므로 네트워크가 외부와 완전히 차단되어 있지 않다면 사용하지 않는 것이 좋다. null passphrase key를 생성하기 위해서 아래의 명령어로 비밀번호를 물어보지 않는 ssh의 private key와 public key를 생성한다.

ssh-­‐keygen  \-­‐t  rsa  \-­‐P  ''  \-­‐f  \~/.ssh/id_rsa

이제 public key를 authorized_keys에 등록한다.

cat  ~/.ssh/id_rsa.pub  >>  ~/.ssh/authorized_keys

이제 아래 명령어로 password를 입력하지 않고 localhost에 ssh로 접속이 가능한지 확인해 본다.

ssh  localhost

비밀번호를 물어보지 않고 자동 로긴 되면 완료된 것이다. 이제 접속된 localhost에서 빠져 나온다.

exit

Page 6: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

만약 openssh와 key가 제대로 생성되었음에도 불구하고 위와 같이 하였는데도 접속에 성공하지 못했거나 password를 물어보는 prompt를 보게 된다면 sshd의 설정을 확인해 보고 수정을 해야 할 수 있다. 이런 경우 sshd의 설정을 살펴보고 세팅을 변경해 줘야 할 수 있다. sshd의 설정 파일의 경로는 보통 "/etc/ssh/sshd_config" 텍스트 편집기로 수정해서 설정을 고칠 수 있다. 자신에게 익숙한 편집기를 사용해서 sshd_config 파일을 수정한다.

vi  /etc/ssh/sshd_config

많은 configuration 값들이 파일안에 있지만 주로 확인해 봐야할 것은 아래와 같은 설정값들이다. 아래의 코드 줄이 비활성화되어 있다면 (줄의 맨 앞에 #이 붙어 있거나 파일의 안에 내용이 존재하지 않는 경우) 아래와 같은 내용을 넣어주거나 수정하고 저장한 후 편집기를 종료(quit)한다.

RSAAuthentication  yes  

PubkeyAuthentication  yes  

AuthorizedKeysFile  .ssh/authorized_keys

설정파일을 고치고도 localhost에 ssh로 password를 입력하지 않고 접속할 수 없다면 시스템관리자에게 문의하거나 sshd의 설정에 대해서 따로 관련 자료를 참조한다.

이제 만들어 둔 key파일의 public key를 다른 서버들의 ~/.ssh/authorized_keys에 넣어주어야 한다. 원래는 ~/.ssh/id_rsa.pub 파일을 다른 서버들에 복사한 후에 authorized_keys에 추가해 주어야 하지만 이 튜토리얼에서는 편의상 name node에 있는 authorized_keys를 다른 서버에 복사할 것이다. 아래와 같이 전체 복사한다.

$   for   I   in   `seq   3`;   do   scp   ~/.ssh/id_rsa.pub   node$I:~/.ssh/;  done

Hadoop 환경설정 수정하기

Hadoop이 설치되었으면 Hadoop의 환경설정을 해야 한다. 환경설정 디렉토리로 이동해도 몇개의 파일을 고쳐야만 한다. 이 튜토리얼에서는 hadoop-env.sh, core-site.xml, mapred-site.xml, hdfs-site.xml 라는 총 4개의 파일을 수정할 것이다.

Page 7: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

Hadoop conf 디렉토리로 이동

먼저 설치된 Hadoop의 conf 디렉토리로 작업 디렉토리를 변경한다.

cd  /mnt/srv/hadoop-­‐0.20.203.0/conf

hadoop-env.sh 수정

텍스트편집기를 열어 hadoop-env.sh의 내용을 수정한다.

vi  hadoop-­‐env.sh

아래의 내용을 찾아 자신이 설정한 디렉토리와 JAVE_HOME을 고쳐주어야 한다.

export  JAVA_HOME=/usr/java/default  

export  HADOOP_LOG_DIR=/mnt/srv/hadoopdata/data/logs

JAVA_HOME은 이 튜토리얼의 앞서 과정에서 알아낸 JAVA_HOME을 동일하게 세팅하면 된다. HADOOP_LOG_DIR은 Hadoop의 log가 저장될 디렉토리로 공간이 충분한 곳을 지정해 두는 것이 좋다. 우리는 /mnt/srv/hadoopdata/data/logs 라는 디렉토리를 사용하도록 할 것이다.

core-site.xml 수정

텍스트 편집기로 core-sie.xml을 오픈한다.

vi  core-­‐site.xml

파일의 내용중에 fs.default.name과 hadoop.tmp.dir를 적당한 값으로 수정한다.

<configuration>  

<property>  

<name>fs.default.name</name>  

<value>hdfs://node0:9000</value>  

</property>  

<property>  

<name>hadoop.tmp.dir</name>  

<value>/mnt/srv/hadoopdata/hadoop-­‐${user.name}</value>  

<description>A   base   for   other   temporary  

Page 8: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

directories.</description>  

</property>  

</configuration>  

hdfs-site.xml 수정하기

hdfs-site.xml은 수정할 필요가 없다. 하지만 수정할 것이 필요하다면 core-site.xml 파일과 마찬가지로 텍스트 편집기로 오픈해서 설정값을 바꿀 수 있다. 텍스트 편집기로 hdfs-site.xml 파일을 오픈한다.

vi  hdfs-­‐site.xml

만약 Hadoop이 동시에 오픈할 파일 개수를 늘리고 싶다면 아래와 같이 설정값을 바꿀 수 있다.

<configuration> <property> <name>dfs.datanode.max.xcievers</name> <value>4096</value> </property>  

</configuration>

위 부분은 옵션이므로 반드시 해야 하는 것은 아니다.

mapred-site.xml 수정하기

vi와 같은 text editor로 mapred-site.xml를 오픈한다.

vi  mapred-­‐site.xml

파일을 열어서 내용을 확인해 보면 다음과 유사한 내용을 볼 수 있을 것이며 이 설정중에 mapred.job.tracker 부분에 value를 자신의 환경에 맞도록 설정한다. 나머지는 default를 사용하거나 자신에게 맞는 설정으로 변경하면 된다.

<configuration>  

<property>  

<name>mapred.job.tracker</name>  

<value>node0:9001</value>  

Page 9: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

</property>  

<property>  

<name>mapred.jobtracker.taskScheduler</name>  

<value>org.apache.hadoop.mapred.FairScheduler</value>  

</property>  

<property>  

<name>mapred.tasktracker.map.tasks.maximum</name>  

<value>6</value>  

</property>  

<property>  

<name>mapred.tasktracker.reduce.tasks.maximum</name>  

<value>6</value>  

</property>  

<property>  

<name>mapred.child.java.opts</name>  

<value>-­‐Xmx2048M</value>  

</property>  

<property>  

<name>mapred.reduce.tasks</name>  

<value>16</value>  

</property>  

<property>  

<name>mapred.task.timeout</name>  

<value>3600000</value>  

</property>  

</configuration>

Hadoop 가동 시키기

Hadoop 작동 여부 확인하기

Hadoop 설치 후에 웹브라우저를 이용해서 Hadoop의 상태를 확인할 수 있는 webpage에 접속할 수 있다. 보통은 50030의 port에서 서비스하고 있다.

Page 10: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

http://node0:50030/

웹페이지에서 아래와 같이 State가 "RUNNING"이라는 메세지를 본다면 Hadoop이 정상적으로 작동하고 있는 것이다.

node0  Hadoop  Map/Reduce  Administration  

   

Quick  Links  State:  RUNNING  

Started:  Thu  Jan  05  17:24:18  EST  2012  

Version:  0.20.203.0,  r1099333  

Compiled:  Wed  May  4  07:57:50  PDT  2011  by  oom  

Identifier:  201201051724

위의 페이지는 Hadoop namenode가 방화벽 안쪽에 있고 50030가 오픈되어 있지 않다면 당연히 접속할 수 없다.

MRbench 실행해 보기

Hadoop은 기본적으로 몇개의 유용한 유틸리티를 제공한다. 그 중에 hadoop-test-*을 이용해서 맵/리듀스 작업을 쉽게 확인해 볼 수 있다. 이 튜토리얼에서 사용하는 Hadoop 버전은 0.20.203.0 이므로 Hadoop home 디렉토리에 hadoop-test-0.20.203.0.jar 파일이 존재해야 하며 이 유틸리티를 이용해서 Hadoop의 Map/Reduce가 작동하는지 다음과 같은 명령으로 확인한다.

$HADOOP_HOME/bin/hadoop   jar   $HADOOP_HOME/hadoop-­‐test-­‐0.20.203.0.jar  mrbench

위 명령의 수행 결과는 다음과 같다.

MRBenchmark.0.0.2  

11/12/07  13:15:36  INFO  mapred.MRBench:  creating  control  file:  1  numLines,  ASCENDING  sortOrder  

11/12/07   13:15:36   INFO   mapred.MRBench:   created   control   file:  /benchmarks/MRBench/mr_input/input_-­‐1026698718.txt  

11/12/07   13:15:36   INFO   mapred.MRBench:   Running   job   0:  input=hdfs://node0:9000/benchmarks/MRBench/mr_input  output=hdfs://node0:9000/benchmarks/MRBench/mr_output/output_1220591687  

11/12/07   13:15:36   INFO   mapred.FileInputFormat:   Total   input  

Page 11: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

paths  to  process  :  1  

11/12/07   13:15:37   INFO   mapred.JobClient:   Running   job:  job_201112071314_0001  

11/12/07  13:15:38  INFO  mapred.JobClient:    map  0%  reduce  0%  

11/12/07  13:15:55  INFO  mapred.JobClient:    map  50%  reduce  0%  

11/12/07  13:15:58  INFO  mapred.JobClient:    map  100%  reduce  0%  

11/12/07  13:16:10  INFO  mapred.JobClient:    map  100%  reduce  100%  

11/12/07   13:16:15   INFO   mapred.JobClient:   Job   complete:  job_201112071314_0001  

11/12/07  13:16:15  INFO  mapred.JobClient:  Counters:  26  

11/12/07  13:16:15  INFO  mapred.JobClient:      Job  Counters  

11/12/07   13:16:15   INFO   mapred.JobClient:           Launched   reduce  tasks=1  

11/12/07   13:16:15   INFO  mapred.JobClient:          SLOTS_MILLIS_MAPS=22701  

11/12/07   13:16:15   INFO   mapred.JobClient:           Total   time   spent  by  all  reduces  waiting  after  reserving  slots  (ms)=0  

11/12/07   13:16:15   INFO   mapred.JobClient:           Total   time   spent  by  all  maps  waiting  after  reserving  slots  (ms)=0  

11/12/07   13:16:15   INFO   mapred.JobClient:           Launched   map  tasks=2  

11/12/07   13:16:15   INFO   mapred.JobClient:           Data-­‐local   map  tasks=2  

11/12/07   13:16:15   INFO  mapred.JobClient:          SLOTS_MILLIS_REDUCES=15000  

11/12/07   13:16:15   INFO   mapred.JobClient:       File   Input   Format  Counters  

11/12/07  13:16:15  INFO  mapred.JobClient:          Bytes  Read=4  

11/12/07   13:16:15   INFO   mapred.JobClient:       File   Output   Format  Counters  

11/12/07  13:16:15  INFO  mapred.JobClient:          Bytes  Written=3  

11/12/07  13:16:15  INFO  mapred.JobClient:      FileSystemCounters  

11/12/07  13:16:15  INFO  mapred.JobClient:          FILE_BYTES_READ=13  

11/12/07   13:16:15   INFO  mapred.JobClient:          HDFS_BYTES_READ=244  

Page 12: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

11/12/07   13:16:15   INFO  mapred.JobClient:          FILE_BYTES_WRITTEN=63949  

11/12/07   13:16:15   INFO  mapred.JobClient:          HDFS_BYTES_WRITTEN=3  

11/12/07  13:16:15  INFO  mapred.JobClient:      Map-­‐Reduce  Framework  

11/12/07   13:16:15   INFO   mapred.JobClient:           Map   output  materialized  bytes=19  

11/12/07   13:16:15   INFO   mapred.JobClient:           Map   input  records=1  

11/12/07   13:16:15   INFO   mapred.JobClient:           Reduce   shuffle  bytes=19  

11/12/07  13:16:15  INFO  mapred.JobClient:          Spilled  Records=2  

11/12/07  13:16:15  INFO  mapred.JobClient:          Map  output  bytes=5  

11/12/07  13:16:15  INFO  mapred.JobClient:          Map  input  bytes=2  

11/12/07   13:16:15   INFO   mapred.JobClient:           Combine   input  records=0  

11/12/07   13:16:15   INFO  mapred.JobClient:          SPLIT_RAW_BYTES=240  

11/12/07   13:16:15   INFO   mapred.JobClient:           Reduce   input  records=1  

11/12/07   13:16:15   INFO   mapred.JobClient:           Reduce   input  groups=1  

11/12/07   13:16:15   INFO   mapred.JobClient:           Combine   output  records=0  

11/12/07   13:16:15   INFO   mapred.JobClient:           Reduce   output  records=1  

11/12/07   13:16:15   INFO   mapred.JobClient:           Map   output  records=1  

DataLines              Maps        Reduces  AvgTime  (milliseconds)  

1                              2              1              39487  

여기까지의 과정이 에러없이 수행되었다면 Hadoop이 정상적으로 작동했다는 것을 알 수 있다. 이제 여러분 각자의 Map/Reduce 구현체를 작성해서 Hadoop을 이용해서 분산처리를 할 수 있을 것이다. 다만 Hadoop으로만 구성된 환경에서 R로 Map/Reduce 구현체를 작성하기 위해서는 다른 addon 소프트웨어들을 설치하거나 Hadoop streaming방식으로 script를 작성해야 한다. 그리고 Hadoop만을 이용해 HDFS상의 파일들을 관리하려면 GUI방식의 client를 아직은 지원하지 않기 때문에 CLI(Command

Page 13: RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

Line Interface)에 능숙해야 하며 좀더 세련된 기능을 원한다면 Hive와 PIG와 같은 추가 솔루션을 설치하는 것이 바람직하다.