의사 분산 모드로 하둡(Hadoop) 실행하기

이 글은 크몽 재능인, 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/ 에서 확인할 수 있다.

크몽 재능

댓글 남기기