1. 다운로드
아래 주소로 들어가 버전별로 다운로드 하면 된다
http://apache.mirror.cdnetworks.com/hadoop/common/
• 1.0.X - current stable version, 1.0 release
• 1.1.X - current beta version, 1.1 release
• 2.X.X - current alpha version
• 0.23.X - simmilar to 2.X.X but missing NN HA.
• 0.22.X - does not include security
• 0.20.203.X - old legacy stable version
• 0.20.X - old legacy version
작성시간 기준으로 1.0.4 가 가장 안정버전이라 해당 버전으로 테스트했다
Documentation : http://hadoop.apache.org/docs/r1.0.4/index.html
2. 설치
다운로드한 파일(hadoop-1.0.4.tar.gz)을 앞축풀면 설치끝
나는 hadoop user를 생성하여 설치를 했다
각종 PATH는 생략
정상적으로 설치가 되었다면
hadoop>$ hadoop version
Hadoop 1.0.4
Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1393290
Compiled by hortonfo on Wed Oct 3 05:13:58 UTC 2012
From source with checksum fe2baea87c4c81a2c505767f3f9b71f4
대충 위와 같은 메세지가 뿌려진다
3. 환경 설정
하둡은 다음의 세가지 방식중 한가지로 동작
• Local (Standalone) Mode
• Pseudo-Distributed Mode
• Fully-Distributed Mode
이중에서 Local Mode는 아무것도 설정해 줄것이 없기 때문에 Pseudo-Distributed Mode로 설정한다
hadoop-env.xml 설정
# The java implementation to use. Required..bash_profile에 JAVA_HOME를 잡아두어도 여기에 설정하지 않으니깐 JAVA PATH가 잡히지 않았다는 에러가 나타났다(이유를 모르겠음)
export JAVA_HOME=/usr/java/jdk1.6.0_25
그래서 처음 설치할때 .bash_profile에 따로 PATH를 잡아 두지 않고 생략한 것이다
core-site.xml 설정
HDFS와 mapReduce에 공통적으로 사용되는 하둡코어 환경설정
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/temp</value>
</property>
</configuration>
hdfs-site.xml 설정
HDFS 데몬환경
Pseudo-Distributed Mode이므로 동일한 서버에 네임노드와 데이터 노드를 설정
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.name.edits.dir</name>
<value>${dfs.name.dir}</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
mapred-site.xml 설정
job tracker와 task racker 같은 mapReduce 데몬환경
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>${hadoop.tmp.dir}/mapred/local</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>${hadoop.tmp.dir}/mapred/system</value>
</property>
</configuration>
slaves 설정
데이터 노드와 task tracker를 작동시킬 컴퓨터의 목록
실제 분산 환경으로 처리할때는 데이터 노드에 해당하는 컴퓨터 ip나 호스트명을 써주면 됨
localhost
SSH 설정
master 서버와 slave 서버들이 상호 접속 가능하기 위해
slaves를 localhost로 설정했더라도 데몬 프로세스를 실행시키기 위해 로컬 호스트에 암호 입력없이 ssh로그인할수 있도록 설정할 필요가 있음
hadoop>$ ssh-keygen -t rsa
hadoop>$ cp hadoop-env.sh hadoop-env.sh.back
hadoop>$ ssh localhost
네임노드를 HDFS로 포맷
hadoop>$ hadoop namenode -format
4. 실행 및 종료
hadoop>$ ./start-all.sh //모두 실행
hadoop>$ ./start-mapred.sh //맵리듀스만 실행
hadoop>$ ./start-dfs.sh //hdfs만 실행
hadoop>$ ./stop-all.sh //모두 중단
hadoop>$ ./stop-mapred.sh //맵리듀스만 중단
hadoop>$ ./stop-dfs.sh //hdfs만 중단
맵리듀스 : http://localhost:50030
HDFS : http://localhost:50070
해당페이지가 열리지 않는다면 방화벽이 열렸는지 확인해본다
5. 테스트
hadoop 배포판에 기본적으로 포함된 예제를 돌려본다
CHANGES.txt파일에 있는 단어수를 체크해서 출력하는 예제임
hadoop>$ bin/hadoop dfs -mkdir input
hadoop>$ bin/hadoop dfs -put CHANGES.txt input/
hadoop>$ bin/hadoop jar hadoop-examples-1.0.4.jar wordcount input output
hadoop>$ bin/hadoop dfs -get output output
설치하고 기본예제까지 돌려 봤지만 이걸 어디다 써먹을지는 고민중이다
그래도 한번은 써먹게 되지 않을까...