하둡(Hadoop) 설치
하둡은 HDFS, MapReduce를 소프트웨어로 구현한 것으로 아파치 Top-Level 프로젝트입니다.
코어는 Java, C/C++, Python등을 지원하는데요. 기본적으로 JDK는 설치되어 있어야 Hadoop을 구동할 수 있습니다.
하둡을 구동하기 위해서는 리눅스 환경이 좋은데요. 윈도우는 경우에는 가상머신을 활용하면 됩니다. (맥은 설치가 됩니다.)
저는 우분투를 PC에 설치해서 하둡 설치를 진행했네요.
다운로드는 http://ftp.daum.net/apache/hadoop/common/ 에서 버전별로 받으시면 됩니다.
현재 1.0.2버전까지 다운로드 할 수 있네요. 저는 1.0.0 버전으로 테스트를 진행했습니다.
다운로드한 파일(hadoop-1.0.0.tar.gz)을 압축을 풀고 진행하면 됩니다.
습관적으로 /usr/local 하위 폴더에 압축을 풀었네요.. ^^
# tar xzf hadoop-1.0.0.tar.gz
이제 환경변수 설정을 진행해야 합니다. 먼저 profile을 vi 에디터로 띄웁니다.
# cd ~
# vi .profile
그리고 나서 다음과 같이 환경변수들을 설정해 줍니다.
JAVA_HOME을 먼저 설정하고, 하둡이 설치된 경로인 HADOOP_INSTALL을 지정한 후 PATH에 추가했습니다.
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export HADOOP_INSTALL=/usr/local/hadoop-1.0.0
export PATH=$PATH:$HADOOP_INSTALL/bin
이제 하둡이 동작하는지 다음과 같이 확인하시면 됩니다.
# source .profile
# hadoop version
Hadoop 1.0.0
Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1214675
Compiled by hortonfo on Thu Dec 15 16:36:35 UTC 2011
하둡(Hadoop) 환경 설정
하둡은 다음의 세가지 방식 중 한가지로 동작합니다.
- Standalone mode
- - 데몬 프로세스가 동작하지 않고 모두 단독의 JVM 내에서 동작한다. 테스트하고 디버그가 쉽기 때문에 개발에 적합하다.
- Pseudo-distributed mode
- - 하둡 데몬 프로세스가 로컬 컴퓨터에서 동작하므로 클러스터를 시뮬레이션 할 수 있다.
- Fully distributed mode
- - 하둡 데몬 프로세스가 여러 컴퓨터로 구성된 그룹에서 동작한다.
이 중에서 Standalone mode는 아무것도 설정해 줄 것이 없으므로 저는 Pseudo-distributed mode로 설정해 보도록 하겠습니다.
Hadoop과 관련된 환경설정 파일들은 conf/ 디렉토리에 있습니다.
hadoop-env.sh 설정
먼저 conf/hadoop-env.sh 파일에서 JAVA_HOME과 HADOOP_HOME을 설정해 줍니다.
- # vi conf/hadoop-env.sh
- export JAVA_HOME=/usr/lib/jvm/java-6-sun
- export HADOOP_HOME=/usr/local/hadoop-1.0.0
java와 hadoop이 설치된 경로를 지정해 줍니다. (저와 경로가 다를테니 각자에 맞춰서 해주시면 됩니다.)
이제부터는 XML 파일들을 설정해 볼 차례입니다.
core-site.xml 설정
core-site.xml 파일은 HDFS와 맵리듀스에 공통적으로 사용되는 IO와 같은 하둡 코어를 위한 환경을 설정하는 파일입니다.
다음과 같이 설정해 주시면 됩니다.
- <?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://localhost:9000</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/usr/local/hadoop-1.0.0/hadoop-${user.name}</value>
- </property>
- </configuration>
hdfs-site.xml 설정
hdfs-site.xml 파일은 네임노드, 보조 네임노드, 데이터 노드 등과 같이 HDFS 데몬을 위한 환경을 설정하는 파일입니다.
Pseudo-distributed mode이므로 동일한 서버에 네임 노드와 데이터 노드를 설정했네요.
- <?xml version="1.0"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
- <!-- Put site-specific property overrides in this file. -->
- <configuration>
- <property>
- <name>dfs.name.dir</name>
- <value>/usr/local/hadoop-1.0.0/dfs/name</value>
- </property>
- <property>
- <name>dfs.name.edits.dir</name>
- <value>${dfs.name.dir}</value>
- </property>
- <property>
- <name>dfs.data.dir</name>
- <value>/usr/local/hadoop-1.0.0/dfs/data</value>
- </property>
- </configuration>
mapred-site.xml
mapred-site.xml 파일은 Job Tracker와 Task Tracker 같은 맵리듀스 데몬을 위한 환경을 설정하는 파일입니다.
- <?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>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 주소나 호스팅 명을 써 주시면 됩니다.
전 Pseudo-distributed mode이므로 localshot라고만 했네요.
localhost
SSH 설정
Fully distributed mode에서는 Master 서버와 Slave 서버들이 상호 접속이 가능하도록 SSH를 설정해야 합니다.
물론 Pseudo-distributed mode에서도 이와 같은 설정이 필요합니다.
왜냐하면 Hadoop은 내부적으로 Pseudo-distributed mode와 Fully distributed mode를 구분하지 못하기 때문입니다.
그러므로 위와 같이 Slaves를 localhost로 설정했더라도 데몬 프로세스를 실행시키기 위해서 로컬호스트에 암호 입력없이 SSH 로그인할 수 있도록 설정할 필요가 있습니다.
그래서 서로 SSH 키를 생성하고 복사하는 과정이 필요한데요. Pseudo-distributed mode이므로 다음과 같이 한번만 해주시면 됩니다.
(참고로 SSH는 미리 설치되어 있어야 합니다.)
# ssh-keygen -t rsa
# cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
# ssh localhost
마지막의 #ssh localhost 를 실행해서 제대로 접속되는지 확인할 수 있습니다.
네임 노드 포맷
이제 마지막으로 네임노드를 HDFS로 포매팅 해주면 모든 세팅은 종료 됩니다.
다음과 같이 해 주면 됩니다.
# hadoop namenode -format
드디어 Hadoop 관련 설정을 마무리 했네요.
저도 각각의 항목들을 모두 이해한 것은 아니지만 대략적으로 각각의 파일이 어떤 것을 하는지 알고 있으면 될 것 같습니다.
하둡(Hadoop) 실행 및 UI 확인
Hadoop을 실행하는 명령어는 다음과 같습니다. HDFS만 시작할 수도 있고, 맵리듀스만 실행할 수도 있으면 전체를 한번에 시작할 수도 있네요.
# start-all.sh //HDFS & 맵리듀스 모두 실행
# start-mapred.sh //맵리듀스만 실행
# start-dfs.sh //HDFS만 실행
# stop-all.sh // HDFS & 맵리듀스 모두 중단
# stop-mapred.sh // 맵리듀스만 중단
# stop-dfs.sh // HDFS만 중단
Hadoop을 실행하고 난 후, 웹 기반의 UI로 모니터링할 수 있도록 제공하고 있습니다.
각각의 URL은 다음과 같습니다.
# 맵리듀스
http://localhost:50030
# HDFS
http://localhost:50070
실행한 화면은 다음과 같네요.
하둡 (Hadoop) 실행 테스트
위 그림을 보면 실제로 맵리듀스를 1개 테스트한 결과를 볼 수 있을 겁니다.
다음과 같이 Hadoop 배포판에 포함된 기본적인 예제를 테스트했네요.
여러분도 세팅을 마무리 한 후, 한번 테스트 해보시기 바랍니다. 지정된 텍스트 파일에서 단어의 개수를 체크하는 예제네요.
# cd /usr/local/hadoop-1.0.0
# hadoop dfs -mkdir input
# hadoop dfs -put CHANGES.txt input/
# hadoop jar hadoop-examples-1.0.0.jar wordcount input output
CHANGES.txt 는 하둡 설치 디렉토리에 있는 변경된 내역을 정리한 파일입니다.
이 파일에 있는 단어의 수를 체크해서 출력하는 내용입니다.
ps. HADOOP_HOME을 설정하고 실행하면 다음과 같은 메시지가 나타납니다.
Warning: $HADOOP_HOME is deprecated.
HADOOP_HOME이 deprecated 되었다고 하던데요. 일단 예제는 잘 돌아갑니다.
나중에 한번 제대로 확인해 봐야겠네요~
2012/05/22 - [클라우드&BigData/하둡(Hadoop)] - 하둡 맵리듀스 프로그래밍을 위한 이클립스 플러그인 설정 #1
2012/05/25 - [클라우드&BigData/하둡(Hadoop)] - 하둡(hadoop) 맵리듀스 프로그래밍을 위한 이클립스 설정 및 맵리듀스 개발 #2
'System > Linux' 카테고리의 다른 글
Fedora16 설치(1/2) - 페도라 다운 및 부팅용 설치USB 만들기 (0) | 2012.07.13 |
---|---|
PC에 우분투 설치하는 방법 /멀티부팅 (0) | 2012.07.12 |
fedora10 이후 버전에서 root권한 얻기 (0) | 2012.07.11 |
하둡(hadoop) 맵리듀스 프로그래밍을 위한 이클립스 설정 및 맵리듀스 개발 #2 (0) | 2012.06.29 |
하둡 맵리듀스 프로그래밍을 위한 이클립스 플러그인 설정 #1 (0) | 2012.06.29 |