아래 매뉴얼은 RHEL 5 버전이 설치된 4 개의 노드를 사용하여 Hadoop 운영 환경을 구축하는 매뉴얼입니다.
먼저 4개의 서버에 RHEL 5 를 설치하면 됩니다.
참고로 이 매뉴얼에서는 아래와 같은 내용으로 설치했습니다.
* CPU - Intel i7 2.9 GHZ (4 core)
* RAM - 200 MB (1 노드당)
*HDD - 10GB (1 노드당)
( 리눅스 설치시 파티션 내역은 아래와 같습니다
/ --------- 전부
swap ---- 512 MB
* ip : Vmware 에서 NAT 로 설치 -> IP 확인하여 고정 설정하였습니다.
/etc/hosts 파일에 아래와 같이 설정하고 neat 로 eth0 에 각 IP 를 직접 지정했습니다.
192.168.239.141 hadoop1
192.168.239.142 hadoop2
192.168.239.143 hadoop3
192.168.239.144 hadoop4
당연히 각자의 IP 에 맞는 것을 사용하세요
Step 1. hadoop 설치 및 관리용 계정을 생성합니다.
(아래 작업을 4개의 서버 모두 동일하게 수행하세요)
[root@hadoop1 ~]# groupadd hgroup
[root@hadoop1 ~]# useradd -g hgroup huser
[root@hadoop1 ~]# passwd huser
Step 2. huser 로 로그인 하여 설치용 hadoop 프로그램을 다운로드 받습니다.
[root@hadoop1 ~]# su - huser
[huser@hadoop1~]$ wget http://archive.apache.org/dist/hadoop/core/hadoop-1.0.3/hadoop-1.0.3.tar.gz
Step 3. hadoop 은 java 가 반드시 필요하므로 아래와 같이 자바가 설치되어 있는 지 확인 후
버전이 낮거나 설치가 안되어 있을 경우 jdk를 다운로드 받아서 설치합니다.
권장 jdk 버전은 1.6 이상입니다.
[huser@hadoop1 ~]$ su -
[root@hadoop1 ~]# java -version
java version "1.4.2"
위 내용을 보면 1.4 버전이 설치되어 있습니다.
이 것을 1.7 버전으로 교체 하겠습니다.
아래 주소로 접속하여
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
아래 파일 다운로드 한 후
Linux x86 132.98 MB jdk-7u51-linux-i586.tar.gz
다운로드가 완료된 설치 파일을 WinSCP 등을 이용하여 /usr/local 디렉토리로 복사 한 후에 파일의 실행권한을 부여하고 설치를 시작합니다.
[root@hadoop1 ~]# cd /home/huser
[root@hadoop1 huser]# ls
hadoop-1.0.3.tar.gz jdk-7u40-linux-i586.tar.gz
[root@hadoop1 huser]# cp jdk-7u51-linux-i586.tar.gz /usr/local/
[root@hadoop1 huser]# cd /usr/local
[root@hadoop1 local]# chmod 755 jdk-7u40-linux-i586.tar.gz
[root@hadoop1 local]# tar xvzf jdk-7u40-linux-i586.tar.gz
위와 같이 정상적으로 설치는 완료되었지만 기존 설치된 자바를 사용하기 때문에 자바 설치경로를 변경해주어야 합니다.
[root@hadoop1 local]# pwd
/usr/local
[root@hadoop1 local]# ln -s jdk1.7.0_33/ java
그 후에 huser 의 환경설정 파일에 자바 경로를 아래의 내용으로 추가합니다.
[root@hadoop1 local]# vi /home/huser/.bash_profile
(기존 내용은 그대로 두고 아래의 내용을 추가하세요)
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASS_PATH="."
:wq!
[root@hadoop1 local]# /usr/sbin/alternatives --install /usr/bin/java java /usr/local/java/bin/java 2
[root@hadoop1 local]# /usr/sbin/alternatives --config java
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------*+ 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java <-- 현재 기본값입니다.
2 /usr/local/java/bin/java <-- 이 파일로 변경하겠습니다.
Enter to keep the current selection[+], or type selection number: 2
[root@hadoop1 local]#
[root@hadoop1 local]# java -version
java version "1.7.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b04)
Java HotSpot(TM) Client VM (build 20.8-b03, mixed mode, sharing)
정상적으로 변경된 것이 확인됩니다.
나머지 3개의 서버에도 아래와 같이 jdk 를 설치 하고 환경설정을 변경해 주세요.
작업의 편리성을 위해 4 개의 서버 모두 /etc/hosts 파일에 아래의 내용을 등록합니다.
[root@hadoop1 local]# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.239.141 hadoop1
192.168.239.142 hadoop2
192.168.239.143 hadoop3
192.168.239.144 hadoop4
:wq!
[root@hadoop1 local]# pwd
/usr/local
[root@hadoop1 local]# ls jdk*
jdk1.6.0_33 jdk-7u51-linux-i586.tar.gz
[root@hadoop1 local]# scp jdk-7u51-linux-i586.tar.gz hadoop2:/usr/local/
root@hadoop2's password:
jdk -6u33-linux-i586.bin 100% 68MB 13.7MB/s 00:05
[root@hadoop1 local]# scp jdk-7u51-linux-i586.tar.gz hadoop3:/usr/local/
root@hadoop3's password:
jdk -6u33-linux-i586.bin 100% 68MB 22.8MB/s 00:03
[root@hadoop1 local]# scp jdk-7u51-linux-i586.tar.gz hadoop4:/usr/local/
root@hadoop4's password:
jdk -6u33-linux-i586.bin 100% 68MB 34.2MB/s 00:02
Step 4. 4 개의 서버들끼리 huser 로 ssh 접속 시 암호를 묻지 않게 설정합니다.
hadoop 을 운영하다 보면 huser 계정으로 4개의 서버에 수시로 접속을 해야 합니다.
그때마다 암호를 묻게 되면 문제가 되기 때문에 서로 암호를 묻지 않도록 설정을 해야 합니다.
아래의 과정대로 해 보세요.
[root@hadoop1 local]# su - huser
[huser@hadoop1 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/huser/.ssh/id_rsa): 엔터
Enter passphrase (empty for no passphrase): 엔터
Enter same passphrase again: 엔터
Your identification has been saved in /home/huser/.ssh/id_rsa.
Your public key has been saved in /home/huser/.ssh/id_rsa.pub.
The key fingerprint is:
67:91:2e:d2:12:de:4a:73:e7:80:28:c8:59:22:2b:78 huser@hadoop1
[huser@hadoop1 bin]$ ssh-copy-id -i /home/huser/.ssh/id_rsa.pub huser@hadoop1
27
huser@hadoop1's password: 암호를 입력하세요
Now try logging into the machine, with "ssh 'huser@hadoop1'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[huser@hadoop1 ~]$ ssh-copy-id -i /home/huser/.ssh/id_rsa.pub huser@hadoop2
27
The authenticity of host 'hadoop2 (192.168.239.142)' can't be established.
RSA key fingerprint is 89:b5:d1:ee:f2:9f:7f:91:e6:91:f5:f0:d5:0c:dc:57.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hadoop2,192.168.239.142' (RSA) to the list of known hosts.
huser@hadoop2's password: 암호를 입력하세요
Now try logging into the machine, with "ssh 'huser@hadoop2'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[huser@hadoop1 ~]$ ssh hadoop2
[huser@hadoop2 ~]$ <---- 암호 없이 잘 접속되는 것이 확인됩니다.
[huser@hadoop1 ~]$ ssh-copy-id -i /home/huser/.ssh/id_rsa.pub huser@hadoop3
27
huser@hadoop3's password: 암호를 입력하세요.
Now try logging into the machine, with "ssh 'huser@hadoop3'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[huser@hadoop1 ~]$ ssh-copy-id -i /home/huser/.ssh/id_rsa.pub huser@hadoop4
27
huser@hadoop4's password: 암호를 입력하세요
Now try logging into the machine, with "ssh 'huser@hadoop4'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[huser@hadoop1 ~]$
이 작업을 나머지 서버에도 동일하게 수행해야 됩니다.
즉 모든 노드들끼리 huser 계정으로 접속할 때 암호를 묻지 않도록 해야 합니다.
여기 까지 작업이 완료 되었으면 하둡 설치를 위한 기본 작업들이 모두 완료가 되었습니다.
이제 hadoop1 서버에서 처음에 다운로드를 받았던 hadoop 설치파일을 설치하겠습니다.
Step 5. Hadoop 설치하기 (hadoop 1 에서 작업합니다)
[huser@hadoop1 ~]$ pwd
/home/huser
[huser@hadoop1 ~]$ ls
hadoop-1.0.3.tar.gz jdk -6u33-linux-i586.bin
아래와 같이 설치 파일의 압축을 풉니다.
[huser@hadoop1 ~]$ tar zxvf hadoop-1.0.3.tar.gz
(지면 관계상 압축이 풀리는 과정은 생략합니다)
압축이 풀이면 아래와 같이 hadoop-1.0.3 이라는 디렉토리가 생성된 것이 확인됩니다.
[huser@hadoop1 ~]$ ls
hadoop-1.0.3 hadoop-1.0.3.tar.gz jdk-6u33-linux-i586.bin
[huser@hadoop1 ~]$
[huser@hadoop1 ~]$ ln -s hadoop-1.0.3 hadoop
step 5. 아래와 같이 몇가지 환경설정 파일을 변경합니다.
아래에서 수정하는 환경설정 파일은 hadoop 파일의 압축이 풀린 디렉토리 아래에 conf 디렉토리에 있습니다.
[huser@hadoop1 ~]$ ls
hadoop hadoop-1.0.3.tar.gz huser@hadoop3 jdk-6u33-linux-i586.bin
hadoop-1.0.3 huser@hadoop2 huser@hadoop4
[huser@hadoop1 ~]$ cd hadoop-1.0.3/conf
[huser@hadoop1 conf ]$ ls -l
total 76
-rw-r --r -- 1 huser hgroup 7457 May 9 2012 capacity-scheduler.xml
-rw-r --r -- 1 huser hgroup 535 May 9 2012 configuration.xsl
-rw-r --r -- 1 huser hgroup 178 May 9 2012 core-site.xml
-rw-r --r -- 1 huser hgroup 327 May 9 2012 fair-scheduler.xml
-rw-r --r -- 1 huser hgroup 2237 May 9 2012 hadoop-env.sh
-rw-r --r -- 1 huser hgroup 1488 May 9 2012 hadoop-metrics2.properties
-rw-r --r -- 1 huser hgroup 4644 May 9 2012 hadoop-policy.xml
-rw-r --r -- 1 huser hgroup 178 May 9 2012 hdfs-site.xml
-rw-r --r -- 1 huser hgroup 4441 May 9 2012 log4j.properties
-rw-r --r -- 1 huser hgroup 2033 May 9 2012 mapred-queue-acls.xml
-rw-r --r -- 1 huser hgroup 178 May 9 2012 mapred-site.xml
-rw-r --r -- 1 huser hgroup 10 May 9 2012 masters
-rw-r --r -- 1 huser hgroup 10 May 9 2012 slaves
-rw-r --r -- 1 huser hgroup 1243 May 9 2012 ssl-client.xml.example
-rw-r --r -- 1 huser hgroup 1195 May 9 2012 ssl-server.xml.example
-rw-r --r -- 1 huser hgroup 382 May 9 2012 taskcontroller.cfg
위와 같이 다양한 파일을 사용해서 hadoop 실행환경을 구성할 수 있습니다.
여기서는 반드시 필요한 파일과 항목들만 변경하겠습니다.
- hadoop-env.sh
이 파일은 hadoop 을 실행 할 때 사용하는 shell script 들이 공통적으로 사용하는 jdk 경로,
Class 경로 , 각종 데몬들의 실행 옵션 등이 저장되는 환경 설정 파일입니다.
이 파일을 열어서 아래의 항목을 수정합니다.
[huser@hadoop1 conf ]$ pwd
/home/huser/hadoop-1.0.3/conf
[huser@hadoop1 conf ]$ vi hadoop-env.sh
export JAVA_HOME=/usr/local/java <---- 이 내용을 추가합니다.
:wq!
[huser@hadoop1 conf ]$ vi masters
hadoop2
:wq!
[huser@hadoop1 conf ]$ vi slaves
hadoop2
hadoop3
hadoop4
:wq!
[huser@hadoop1 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://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/huser/hadoop-data/</value>
</property>
</configuration>
:wq!
[huser@hadoop1 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>3</value>
</property>
<property>
<name>dfs.http.address</name>
<value>hadoop1:50070</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop2:50090</value>
</property>
</configuration>
:wq!
[huser@hadoop1 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>hadoop1:9001</value>
</property>
</configuration>
:wq!
step 6: 데이터 노드로 hadoop 복사하기
위 작업까지 마무리 한 후 hadoop1 서버의 hadoop 디렉터리를 압축해서 나머지 데이터 노드
(hadoop2, hadoop3, hadoop4 로 복사를 해서 압축을 풉니다)
[huser@hadoop1 ~]$ cd
[huser@hadoop1 ~]$ tar cvfz hadoop.tar.gz hadoop-1.0.3
[huser@hadoop1 ~]$ ls
hadoop hadoop-1.0.3 hadoop-1.0.3.tar.gz hadoop.tar.gz
[huser@hadoop1 ~]$ scp hadoop.tar.gz huser@hadoop2:~/
hadoop.tar.gz 100% 60MB 19.9MB/s 00:03
[huser@hadoop1 ~]$ scp hadoop.tar.gz huser@hadoop3:~/
hadoop.tar.gz 100% 60MB 29.8MB/s 00:02
[huser@hadoop1 ~]$ scp hadoop.tar.gz huser@hadoop4:~/
hadoop.tar.gz 100% 60MB 29.8MB/s 00:02
[huser@hadoop1 ~]$ ssh hadoop2 "cd ~; tar zxvf hadoop.tar.gz; rm hadoop.tar.gz"
[huser@hadoop1 ~]$ ssh hadoop3 "cd ~; tar zxvf hadoop.tar.gz; rm hadoop.tar.gz"
[huser@hadoop1 ~]$ ssh hadoop4 "cd ~; tar zxvf hadoop.tar.gz; rm hadoop.tar.gz"
step 7: 네임노드 포맷 후 하둡 실행하기
네임노드(hadoop1) 에서 아래와 같이 작업을 수행합니다.
[huser@hadoop1 ~]$ cd hadoop-1.0.3/bin
[huser@hadoop1 bin]$ ./hadoop namenode -format
13/08/26 01:02:16 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = hadoop1/192.168.239.141
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
************************************************************/
13/08/26 01:02:17 INFO util.GSet: VM type = 32-bit
13/08/26 01:02:17 INFO util.GSet: 2% max memory = 19.33375 MB
13/08/26 01:02:17 INFO util.GSet: capacity = 2^22 = 4194304 entries
13/08/26 01:02:17 INFO util.GSet: recommended=4194304, actual=4194304
13/08/26 01:02:18 INFO namenode.FSNamesystem: fsOwner=huser
13/08/26 01:02:18 INFO namenode.FSNamesystem: supergroup=supergroup
13/08/26 01:02:18 INFO namenode.FSNamesystem: isPermissionEnabled=true
13/08/26 01:02:18 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100
13/08/26 01:02:18 INFO namenode.FSNamesystem: isAccessTokenEnabled=false
accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
13/08/26 01:02:18 INFO namenode.NameNode: Caching file names occuring more than 10 times
13/08/26 01:02:18 INFO common.Storage: Image file of size 111 saved in 0 seconds.
13/08/26 01:02:18 INFO common.Storage: Storage directory /home/huser/hadoop-data/dfs/name
has been successfully formatted.
13/08/26 01:02:18 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop1/192.168.239.141
************************************************************/
위와 같이 에러없이 포맷작업이 끝나면 모든 준비가 다 된 것입니다.
아래와 같이 하둡 관련 데몬들을 실행시키는 스크립트를 실행합니다.
[huser@hadoop1 bin]$ ./start-all.sh
starting namenode, logging to /home/huser/hadoop-1.0.3/libexec/../logs/hadoop-huser namenode-hadoop1.out
hadoop4: starting datanode, logging to /home/huser/hadoop-1.0.3/libexec/../logs/hadoop-huser datanode-hadoop4.out
hadoop3: starting datanode, logging to /home/huser/hadoop-1.0.3/libexec/../logs/hadoop-huser datanode-hadoop3.out
hadoop2: starting datanode, logging to /home/huser/hadoop-1.0.3/libexec/../logs/hadoop-huser datanode-hadoop2.out
hadoop2: starting secondarynamenode, logging to /home/huser/hadoop-1.0.3/libexec/../logs/hadoop-huser -secondarynamenode-hadoop2.out
starting jobtracker, logging to /home/huser/hadoop-1.0.3/libexec/../logs/hadoop-huser -jobtracker hadoop1.out
hadoop4: starting tasktracker, logging to /home/huser/hadoop-1.0.3/libexec/../logs/hadoop-huser tasktracker -hadoop4.out
hadoop2: starting tasktracker, logging to /home/huser/hadoop-1.0.3/libexec/../logs/hadoop-huser tasktracker -hadoop2.out
hadoop3: starting tasktracker, logging to /home/huser/hadoop-1.0.3/libexec/../logs/hadoop-huser tasktracker -hadoop3.out
[huser@hadoop1 bin]$
위와 같이 에러 없이 잘 수행 된 후 아래와 같이 jps 명령을 이용해 수행중인 데몬들을 확인하면 됩니다.
name node 에서는 마지막 namenode 가 보여야 합니다.
[huser@hadoop1 bin]$ jps
11854 JobT racker
11972 Jps
11676 NameNode
데이터노드(hadoop2, hadoop3, hadoop4) 에서는 아래와 같이 조회가 되어야 합니다.
[huser@hadoop2 conf ]$ jps
10047 Jps
9855 SecondaryNameNode
9749 DataNode
9965 TaskTracker
[huser@hadoop3 conf ]$ jps
8895 TaskTracker
8977 Jps
8782 DataNode
[huser@hadoop3 conf ]$
[huser@hadoop4 conf ]$ jps
8741 TaskTracker
8824 Jps
8628 DataNode
만약 중단하고 싶으면 동일한 디렉토리에서 ./stop-all.sh 를 수행하면 됩니다.
만약 위 과정에서 hadoop2,3,4 에서 datanode 가 안 보인다면
안보이는 노드에서
[huser@hadoop2 ~]$ cd hadoop-1.0.3/bin
[huser@hadoop2 bin]$ hadoop datanode 명령을 수동으로 실행시켜서 에러 메세지를 확인합니다.
만약 에러 메시지가 아래와 같이 namespaceid 가 다르다고 나오면 아래와 같이 조치하세요.
[huser@hadoop2 ~]$ cd hadoop-1.0.3/bin
[huser@hadoop2 bin]$ ./hadoop datanode &
[1] 4365
[huser@hadoop2 bin]$ 14/02/05 01:57:40 INFO datanode.DataNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG: host = hadoop2/192.168.47.148
STARTUP_MSG: args = []
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
************************************************************/
14/02/05 01:57:40 INFO impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
14/02/05 01:57:40 INFO impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats
registered.
14/02/05 01:57:40 INFO impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
14/02/05 01:57:40 INFO impl.MetricsSystemImpl: DataNode metrics system started
14/02/05 01:57:40 INFO impl.MetricsSourceAdapter: MBean for source ugi registered.
14/02/05 01:57:41 ERROR datanode.DataNode: java.io.IOException: Incompatible
namespaceIDs in /home/huser/hadoop-data/dfs/data: namenode namespaceID = 94412489;
datanode namespaceID = 1358422661
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232
( 중간내용은 생략합니다 )
14/02/05 01:57:41 INFO datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at hadoop2/192.168.47.148
************************************************************/
아래와 같이 조치하세요.
step 1.hadoop1 에서 기준이 될 namenode의 namespaceid 를 확인합니다.
[huser@hadoop1 current]$ pwd
/home/huser/hadoop-data/dfs/name/current
[huser@hadoop1 current]$ ls
edits fsimage fstime VERSION
[huser@hadoop1 current]$ vi VERSION
#Wed Feb 05 02:10:10 KST 2014
namespaceID=94412489 <-- 기준이 될 ID 입니다.
cTime=0
storageType=NAME_NODE
layoutVersion=-32
Step 2. datanode 가 시작이 안되는 노드로 갑니다.
(여기서는 hadoop2,3,4 로 가정합니다)
[huser@hadoop2 current]$ pwd
/home/huser/hadoop-data/dfs/data/current
[huser@hadoop2 current]$ ls
dncp_block_verification.log.curr VERSION
[huser@hadoop2 current]$ vi VERSION
#Wed Feb 05 02:10:11 KST 2014
namespaceID=94412489 <-- 이 숫자를 위 Step 1 에서 확인한 기준과 동일하게 변경하세요
storageID=DS-1842946380-192.168.47.148-50010-1391528646896
cTime=0
storageType=DATA_NODE
layoutVersion=-32
:wq!
Step 3. 나머지 노드 모두 동일하게 변경한 후 hadoop1 에서 다시 시작하면 됩니다.
정상적으로 모든 서비스와 데몬이 시작이 되었다면 아래와 같이 간단하게 테스트를 해 보겠습니다.
* 예제 데이터로 테스트하기
Hadoop 을 설치하면 테스트를 할 수 있는 데이터를 패키지로 제공을 합니다.
가장 많이 사용되는 예제가 단어 수를 세는 예제인 wordcount 입니다.
이 예제를 실행해서 하둡이 정상적으로 설치되었는지 확인 해 보겠습니다.
[huser@hadoop1 hadoop-1.0.3]$ pwd
/home/huser/hadoop-1.0.3
[huser@hadoop1 hadoop-1.0.3]$ ./bin/hadoop fs -put ./conf/hadoop-env.sh ./conf/hadoopenv.sh
[huser@hadoop1 hadoop-1.0.3]$ ./bin/hadoop jar hadoop-examples-1.0.3.jar wordcount ./conf/hadoop-env.sh wc_output
위작업을 수행할 때 프로세스를 보니 jobtracker 가 작동중인 것이 확인됩니다.
작업이 마치면 아래와 같이 결과를 조회하면 됩니다.
아래 결과는 conf/hadoop-env.sh 파일에 어떤 글자가 몇 개 있는지 보여줍니다.
[huser@hadoop1 hadoop-1.0.3]$ ./bin/hadoop fs -cat wc_output/part-r -00000
이상으로 RHEL5 환경에서 4 노드를 활용한 하둡 구축을 마치겠습니다.