SlideShare a Scribd company logo
1 of 13
Download to read offline
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를 사용한다면 그러한 설정을 제어할 수 있는
권한을 가지고 있거나 그에 대한 사용법에 대해 알고 있어야 한다.
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을 설치하고 가동시킨 후에는 변경하는 것이 매우 위험하므로 그에
대해서 고려할 필요가 있다.
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을 지원하지 않으므로
사용하지 않는 것이 좋다.
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에 익숙하지 않다면 직접 수작업으로 개별서버에 모두 동일한 작업을
하면 된다.
$	
  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
만약 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개의 파일을 수정할 것이다.
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	
  
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>	
  
</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에서 서비스하고 있다.
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_12
20591687	
  
11/12/07	
   13:15:36	
   INFO	
   mapred.FileInputFormat:	
   Total	
   input	
  
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	
  
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
Line Interface)에 능숙해야 하며 좀더 세련된 기능을 원한다면 Hive와 PIG와 같은 추가
솔루션을 설치하는 것이 바람직하다.

More Related Content

What's hot

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-v11Dongil Yeom
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)Ji-Woong Choi
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편Sam Kim
 
Dockerfile과 Bash
Dockerfile과 BashDockerfile과 Bash
Dockerfile과 Bashpyrasis
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기Ji-Woong Choi
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XpressEngine
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기Ji-Woong Choi
 
Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQLI Goo Lee
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1Ji-Woong Choi
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집Daegwon Kim
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration GuideJi-Woong Choi
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편Ji-Woong Choi
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Keon Ahn
 
(참고) Elk stack 설치 및 kafka
(참고) Elk stack 설치 및 kafka(참고) Elk stack 설치 및 kafka
(참고) Elk stack 설치 및 kafkaNoahKIM36
 

What's hot (16)

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 on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편
 
Dockerfile과 Bash
Dockerfile과 BashDockerfile과 Bash
Dockerfile과 Bash
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기
 
Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQL
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리
 
(참고) Elk stack 설치 및 kafka
(참고) Elk stack 설치 및 kafka(참고) Elk stack 설치 및 kafka
(참고) Elk stack 설치 및 kafka
 

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

RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정Aiden Seonghak Hong
 
리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호ETRIBE_STG
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment SettingKwangyoun Jung
 
02.실전! 시스템 관리자를 위한 Ansible
02.실전! 시스템 관리자를 위한 Ansible02.실전! 시스템 관리자를 위한 Ansible
02.실전! 시스템 관리자를 위한 AnsibleOpennaru, inc.
 
Rasberry nodejs install_final
Rasberry nodejs install_finalRasberry nodejs install_final
Rasberry nodejs install_finalKwan Yeong Kim
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for HadoopSeungYong Baek
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea CloudJude Kim
 
Gradle & IntelliJ & Vert.x
Gradle & IntelliJ & Vert.xGradle & IntelliJ & Vert.x
Gradle & IntelliJ & Vert.xKwnaghwan Cho
 
초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정Seonghun Kang
 
실용주의 프로그래머를 위한 개발환경 만들기
실용주의 프로그래머를 위한 개발환경 만들기실용주의 프로그래머를 위한 개발환경 만들기
실용주의 프로그래머를 위한 개발환경 만들기Mickey SJ Lee
 
Red hat ansible engine 2.7 release(Korean version)
Red hat ansible engine 2.7 release(Korean version)Red hat ansible engine 2.7 release(Korean version)
Red hat ansible engine 2.7 release(Korean version)Leo Song
 
Hadoop Installation Tutorial for KT ucloud biz
Hadoop Installation Tutorial for KT ucloud bizHadoop Installation Tutorial for KT ucloud biz
Hadoop Installation Tutorial for KT ucloud biz치완 박
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱NAVER D2
 
하둡 설치(의사분산모드)
하둡 설치(의사분산모드)하둡 설치(의사분산모드)
하둡 설치(의사분산모드)Kwangyoung Jeon
 
Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정HyeonSeok Choi
 
[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)Ildoo Kim
 

Similar to RHive tutorial supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치 (20)

RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
 
리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호
 
03.Ansible 소개
03.Ansible 소개03.Ansible 소개
03.Ansible 소개
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment Setting
 
02.실전! 시스템 관리자를 위한 Ansible
02.실전! 시스템 관리자를 위한 Ansible02.실전! 시스템 관리자를 위한 Ansible
02.실전! 시스템 관리자를 위한 Ansible
 
Rasberry nodejs install_final
Rasberry nodejs install_finalRasberry nodejs install_final
Rasberry nodejs install_final
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
 
Gradle & IntelliJ & Vert.x
Gradle & IntelliJ & Vert.xGradle & IntelliJ & Vert.x
Gradle & IntelliJ & Vert.x
 
초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정
 
실용주의 프로그래머를 위한 개발환경 만들기
실용주의 프로그래머를 위한 개발환경 만들기실용주의 프로그래머를 위한 개발환경 만들기
실용주의 프로그래머를 위한 개발환경 만들기
 
Red hat ansible engine 2.7 release(Korean version)
Red hat ansible engine 2.7 release(Korean version)Red hat ansible engine 2.7 release(Korean version)
Red hat ansible engine 2.7 release(Korean version)
 
What is spark
What is sparkWhat is spark
What is spark
 
Hadoop Installation Tutorial for KT ucloud biz
Hadoop Installation Tutorial for KT ucloud bizHadoop Installation Tutorial for KT ucloud biz
Hadoop Installation Tutorial for KT ucloud biz
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
 
하둡 설치(의사분산모드)
하둡 설치(의사분산모드)하둡 설치(의사분산모드)
하둡 설치(의사분산모드)
 
Apache hive
Apache hiveApache hive
Apache hive
 
Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정
 
[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)
 

More from 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 3: RHive 튜토리얼 3 - HDFS 함수
RHive tutorial 3: RHive 튜토리얼 3 - HDFS 함수RHive tutorial 3: RHive 튜토리얼 3 - HDFS 함수
RHive tutorial 3: RHive 튜토리얼 3 - HDFS 함수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
 
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
 

More from Aiden Seonghak Hong (12)

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 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 2: RHive 튜토리얼 2 - 기본 함수
RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수
RHive tutorial 2: RHive 튜토리얼 2 - 기본 함수
 
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 supplement 1: RHive 튜토리얼 부록 1 - Hadoop 설치

  • 1. 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를 사용한다면 그러한 설정을 제어할 수 있는 권한을 가지고 있거나 그에 대한 사용법에 대해 알고 있어야 한다.
  • 2. 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을 설치하고 가동시킨 후에는 변경하는 것이 매우 위험하므로 그에 대해서 고려할 필요가 있다.
  • 3. 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을 지원하지 않으므로 사용하지 않는 것이 좋다.
  • 4. 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에 익숙하지 않다면 직접 수작업으로 개별서버에 모두 동일한 작업을 하면 된다.
  • 5. $  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
  • 6. 만약 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개의 파일을 수정할 것이다.
  • 7. 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  
  • 8. 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>  
  • 9. </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에서 서비스하고 있다.
  • 10. 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_12 20591687   11/12/07   13:15:36   INFO   mapred.FileInputFormat:   Total   input  
  • 11. 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  
  • 12. 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
  • 13. Line Interface)에 능숙해야 하며 좀더 세련된 기능을 원한다면 Hive와 PIG와 같은 추가 솔루션을 설치하는 것이 바람직하다.