Pully distributed Mode


분산환경을 실현하기 위해 centOS 하나를 더 설치하였다. 

노트북 용량 관계로 총 2개의 가상 centOS 로 실행    1대는 마스터와 슬레이브 다른 1대는 슬레이브 역활로 

총 하나의 마스터와 2개의 노드로 구성된 클러스트 환경을 구축함!!

standalone 모드까지 준비되었다는 가정하에 포스팅 하겠음 ^^  준비 안되신 분들은 게시물 처음으로 가셔서 설치 하시기 바람 !!


준비 사항 

cenOS 5.8    2대

192.168.109.128 master    // 1대는 master 역활
192.168.109.129 hadoop1 // 다른 1대는 slave 역활

 

[root@master ~]# vi /etc/hosts  //  아이피 주소를 입력 함 (호스트 이름을 통해 접근하기 위함)

192.168.109.128 master   

192.168.109.129 hadoop1


 

SSH 설정


master는 특정 컴퓨터 사용자 계정이 되고 다른 모든 노들들 은 다른 컴퓨터 사용자 계정이 된다. 특정 컴퓨터 사용자 계정으로 다른 컴퓨터 사용자 계정에 접근하기 위해서 SSH는 표준 공개 키 암호를 제공한다. 이 키는 사용자를 확인하는 데 사용 되는데 하나는 공개(public) 키이고 다른 하나는 개인(private) 키로 설정된다. 공개키는 클러스트에 있는 모든 노드에 저장되고 master는 클러스트에 접근할때 개인키를 보내고 해당 컴퓨터는 이 두 개의 키를 가지고 접근 시도를 허락한다. 

 

SSH 키 생성


[root@master ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):  // 입력없이 enter

Enter passphrase (empty for no passphrase):              // 입력없이 enter

Enter same passphrase again:                                   // 입력없이 enter 

  Your identification has been saved in /root/.ssh/id_rsa.  // 개인키

Your public key has been saved in (/root/.ssh/id_rsa.pub.  // 공개키 

[root@master ~]# cat ~/.ssh/id_rsa.pub  //생성된 키 확인 

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA5HQiMabQyYz3tTkGxA+jXrR0C5sPiyChws

mCFFGdvt4AMMOVoCqopkombAlIeoN7KWLVv+z02zYsaPVZephDfiKtc1XeTp4XoT4OhMbk

rt7unYuX9VGZMu3OlsGfa6pQmZuWlT/hO7a8JSEMYvZhX/XnHW/xpyaMuX4e8bBrO0F1XX

bC/p9gpycIrLz2268sqdgROh8ibG4KsD4x9s1G/gAg8HOa76YlNLBHseTfgVv3+yJIB2TDiIV7au

xIib9l9JOHLdkepx7nDU6/E1bndWQAqJN0/vCyO5SncFOEY+DKHHzQKy8GAqLNpa6IJ4biuCu

tHMX9kXXwxqoOPGlp4Q== root@localhost.localdomain


공개 키 배포 와 로그인 테스트

 

[root@master ~]# scp ~/.ssh/id_rsa.pub root@hadoop1:~/master_key

 

//hadoop1 으로 다시 로그인뒤 master의 키를 인증된 키로 설정한다.

 
[root@hadoop1 ~]# mkdir ~/.ssh

[root@hadoop1 ~]# chmod 700 ~/.ssh

[root@hadoop1 ~]# mv ~/master_key ~/.ssh/authoried_keys

[root@hadoop1 ~]# chmod 600  ~/.ssh/authoried_keys

//이젠 master 계정에서 대상 로그인으로 시도

 

[root@master ~]# ssh hadoop1                   
Last login: Thu Aug 30 04:52:02 2012 from master
[root@hadoop1 ~]#                          // 로그인 완료 !!빠져나가려면 명령창에 단순히 exit  작렬!!

 


 

 

fully distributed 모드 환경 설정

 

 

core-site.xml  //로그 파일, 네트워크 튜닝, I/O 튜닝 , 파일 시스템 튜닝, 압축 등의 하부 시스템을 설정한다.

 

[root@master hadoop-1.0.3]# cd conf 
[root@master conf]# vi core-site.xml 

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <property>
                <name>fs.default.name</name>
                <value>hdfs://master:9000</value>
        </property>
</configuration>

 

mapred-site.xml  //맵 리듀스 작업시 각 worknode 로 분배 역할을 하는 서버 위치 설정,

 

[root@master conf]# vi mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <property>
                <name>mapred.job.tracker</name>
                <value>master:9001</value>
        </property>
</configuration>

 

hdfs-site.xml  //hadoop file system 설정

 

[root@master conf]# vi hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>                        //데이터 복제 갯수 설정 보통 3으로 함
        </property>
        <property>
                <name>dfs.name.dir</name>
                <value>home/hadoop/work/name</value>
        </property>
        <property>
                <name>dfs.data.dir</name>
                <value>home/hadoop/work/data</value>
        </property>
</configuration>

 

- dfs.name.dir : 네임노드에서 사용한다. 파일의 디렉토리 정보와 파일 정보등을 저장한다.
- dfs.data.dir : 데이터노드에서 데이터 파일이 저장. ',' 을 이용해 여러개 지정가능하다.

 

master 와 slave 의 구분을 위해 파일 수정

 

[root@master conf]# vi masters
master

[root@master conf]# vi slaves

master
hadoop1

 

여기 까지 한 환경설정 작업파일은 모두 클러스트에 분산된 slave 노드들에게 동일하게 복사 한다.


[root@master conf]# scp core-site.xml root@hadoop1:$HADOOP_INSTALL/conf
core-site.xml                                 100%  269     0.3KB/s   00:00
//이와 같이 hdfs-site.xml , mapred-site.xml , masters , slaves 파일 모두 모든 슬레이브 노드에 복사

 

Pully distributed Mode 실행

 

 

저장소를 사용하기 위해 HDFS 를 포맷

 


[root@master hadoop-1.0.3]# hadoop namenode -format
12/08/31 03:23:53 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = master/192.168.109.128
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 1.0.3
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1335192; compiled by 'hortonfo' on Tue May  8 20:31:25 UTC 2012
************************************************************/
Re-format filesystem in home/hadoop/work/name ? (Y or N) Y
12/08/31 03:23:55 INFO util.GSet: VM type       = 32-bit
12/08/31 03:23:55 INFO util.GSet: 2% max memory = 19.33375 MB
12/08/31 03:23:55 INFO util.GSet: capacity      = 2^22 = 4194304 entries
12/08/31 03:23:55 INFO util.GSet: recommended=4194304, actual=4194304
12/08/31 03:23:55 INFO namenode.FSNamesystem: fsOwner=root
12/08/31 03:23:55 INFO namenode.FSNamesystem: supergroup=supergroup
12/08/31 03:23:55 INFO namenode.FSNamesystem: isPermissionEnabled=true
12/08/31 03:23:55 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100
12/08/31 03:23:55 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
12/08/31 03:23:56 INFO namenode.NameNode: Caching file names occuring more than 10 times
12/08/31 03:23:56 INFO common.Storage: Image file of size 110 saved in 0 seconds.
12/08/31 03:23:56 INFO common.Storage: Storage directory home/hadoop/work/name has been successfully formatted.
12/08/31 03:23:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.109.128
************************************************************/

 

하둡의 데몬들을 실행

 

[root@master hadoop-1.0.3]# start-all.sh
starting namenode, logging to /tmp/hadoop-1.0.3/libexec/../logs/hadoop-root-namenode-master.out
hadoop1: starting datanode, logging to /tmp/hadoop-1.0.3/libexec/../logs/hadoop-root-datanode-hadoop1.out
master: starting datanode, logging to /tmp/hadoop-1.0.3/libexec/../logs/hadoop-root-datanode-master.out
master: starting secondarynamenode, logging to /tmp/hadoop-1.0.3/libexec/../logs/hadoop-root-secondarynamenode-master.out
starting jobtracker, logging to /tmp/hadoop-1.0.3/libexec/../logs/hadoop-root-jobtracker-master.out
master: starting tasktracker, logging to /tmp/hadoop-1.0.3/libexec/../logs/hadoop-root-tasktracker-master.out
hadoop1: starting tasktracker, logging to /tmp/hadoop-1.0.3/libexec/../logs/hadoop-root-tasktracker-hadoop1.out

 

데몬들의 상태 확인 (본인은 하나의 마스터와 2개의 슬레이브로 구성했기 때문에 namenode 1 , secondary namenode 1, jobtracker 1, datanode 2, tasktracker 2개 가 떠야 한다.

 

[root@master hadoop-1.0.3]# jps  //마스터 상에서 돌아가는 데몬 ( 마스터의 역활과 슬레이브 역활을 하므로 datanode , tasktracker 도 생성)
1151 Jps
32641 DataNode
327 SecondaryNameNode
562 TaskTracker
417 JobTracker
32514 NameNode

 

[root@master hadoop-1.0.3]# ssh hadoop1 //클러스트 계정에서도 확인
Last login: Thu Aug 30 05:53:31 2012 from master
[root@hadoop1 ~]# jps
25562 DataNode
25357 TaskTracker
25702 Jps

 

여기까지 되면 일단락 완전분산모드 환경 성공!!! 휴...

만약 datanode 가 생성이 안되거나 특정 노드가 보이지 않는다면 !! log 에 저장된 ERROR 를 읽어서 해결해야 한다.



ERROR RESOLUTION

 


datanode 가 생성이 안될경우!!!!! 

슬레이브 계정으로 로그인하여 $HADOOP_INSTALL/logs 라는 디렉토리 확인! 각 노드 별로 log 파일이 존재 하므로 오류가 난 해당 노드의 log 파일을 확인하시면 된다 !!

 

 

ERROR case 1:

[root@hadoop1 logs]# cat hadoop-root-datanode-hadoop1.log   // DataNode 에대한 LOG 가 저장되어 있음

2012-08-30 05:53:04,059 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /tmp/hadoop-1.0.3/home/hadoop/work/data: namenode namespaceID = 908579614; datanode namespaceID = 1581120086

오류내용

dfs.name.dir 디렉토리와  dfs.data.dir 정보가 서로 불일치하여 master 장비의 datanode 부팅 실패함.

복구 방법
     dfs.data.dir 하위의 여러 파일 삭제
     dfs.name.dir 은 hadoop namenode -format 으로 초기화 한다.

 

ERROR case 2:

        

[root@master logs]# cat hadoop-root-secondarynamenode-master.log    //secondarynamenode 가 뜨질 않아 log 파일 확인

2012-08-31 16:20:26,903 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.109.128:9000. Already     tried 0 time(s).

2012-08-31 16:20:27,908 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.109.128:9000. Already tried 1 time(s).

2012-08-31 16:20:28,910 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.109.128:9000. Already tried 2 time(s).



오류내용

리눅스는 자체적으로 방화벽이 설치되어 있어 허용되지 않는 포트 번호로 접속이 시도 될때 접속이 되질 않는다. 지금은 9000번 포포트가 막혀있으므로 접속 오류

복구방법

        

[root@master logs]# vi /etc/sysconfig/iptables     // 방화벽 설정하는곳

-A RH_Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT      //해당 포트 번호를 허용한다.

-A RH_Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT

-A RH_Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50010 -j ACCEPT

-A RH_Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50030 -j ACCEPT

-A RH_Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50040 -j ACCEPT

-A RH_Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50060 -j ACCEPT

-A RH_Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50070 -j ACCEPT

-A RH_Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50090 -j ACCEPT

[root@master logs]# /etc/init.d/iptables restart

방화벽 규칙을 삭제하는 중:                                 [  OK  ]

chains를 ACCEPT 규칙으로 설정함: filter                    [  OK  ]

iptables 모듈을 제거하는 중:                               [  OK  ]


  //슬레이브 노드에서도 수정하여 준다.


[root@hadoop1 ~]# cat /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p --dport 50010 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p --dport 50040 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p --dport 50050 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p --dport 50060 -j ACCEPT



이방법이 아니면 자체적으로 방화벽 설정을 해제하는 방법도 있다.

[root@master etc]# cd sysconfig
[root@master sysconfig]# service iptables stop
방화벽 규칙을 삭제하는 중:                                 [  OK  ]
chains를 ACCEPT 규칙으로 설정함: filter                    [  OK  ]
iptables 모듈을 제거하는 중:                               [  OK  ]




이외에도 다양한 오류들이 존재하는데 그럴때마다 log 파일을 확인하여 정확한 오류내용을 찾는것이 현명한 방법이다. 
log 파일을 몰랐을때에는 hadoop 만 다시 깔기를 10번 이상 한것 같습니다. ㅠㅠ 
log 파일에서 정확한 오류 내용을 확인한후 구글에 검색하면 왠만한 오류수정 내용은 나오는것 같습니다 ^^ 하지만 영어번역이 필수 겠지요 ㅎㅎ


저작자 표시
신고




하둡을 이용한 첫 번째 예제 프로그램



하둡에서는 MapRudece 를 이용한 예제로 단어의 겟수를 세는 셈플 예제 소스가 들어있다. wordcount java 프로그램은 txt 파일을 입력으로 받고 결과로는 단어의 겟수를 저장한 파일을 저장한다.


아무런 인수 없이 그냥 wordcount 예제를 실행시켜 본다.


[root@master hadoop-1.0.3]# hadoop jar hadoop-examples-1.0.3.jar wordcount

Usage: wordcount <in> <out>


인수를 지정하라고 메세지가 뜬다. 이제 입력으로 사용할 txt 파일을 하나 만든다.

[root@master hadoop-1.0.3]# cat input  // "hello" 단어가 4개 들어있는 input 파일 생성
hello
hello
hello
hello


[root@master hadoop-1.0.3]# hadoop jar hadoop-examples-1.0.3.jar wordcount input output
12/08/31 00:53:39 INFO util.NativeCodeLoader: Loaded the native-hadoop library // 이러한 메세지들이 쭈욱 뜨면서 실행된다.
12/08/31 00:53:39 INFO input.FileInputFormat: Total input paths to process : 1
12/08/31 00:53:39 WARN snappy.LoadSnappy: Snapnative library not loaded
12/08/31 00:53:39 INFO mapred.JobClient: Running job: job_local_0001
12/08/31 00:53:39 INFO util.ProcessTree: setsid exited with exit code 0

실행이 완료되면 output 디렉토리에 있는 결과파일을 출력해보자!!


[root@master hadoop-1.0.3]# cat output/*

hello   4        // 완료



 hadoop 에서는 독립실행모드 (Standalone) , 가상분산모드 (Pseudo-distributed) , 완전분산모드 (Fully distributed) 이렇게 3가지 모드가 존재한다.


현재 wordcount 예제까지 따라 하셨다면 독립실행모드는 끝난것이다. 독립실행모드는 단일로컬머신에서만 실행되는 환경을 말한다.

따라서 다른 분산된 컴퓨터와 서로 주고 받는 부가 작업이 필요 없으며 이 모드의 목적은 독립적으로 MapReduce 프로그램의 로직을 개발하고 디버깅 하는데 있다.


다음 포스팅 부터는 가상분산모드를 뛰어넘고 완전분산모드로 실행할게요 ^^

완전분산모드가 실제적으로  hadoop 이 동작하는 기능을 모두 갖추고 있기 때문에 가상분산모드는 따로 하지 않아도 된다고 생각함 ^^;;



저작자 표시
신고

PREPARATION OF OS ENVIRONMENTS

 

 

hadoop 의 공식적인 개발환경은 linux 이다. linux를 모르기 때문에 hadoop 에 접근하기가 너무 어려웠음....ㅜ

linnux 설치하기 위해 가상머신을 다운 받았고 가상머신으로 linux 설치

 

 

가상머신 - VMware 7.0 을 설치  

download - http://utilpam.com/bbs/download_p.php?bo_table=pds06&wr_id=496&pshow=kp1/

linux - CentOS-5.8-i386 을 설치      

download - http://ftp.daum.net/centos/5.8/isos/i386/

CD 2장 짜리로 다운!!

 

 

VMware 설정 부분과 CentOS 설치 부분은 다른 blog를 이용해 주세요 ^^;


CentOS 설치 완료하였으면 여기서 부터 CentOS 상에서 모든 작업 시행


jdk 와 hadoop 다운로드

 

 

저는 java 파일과 hadoop 파일 모두 컴퓨터/파일시스템/tmp 폴더 안에 다운 받고 압축을 풀었습니다.

 메뉴얼에는  /usr/local 에 위치하는 것을 권장!! 



여기까지 hadoop 실행을 하기전까지 준비 완료!!

 



CentOS 환경 설정

 


이젠 CentOS 환경 변수 설정!  참고로 계정은 root 로 사용하였습니다 ^^

메뉴얼에는 루트 말고 사용자 계정을 추가하여 사용하는것 을 권장 !! (linux 초보자로써 폴더 접근권한 등 설정이 아직 어려줘 root로 하였음 ㅠㅠ)


java 와 hadoop 사용하기 위해 path 설정

[root@master ~]# vi .bashrc    // .bashrc 파일을 편집기로 열어 편집

// JAVA_HOME 과 HADOOP_INSTALL 을 추가한다.

export JAVA_HOME=/tmp/jdk1.7.0_06

export HADOOP_INSTALL=/tmp/hadoop-1.0.3

// PATH에 각 bin디렉토리를 추가한다.

export PATH=$PATH:$HADOOP_INSTALL/bin:$JAVA_HOME/bin:$PATH


[root@master ~]# source .bashrc    //설정 바꾼후 re컴파일


path 설정후 올바르게 인식되는지 javac 와 javac version을 확인!!

[root@master ~]# java -version

java version "1.7.0_06"  // 다운 받은 jdk 버전 올바르게 인식

Java(TM) SE Runtime Environment (build 1.7.0_06-b24)

Java HotSpot(TM) Client VM (build 23.2-b09, mixed mode)

[root@master ~]# javac -version

javac 1.7.0_06     //  컴파일러도 올바르게 인식



만약 올바르게 버전이 인식이 안된다면 alternatives --config 로 현재 리눅스가 가리키는 jdk 경로를 확인한다.
[root@master ~]# alternatives --config java
3 개의 프로그램이 'java'를 제공합니다.
  선택    명령                                                 // tmp폴더안에 다운받은 jdk 버전이 추가되어 있지 않다.
-----------------------------------------------
*  +1           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java    
     2           /usr/lib/jvm/jre-1.4.2-gcj/bin/java
현재 선택[+]을 유지하시려면 엔터키를 누르십시오. 그렇지 않으면,  선택 번호를 입력해 주십시오: 1

// 환경설정에 jdk 추가
[root@master ~]# alternatives --install  /usr/bin/java  java  /tmp/jdk1.7.0_06/bin/java  3
[root@master ~]# alternatives --config  java
3 개의 프로그램이 'java'를 제공합니다.
  선택    명령                                                // tmp폴더안에 다운받은 jdk 버전이 추가 되었다.
-----------------------------------------------
*  1           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
   2           /usr/lib/jvm/jre-1.4.2-gcj/bin/java
 + 3           /tmp/jdk1.7.0_06/bin/java
현재 선택[+]을 유지하시려면 엔터키를 누르십시오. 그렇지 않으면,  선택 번호를 입력해 주십시오: 3  // 3번 선택



만약 javac 버전에도 이상이 있다면 위와 동일하게 "alternatives --config javac" 으로 확인해보고 추가하면 된다.


이번엔 hadoop version 확인!!


[root@master ~]# hadoop version

Hadoop 1.0.3        // hadoop 1.0.3 올바르게 인식

Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1335192

Compiled by hortonfo on Tue May  8 20:31:25 UTC 2012

From source with checksum e6b0c1e23dcf76907c5fecb4b832f3be



여기까지 완료되면 hadoop 실행을 위한 준비가 완료되었다 생각합니다 ^^

다음엔 hadoop sample 예제 중에 wordcount 예제 실행 을 포스팅 할게요 ^^

 

저작자 표시
신고



ps. programming begginer 로써 초급자에 관점에서 앞으로 hadoop 포스팅 해볼 생각입니다^^

 

 

What is Hadoop?

 

 

대용량 데이터를 처리하는 분산 응용 프로그램을 작성하고 실행시키기 위한 오픈 소스 프레임워크(framework)이다.

 

 

- Hadoop simbol - 

 

 

Appearance of Hadoop

 

 

 

오늘날, 고용량의 멀티미디어 데이터 와 페이스북같은 SNS 의 등장으로 인해 데이터는 폭발적으로 으로 증가하고 있고 Big Data, Cloud 등과 같은 대용량의 데이터를 사용하고 관리하는 기술들이 개발되어 지고 있다. 이렇게 방대하게 커져버린 데이터를 현존하는 방식으로 처리하기란 많은 무리가 있다.

 

이런 문제점을 해결하기 위해 구글에서 먼저 MadpReduce를 공개 했는데, Mapreduce는 구굴의 데이터 처리량을 확장하기 위해 사용되는 시스템이다. Doug Cutting은 구글에서 발표한 MapReduce의 논문을 바탕으로 '하둡(Hadoop)'이라는MadpReduce의 오픈 소스 버전을 개발하게 되었고 야후와 다른 기업들의 동참으로 오늘날 하둡은 야후, 페이스북, 링크드인, 트위터와 같은 웹 기반의 회사에서 연산처리를 위한 인프라의 핵심 부분으로 사용되고 있다.

 

 

 

*MapReduce : 다수의 컴퓨터에서 데이터를 분산처리하여, 그 결과를 추려내는 데이터 프로세싱 기법

 

Advantage of Hadoop

 

 


초당 100MB 를 처리할수 있는 값비싼 컴퓨터 한대가 4TB의 데이터를 처리한다고 하였을때 대략 세 시간 정도가 소요된다. 하지만 하둡은 4TB의 데이터를 분산된 여러 컴퓨터가 병렬로 나누어서 동시에 처리하기 때문에 훨씬 빠른 속도로 데이터를 처리 할수 있다. 또 이런한 값싼 범융 컴퓨터들로 이루어진 클러스트를 구축하는것이 비용면에서 성능 좋은 컴퓨터보다 저렴하다.

 

클라이언트는 연산할 데이터를 보내는 대신 연산할 식(MapReduce)을 데이타가 존재 하는 클러스트에 보내는 방식이다. 클라이언트에서 보내는 MapReduce프로그램은 크기가 KB 단위로 매우 작기 때문에 전송이 빠르다. 처리될 데이타는 클러스트에 저장되어 있고 하둡클러스는 클라이언트에서 보낸 작은 코드를 읽어 데이터 연산을 처리한다. 



저작자 표시
신고