메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

Hadoop을 이용한 분산 데이터 처리, Part 2: 추가 주제

다중 노드 클러스터 설치 및 구성하기

M. Tim Jones, Consultant Engineer, Emulex Corp.
M. Tim Jones
M. Tim Jones is an embedded firmware architect and the author of Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming, AI Application Programming, and BSD Sockets Programming from a Multi-language Perspective. His engineering background ranges from the development of kernels for geosynchronous spacecraft to embedded systems architecture and networking protocols development. He is a senior architect for Emulex Corp. in Longmont, Colo.

요약:  이 시리즈첫 번째 기사에서는 단일 노드 클러스터에서 Hadoop을 사용하는 방법을 살펴보았습니다. 뒤를 이어 이 기사에서는 병렬 처리를 위해 다중 노드를 사용하는 고급 설정에 대해 살펴봅니다. 다중 노드 클러스터에 필요한 다양한 노드 유형을 설명하고 병렬 환경에서 MapReduce 기능을 살펴봅니다. 또한 Hadoop의 명령행 및 웹 기반 관리 기능에 대해서도 설명합니다.

이 연재 자세히 보기

원문 게재일:  2010 년 6 월 03 일 번역 게재일:   2010 년 7 월 19 일
난이도:  중급 영어로:  보기 PDF:  A4 and Letter (359KB | 15 pages)Get Adobe® Reader®
페이지뷰:  15206 회
의견:  


Tim과 연락하기

Tim은 developerWorks의 가장 유명한 다작 저자 중 한 명이다. developerWorks에 실린 Tim의 모든 기사를 살펴보자. Tim의 프로파일을 확인하고 Tim과 다른 저자 및 My developerWorks의 동료 독자와 연락을 해보자.

Hadoop 분산 컴퓨팅 아키텍처의 진정한 힘은 분배 기능에 있다. 다시 말해서, Hadoop은 작업을 많은 노드에 병렬로 분배하는 기능을 통해 대형 인프라로 확장할 수 있고 대용량 데이터를 처리할 수 있다. 먼저 이 분산 Hadoop 아키텍처를 자세히 설명한 후 분산 구성 및 사용에 대해 살펴본다.

분산 Hadoop 아키텍처

모든 Hadoop 디먼이 동일한 호스트에서 실행되었던 이 시리즈의 Part 1을 다시 한번 생각해보자. Hadoop의 병렬 특성을 활용하지는 않지만 이 가상 분산 구성을 사용하면 최소한의 설정으로 Hadoop의 기능을 쉽게 테스트할 수 있다. 이제 여러 시스템으로 구성된 클러스터를 사용하여 Hadoop의 병렬 특성을 살펴보자.

Part 1의 Hadoop 구성에서는 모든 Hadoop 디먼이 단일 노드에서 실행되는 것으로 정의했다. 따라서 먼저 Hadoop이 병렬 작업을 위해 자연스럽게 분배되는 방법을 살펴보자. 분산 Hadoop 설정에서는 하나의 마스터 노드와 여러 개의 슬레이브 노드를 사용한다(그림 1 참조).


그림 1. Hadoop 마스터 및 슬레이브 노드
Hadoop 마스터 및 슬레이브 노드

그림 1에서 보듯이 마스터 노드는 namenode, secondary namenode 및 jobtracker 디먼(소위 마스터 디먼)으로 구성되어 있다. 또한 이 기사의 데모에서는 이 노드에서 Hadoop 유틸리티 및 브라우저를 사용하여 클러스터를 관리한다. 슬레이브 노드는 jobtracker 및 datanode(슬레이브 디먼)로 구성되어 있다. 이 설정의 특징은 마스터 노드에 Hadoop 클러스터를 관리 및 조정하는 디먼이 있고, 슬레이브 노드에 HDFS(Hadoop file system)에 대한 저장소 함수와 MapReduce 기능(데이터 처리 함수)을 구현한 디먼이 있다는 것이다.

이 데모에서는 단일 LAN에 위치한 하나의 마스터 노드와 두 개의 슬레이브 노드를 작성한다. 이 설정은 그림 2와 같다. 이제 다중 노드 분배 및 구성을 위한 Hadoop의 설치를 살펴보자.


그림 2. Hadoop 클러스터 구성
Hadoop 클러스터 구성

배치를 단순화하기 위해 몇 가지 장점이 있는 가상화를 이용한다. 이 설정에서는 성능이 향상되지는 않지만 가상화를 사용하면 Hadoop 설치를 작성한 후 복제하여 다른 노드에 사용할 수 있다. 따라서 Hadoop 클러스터는 그림 3과 같이 구성되어야 한다. 즉, 단일 호스트에 있는 하이퍼바이저의 컨텍스트에서 마스터 및 슬레이브 노드가 VM(Virtual Machine)으로 실행되어야 한다(그림 3 참조).


그림 3. 가상 환경에 있는 Hadoop 클러스터 구성
가상 환경에 있는 Hadoop 클러스터 구성

Hadoop 업그레이드하기

Part 1에서는 단일 노드에서 실행되는 특별한 Hadoop 배포판을 설치했다(가상 구성). 이 기사에서는 분산 구성을 위해 업데이트한다. 이 시리즈를 이 기사부터 읽은 경우에는 먼저 Part 1을 보고 Hadoop 가상 구성을 설치한다.

가상 구성에서는 모든 구성이 단일 노드에 적합하게 미리 구성되어 있었기 때문에 어떠한 구성 작업도 수행하지 않았다. 이제 구성을 업데이트해야 한다. 먼저 Listing 1과 같이 update-alternatives 명령을 사용하여 현재 구성을 확인한다. 이 명령은 구성이 conf.pseudo(최상위 우선순위)를 사용하고 있음을 알려 준다.


Listing 1. 현재 Hadoop 구성 확인하기
	
$ update-alternatives --display hadoop-0.20-conf
hadoop-0.20-conf - status is auto.
 link currently points to /etc/hadoop-0.20/conf.pseudo
/etc/hadoop-0.20/conf.empty - priority 10
/etc/hadoop-0.20/conf.pseudo - priority 30
Current `best' version is /etc/hadoop-0.20/conf.pseudo.
$ 

이제 다음과 같이 기존 구성(이 경우에는 conf.empty, Listing 1 참조)을 복사하여 새 구성을 작성한다.

$ sudo cp -r /etc/hadoop-0.20/conf.empty /etc/hadoop-0.20/conf.dist
$ 

마지막으로 새 구성을 활성화하고 확인한다.


Listing 2. Hadoop 구성 활성화 및 확인하기
	
$ sudo update-alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf \
  /etc/hadoop-0.20/conf.dist 40
$ update-alternatives --display hadoop-0.20-conf
hadoop-0.20-conf - status is auto.
 link currently points to /etc/hadoop-0.20/conf.dist
/etc/hadoop-0.20/conf.empty - priority 10
/etc/hadoop-0.20/conf.pseudo - priority 30
/etc/hadoop-0.20/conf.dist - priority 40
Current `best' version is /etc/hadoop-0.20/conf.dist.
$ 

이제 새로운 분산 구성에 사용할 conf.dist라는 새 구성이 작성되었다. 가상 환경에서 실행 중인 이 단계에서는 이 노드를 복제하여 데이터 노드로 사용할 두 개의 추가 노드를 작성한다.


분산 작업을 위해 Hadoop 구성하기

다음 단계에서는 모든 노드가 서로 인식할 수 있도록 설정해야 한다. 이 작업은 마스터슬레이브라고 하는 /etc/hadoop-0.20/conf.dist 파일에서 수행한다. 이 예제에서 사용하는 세 개의 노드에는 /etc/hosts에서 다음과 같이 IP 주소가 정적으로 지정된다.


Listing 3. 이 설정을 위한 Hadoop 노드(/etc/hosts)
	
master 192.168.108.133
slave1 192.168.108.134
slave2 192.168.108.135

따라서 마스터 노드에서 다음과 같이 표시된 마스터 노드를 식별하도록 /etc/hadoop-0.20/conf.dist/masters를 업데이트한다.

master

그런 다음 /etc/hadoop-0.20/conf.dist/slaves에서 슬레이브 노드를 식별한다. 이 구성에는 아래와 같은 2행이 포함되어 있다.

slave1
slave2

이제 각 노드에서 SSH(Secure Shell)을 통해 서로 다른 노드에 연결하여 비밀번호 문구를 사용하지 않는 ssh가 작동하는지 확인한다. 이러한 각 파일(masters, slaves)은 Hadoop이 이 시리즈의 Part 1에서 사용했던 유틸리티를 시작 및 중지하는 데 사용된다.

이제 /etc/hadoop-0.20/conf.dist 서브디렉토리에서 Hadoop 관련 구성을 수행할 차례이다. Hadoop 문서에 정의된 대로 모든 노드(마스터 및 두 슬레이브)에서 다음과 같은 변경 작업을 수행해야 한다. 먼저, core-site.xml(Listing 4) 파일에서 namenode의 호스트와 포트를 정의한 HDFS 마스터를 식별한다. (마스터 노드의 IP 주소를 기록한다.) core-site.xml 파일은 Hadoop의 핵심 특성을 정의한다.


Listing 4. core-site.xml에서 HDFS 마스터 정의하기
	
<configuration>

  <property>
    <name>fs.default.name<name>
    <value>hdfs://master:54310<value>
    <description>The name and URI of the default FS.</description>
  <property>

<configuration>

다음으로 MapReduce jobtracker를 식별한다. 이 jobtracker는 자체 노드에 존재할 수 있지만 이 구성에서는 Listing 5와 같이 마스터 노드에 배치한다. mapred-site.xml 파일에 MapReduce 특성이 있다.


Listing 5. mapred-site.xml에서 MapReduce jobtracker 정의하기
	
<configuration>

  <property>
    <name>mapred.job.tracker<name>
    <value>master:54311<value>
    <description>Map Reduce jobtracker<description>
  <property>

<configuration>

마지막으로 기본 복제 요소를 정의한다(Listing 6). 이 값은 작성할 복제의 수를 정의하며, 일반적으로 3 이하의 값이 사용된다. 이 경우에는 2(datanode의 수)로 정의한다. 이 값은 HDFS 특성이 있는 hdfs-site.xml에서 정의된다.


Listing 6. hdfs-site.xml에서 기본 데이터 복제 정의하기
	
<configuration>

  <property>
    <name>dfs.replication<name>
    <value>2<value>
    <description>Default block replication<description>
  <property>

<configuration>

Listing 4, Listing 5Listing 6에서 살펴본 구성 항목은 분산 설정을 위한 필수 요소이다. 여기에서 Hadoop은 전체 환경을 추적하는 데 사용할 수 있는 수많은 구성 옵션을 제공한다. 참고자료 섹션에서 사용할 수 있는 옵션에 대한 자세한 정보를 볼 수 있다.

구성을 완료한 후에는 namenode(HDFS 마스터 노드)의 형식을 지정해야 한다. 이 작업을 수행하기 위해 hadoop-0.20 유틸리티를 사용하여 다음과 같이 namenode와 작업(-format)을 지정한다.


Listing 7. namenode 형식 지정하기
	
user@master:~# sudo su -
root@master:~# hadoop-0.20 namenode -format
10/05/11 18:39:58 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = master/127.0.1.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.20.2+228
STARTUP_MSG:   build =  -r cfc3233ece0769b11af9add328261295aaf4d1ad; 
************************************************************/
10/05/11 18:39:59 INFO namenode.FSNamesystem: fsOwner=root,root
10/05/11 18:39:59 INFO namenode.FSNamesystem: supergroup=supergroup
10/05/11 18:39:59 INFO namenode.FSNamesystem: isPermissionEnabled=true
10/05/11 18:39:59 INFO common.Storage: Image file of size 94 saved in 0 seconds.
10/05/11 18:39:59 INFO common.Storage: 
  Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted.
10/05/11 18:39:59 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/127.0.1.1
************************************************************/
root@master:~# 

namenode의 형식을 지정한 후에는 Hadoop 디먼을 시작해야 한다. Part 1에서 수행했던 이전 가상 분산 구성과 동일한 작업을 수행하지만 이 프로세스는 분산 구성에 대해 동일한 결과를 제공한다. 이 코드는 jps 명령에 지정된 대로 namenode와 secondary namenode를 시작한다.


Listing 8. namenode 시작하기
	
root@master:~# /usr/lib/hadoop-0.20/bin/start-dfs.sh
starting namenode, logging to 
  /usr/lib/hadoop-0.20/bin/../logs/hadoop-root-namenode-mtj-desktop.out
192.168.108.135: starting datanode, logging to 
  /usr/lib/hadoop-0.20/bin/../logs/hadoop-root-datanode-mtj-desktop.out
192.168.108.134: starting datanode, logging to 
  /usr/lib/hadoop-0.20/bin/../logs/hadoop-root-datanode-mtj-desktop.out
192.168.108.133: starting secondarynamenode, 
  logging to /usr/lib/hadoop-0.20/logs/hadoop-root-secondarynamenode-mtj-desktop.out
root@master:~# jps
7367 NameNode
7618 Jps
7522 SecondaryNameNode
root@master:~# 

jps를 사용하여 슬레이브 노드(데이터 노드) 중 하나를 검사하면 이제 각 노드에 datanode 디먼이 있다는 것을 알 수 있다.


Listing 9. 슬레이브 노드 중 하나에서 datanode 검사하기
	
root@slave1:~# jps
10562 Jps
10451 DataNode
root@slave1:~# 

다음 단계에서는 MapReduce 디먼(jobtracker 및 tasktracker)을 시작한다. 이 작업은 Listing 10처럼 수행한다. 이 스크립트는 구성에 정의된 대로 마스터 노드에서 jobtracker를 시작하고(Listing 5 참조) 각 슬레이브 노드에서 tasktracker를 시작한다. 마스터 노드의 jps 명령은 jobtracker가 실행되고 있음을 보여 준다.


Listing 10. MapReduce 디먼 시작하기
	
root@master:~# /usr/lib/hadoop-0.20/bin/start-mapred.sh
starting jobtracker, logging to 
  /usr/lib/hadoop-0.20/logs/hadoop-root-jobtracker-mtj-desktop.out
192.168.108.134: starting tasktracker, logging to 
  /usr/lib/hadoop-0.20/bin/../logs/hadoop-root-tasktracker-mtj-desktop.out
192.168.108.135: starting tasktracker, logging to 
  /usr/lib/hadoop-0.20/bin/../logs/hadoop-root-tasktracker-mtj-desktop.out
root@master:~# jps
7367 NameNode
7842 JobTracker
7938 Jps
7522 SecondaryNameNode
root@master:~# 

마지막으로 jps로 슬레이브 노드를 확인한다. 여기에서는 tasktracker 디먼이 datanode 디먼을 각 슬레이브 데이터 노드에 결합했음을 알 수 있다.


Listing 11. 슬레이브 노드 중 하나에서 datanode 검사하기
	
root@slave1:~# jps
7785 DataNode
8114 Jps
7991 TaskTracker
root@slave1:~# 

그림 4에서는 시작 스크립트, 노드 및 시작된 디먼 간의 관계를 보여 준다. 이 그림을 보면 start-dfs 스크립트가 namenode와 datanode를 시작하고, start-mapred 스크립트는 jobtracker와 tasktracker를 시작한다는 것을 알 수 있다.


그림 4. 시작 스크립트 및 디먼의 각 노드에 대한 관계
시작 스크립트 및 디먼의 각 노드에 대한 관계

HDFS 테스트하기

이제 Hadoop이 설정되어 클러스터에서 실행 중이므로 두 가지 테스트를 실행하여 Hadoop이 작동 중인지 확인할 수 있다(Listing 12 참조). 먼저, hadoop-0.20 유틸리티를 통해 파일 시스템 명령(fs)을 실행하고 df(디스크 해제) 작업을 요청한다. Linux®에서와 마찬가지로 이 명령은 단순히 특정 장치에 사용된 공간과 사용 가능한 공간을 식별한다. 따라서 새로 포맷한 파일 시스템을 사용하므로 사용된 공간이 없다. 그런 다음 HDFS의 루트에서 ls 작업을 수행하고, 서브디렉토리를 작성한 다음 디렉토리의 내용을 나열한 후 서브디렉토리를 제거한다. 마지막으로 hadoop-0.20 유틸리티 내에서 fsck 명령을 사용하여 HDFS에 대한 fsck(파일 시스템 검사)를 수행할 수 있다. 이 모든 작업의 결과는 다양한 여러 정보(예를 들어, 두 개의 datanode가 감지되었다는 정보)와 함께 파일 시스템의 상태가 정상임을 보여 준다.


Listing 12. HDFS 검사하기
	
root@master:~# hadoop-0.20 fs -df
File system		Size	Used	Avail		Use%
/		16078839808	73728	3490967552	0%
root@master:~# hadoop-0.20 fs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2010-05-12 12:16 /tmp
root@master:~# hadoop-0.20 fs -mkdir test
root@master:~# hadoop-0.20 fs -ls test
root@master:~# hadoop-0.20 fs -rmr test
Deleted hdfs://192.168.108.133:54310/user/root/test
root@master:~# hadoop-0.20 fsck /
.Status: HEALTHY
 Total size:	4 B
 Total dirs:	6
 Total files:	1
 Total blocks (validated):	1 (avg. block size 4 B)
 Minimally replicated blocks:	1 (100.0 %)
 Over-replicated blocks:	0 (0.0 %)
 Under-replicated blocks:	0 (0.0 %)
 Mis-replicated blocks:		0 (0.0 %)
 Default replication factor:	2
 Average block replication:	2.0
 Corrupt blocks:		0
 Missing replicas:		0 (0.0 %)
 Number of data-nodes:		2
 Number of racks:		1

The filesystem under path '/' is HEALTHY
root@master:~# 


MapReduce 작업 수행하기

다음으로 MapReduce 작업을 수행하여 전체 설정이 올바르게 작동 중인지 확인한다(Listing 13 참조). 이 프로세스의 첫 번째 단계에서는 일부 데이터를 생성한다. 따라서, input이라는 입력 데이터를 저장할 디렉토리를 먼저 작성한다. 이 작업은 hadoop-0.20 유틸리티 내에서 mkdir 명령으로 수행한다. 그런 다음 hadoop-0.20put 명령을 사용하여 두 개의 파일을 HDFS에 저장한다. Hadoop 유틸리티의 ls 명령을 사용하여 input 디렉토리의 내용을 확인할 수 있다.


Listing 13. 입력 데이터 생성하기
	
root@master:~# hadoop-0.20 fs -mkdir input
root@master:~# hadoop-0.20 fs -put \
  /usr/src/linux-source-2.6.27/Doc*/memory-barriers.txt input
root@master:~# hadoop-0.20 fs -put \
  /usr/src/linux-source-2.6.27/Doc*/rt-mutex-design.txt input
root@master:~# hadoop-0.20 fs -ls input
Found 2 items
-rw-r--r--  2 root supergroup  78031 2010-05-12 14:16 /user/root/input/memory-barriers.txt
-rw-r--r--  2 root supergroup  33567 2010-05-12 14:16 /user/root/input/rt-mutex-design.txt
root@master:~# 

다음으로 wordcount MapReduce 작업을 시작한다. 가상 분산 모델에서와 같이 입력 파일이 있는 입력 서브디렉토리와 출력 디렉토리(아직 존재하지 않지만 namenode에 의해 작성되고 결과 데이터가 저장되는 디렉토리)를 지정한다.


Listing 14. 클러스터에서 MapReduce wordcount 작업 실행하기
	
root@master:~# hadoop-0.20 jar \
  /usr/lib/hadoop-0.20/hadoop-0.20.2+228-examples.jar wordcount input output
10/05/12 19:04:37 INFO input.FileInputFormat: Total input paths to process : 2
10/05/12 19:04:38 INFO mapred.JobClient: Running job: job_201005121900_0001
10/05/12 19:04:39 INFO mapred.JobClient:  map 0% reduce 0%
10/05/12 19:04:59 INFO mapred.JobClient:  map 50% reduce 0%
10/05/12 19:05:08 INFO mapred.JobClient:  map 100% reduce 16%
10/05/12 19:05:17 INFO mapred.JobClient:  map 100% reduce 100%
10/05/12 19:05:19 INFO mapred.JobClient: Job complete: job_201005121900_0001
10/05/12 19:05:19 INFO mapred.JobClient: Counters: 17
10/05/12 19:05:19 INFO mapred.JobClient:   Job Counters 
10/05/12 19:05:19 INFO mapred.JobClient:     Launched reduce tasks=1
10/05/12 19:05:19 INFO mapred.JobClient:     Launched map tasks=2
10/05/12 19:05:19 INFO mapred.JobClient:     Data-local map tasks=2
10/05/12 19:05:19 INFO mapred.JobClient:   FileSystemCounters
10/05/12 19:05:19 INFO mapred.JobClient:     FILE_BYTES_READ=47556
10/05/12 19:05:19 INFO mapred.JobClient:     HDFS_BYTES_READ=111598
10/05/12 19:05:19 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=95182
10/05/12 19:05:19 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=30949
10/05/12 19:05:19 INFO mapred.JobClient:   Map-Reduce Framework
10/05/12 19:05:19 INFO mapred.JobClient:     Reduce input groups=2974
10/05/12 19:05:19 INFO mapred.JobClient:     Combine output records=3381
10/05/12 19:05:19 INFO mapred.JobClient:     Map input records=2937
10/05/12 19:05:19 INFO mapred.JobClient:     Reduce shuffle bytes=47562
10/05/12 19:05:19 INFO mapred.JobClient:     Reduce output records=2974
10/05/12 19:05:19 INFO mapred.JobClient:     Spilled Records=6762
10/05/12 19:05:19 INFO mapred.JobClient:     Map output bytes=168718
10/05/12 19:05:19 INFO mapred.JobClient:     Combine input records=17457
10/05/12 19:05:19 INFO mapred.JobClient:     Map output records=17457
10/05/12 19:05:19 INFO mapred.JobClient:     Reduce input records=3381
root@master:~#

마지막으로 출력 데이터를 살펴본다. wordcount MapReduce 작업을 실행했으므로 결과적으로 단일 파일이 생성된다(처리된 맵핑 파일에서 축소됨). 이 파일에는 입력 파일에서 검색된 단어와 모든 입력 파일에서 단어가 표시된 횟수를 나타내는 항목 목록이 있다.


Listing 15. MapReduce 작업의 출력 검사하기
	
root@master:~# hadoop-0.20 fs -ls output
Found 2 items
drwxr-xr-x   - root supergroup          0 2010-05-12 19:04 /user/root/output/_logs
-rw-r--r--   2 root supergroup      30949 2010-05-12 19:05 /user/root/output/part-r-00000
root@master:~# hadoop-0.20 fs -cat output/part-r-00000 | head -13
!=	1
"Atomic	2
"Cache	2
"Control	1
"Examples	1
"Has	7
"Inter-CPU	1
"LOAD	1
"LOCK"	1
"Locking	1
"Locks	1
"MMIO	1
"Pending	5
root@master:~# 


웹 관리 인터페이스

hadoop-0.20 유틸리티가 매우 다양한 기능을 제공하고 유용하기는 하지만 GUI를 사용하는 것이 더 편할 때도 있다. http://master:50070을 통해 파일 시스템 검사에 대한 namenode에 연결할 수 있고 http://master:50030을 통해 jobtracker에 연결할 수 있다. 그림 5와 같이 namenode를 통해 HDFS를 검사할 수 있다. 여기에서는 input 디렉토리(입력 데이터가 있는 디렉토리, Listing 13 참조)를 검사하고 있다.


그림 5. namenode를 통해 HDFS 검사하기
namenode를 통해 HDFS 검사하기

jobtracker를 통해 실행 중이거나 완료된 작업을 검사할 수 있다. 그림 6에서는 마지막 작업(Listing 14의)에 대한 검사를 볼 수 있다. 이 그림에서는 JAR(Java archive) 요청에 대한 출력으로 표시되는 다양한 데이터뿐만 아니라 태스크 상태 및 수를 보여 준다. 여기에서는 두 개의 맵핑 태스크(입력 파일당 하나의 태스크)와 한 개의 축소 태스크(두 개의 맵핑 입력을 축소하기 위해)가 수행되었다.


그림 6. 완료된 작업의 상태 검사하기
완료된 작업의 상태 검사하기

마지막으로 namenode를 통해 datanode의 상태를 검사할 수 있다. namenode 기본 페이지에는 활동 중인 노드와 종료된 노드의 수가 표시되며(링크로서) 이 페이지를 통해 노드를 자세히 검사할 수 있다. 그림 7에 표시된 페이지에서는 활동 중인 datanode와 각 노드에 대한 통계를 보여 준다.


그림 7. 활동 중인 datanode의 상태 검사하기
활동 중인 datanode의 상태 검사하기

namenode 및 jobtracker 웹 인터페이스를 통해 다른 여러 보기를 볼 수 있지만 여기에서는 간단하게 이 샘플 세트만 살펴보았다. namenode 및 jobtracker 웹 페이지 내에는 Hadoop 구성 및 작업(런타임 로그 포함)에 대한 추가 정보를 볼 수 있는 수많은 링크가 있다.


추가 주제

이 기사에서는 Cloudera의 가상 분산 구성을 완전 분산 구성으로 전환하는 방법을 살펴보았다. 놀랍게도 MapReduce 애플리케이션과 동일한 인터페이스를 사용하여 몇 단계만을 수행하여 Hadoop을 분산 처리에 유용한 도구로 만들 수 있었다. 또한 Hadoop의 확장성을 살펴보는 것도 흥미로웠다. 새 datanode를 추가하여(마스터에 있는 XML 파일 및 슬레이브 파일을 업데이트하는 작업과 함께) 손쉽게 더 높은 수준의 병렬 처리를 위한 Hadoop으로 확장할 수 있다. 이 Hadoop 시리즈의 마지막 기사인 Part 3에서는 Hadoop용 MapReduce 애플리케이션을 개발하는 방법에 대해 살펴본다.


참고자료

교육

제품 및 기술 얻기

  • HadoopApache Software Foundation을 통해 개발되었다.

  • 자신에게 가장 적합한 방법으로 IBM 제품을 평가해 보자. 시험판 제품을 다운로드하거나 온라인으로 제품을 사용해 보거나 클라우드 환경에서 제품을 사용하거나 SOA Sandbox에서 SOA(Service Oriented Architecture)를 효과적으로 구현하는 방법을 배울 수 있다.

토론

  • My developerWorks 커뮤니티에 참여하자. 개발자가 이끌고 있는 블로그, 포럼, 그룹 및 위키를 살펴보면서 다른 developerWorks 사용자와 의견을 나눌 수 있다.

필자소개

M. Tim Jones

M. Tim Jones is an embedded firmware architect and the author of Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming, AI Application Programming, and BSD Sockets Programming from a Multi-language Perspective. His engineering background ranges from the development of kernels for geosynchronous spacecraft to embedded systems architecture and networking protocols development. He is a senior architect for Emulex Corp. in Longmont, Colo.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=리눅스, 오픈 소스, 자바,
ArticleID=501014
ArticleTitle=Hadoop을 이용한 분산 데이터 처리, Part 2: 추가 주제
publish-date=06032010
author1-email=mtj@mtjones.com
author1-email-cc=

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.