이 글은 크몽 재능인, socurites님이 원고를 기고하셨습니다.
이 글은 제 맥북에 하둡을 설치하여, 의사분산 모드로 실행한 작업 결과를 공유하기 위해서 정리한 글입니다.
설치하기
아파치 하둡 릴리즈 페이지에서 안정화된 배포판을 다운로드 받는다. 여기에서는 hadoop-0.20.2.tar.gz를 다운로드 받았다.
로컬 파일 시스템의 적당한 위치에 압축을 푼다.
$ tar xzf hadoop-0.20.2.tar.gz
이렇게 하둡이 설치된 디렉토리를 HADOOP_INSTALL이라고 부르자.
다음으로, HADOOP_INSTALL/conf/hadoop-env.sh 파일을 열어, JAVA_HOME 변수를 아래와 같이 설정한다.
export JAVA_HOME=/usr/lib/jvm/java-6-sun
필수사항은 아니지만 하둡 관련 명령어를 쉽게 실행하기 위해 하둡 설치 디렉토리(HADOOP_INSTALL)를 환경 변수에 설정하고, PATH를 설정한다. 여기에서는 .bashrc 파일에 설정했다.
#HADOOP export HADOOP_INSTALL=하둡이 설치된 경로 export PATH=$PATH:$HADOOP_INSTALL/bin
설정한 환경 정보를 반영합니다.
$ source ~/.bashrc
아래와 같이 하둡 명령어를 실행해서 제대로 설치죄었는지 확인해 볼 수 있다.
$ hadoop version Hadoop 0.20.2 Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707 Compiled by chrisdo on Fri Feb 19 08:07:34 UTC 2010
환경 설정하기
하둡은 독립 실행 모드(Standalone Mode), 의사 분산 모드(Pseudo-Distributed Mode), 완전 분산 모드(Fully Distributed Mode)로 실행할 수 있다. 여기에서는 의사 분산 모드로 실행하고자 한다.
하둡은 XML 파일을 사용해서 설정하며, 설정할 파일은 총 3가지다.
- conf/core-site.xml
하둡 컴포넌트의 공통적인 속성을 정의한다. - conf/hdfs-site.xml
하둡 파일 시스템과 관련된 설정을 한다. - conf/mapred-site.xml
하둡 맵리듀스와 관련된 설정을 한다.
먼저 core-site.xml부터 설정하자.
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
fs.default.name에 하둡 파일 시스템의 네임노드의 호스트와 포트를 설정한다. 여기에서는 기본 포트인 8020이 아니라 9000을 포트로 설정했다.
다음으로 hdfs-site.xml을 설정한다.
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
의사 분산 모드로 설정하기 위해, 복사본을 1개를 만든다. 즉 dfs.replication를 1로 설정한다.
마지막으로 mapred-site.xml을 설정한다.
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
SSH 설정하기
의사 분산 모드/완전 분산 모드에서는 모두 데몬 프로세스를 실행하므로, 원격 서버의 명령을 수행할 수 있도록 ssh를 설정해야 한다. ssh가 설치되지 않았다면 먼저 ssh를 설치하도록 한다. ssh 명령어가 실행가능하더라도 ssh 데몬이 실행되어 있지 않으면 SSH을 설정할 수 없으므로, 아래와 같이 ssh를 다운받아서 설치한다.
$sudo apt-get install ssh
이제 아래와 같이 ssh 키를 생성한다.
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
아래와 같은 명령어를 실행행서 성공한다면 제대로 설정한 것이다.
$ ssh localhost Welcome to Ubuntu 11.10 (GNU/Linux 3.0.0-12-generic i686) * Documentation: https://help.ubuntu.com/ Last login: Fri Nov 11 17:25:48 2011 from localhost
아래와 같이 22번 포트에 접속할 수 없다는 에러메시지가 나는 경우, sshd이 실행되어 있는지 확인한다.
ssh: connect to host localhost port 22: Connection refused $ pgrep sshd
만약 아무런 결과도 나오지 않는다면 , sshd이 설치되지 않았거나, sshd 실행되지 않은 상태다.
실행하기
하둡 파일 시스템을 사용하려면 먼저 네임 노드를 포맷해야 한다.
$ hadoop namenode -format
하둡 파일 시스템과 맵리듀스 데몬을 아래와 같이 구동한다.
$ start-dfs.sh $ start-mapred.sh
구동한 데몬을 중지하려면 아래의 명령어를 실행한다.
$ stop-dfs.sh $ stop-mapred.sh
데몬이 제대로 실행되었는지 확인하는 방법에는 여러가지가 있다. 그 중에서도 웹 UI를 통해 모니터링하는 방법이 가장 편리하다. 네임노드는 http://localhost:50070/ 에서, 잡트래커는 http://localhost;50030/ 에서 확인할 수 있다.