티스토리 뷰

지난번에 맵리듀스에 대해서는 한번 정리한 적이 있는데요. 

오늘은 하둡(Hadoop)을 설치하고 환경변수들을 설정한 후, 기본 예제인 Word Count를 실행해보도록 하겠습니다. 

백문이 불여일견이라고 내용을 아무리 보는 것 보다 직접 해보는 것이 확실히 도움이 되는 것 같습니다. 



하둡(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을 설정해 줍니다. 

java와 hadoop이 설치된 경로를 지정해 줍니다. (저와 경로가 다를테니 각자에 맞춰서 해주시면 됩니다.)

이제부터는 XML 파일들을 설정해 볼 차례입니다. 



core-site.xml 설정

core-site.xml 파일은 HDFS와 맵리듀스에 공통적으로 사용되는 IO와 같은 하둡 코어를 위한 환경을 설정하는 파일입니다. 

다음과 같이 설정해 주시면 됩니다. 

hdfs-site.xml 설정

hdfs-site.xml 파일은 네임노드, 보조 네임노드, 데이터 노드 등과 같이 HDFS 데몬을 위한 환경을 설정하는 파일입니다. 

Pseudo-distributed mode이므로 동일한 서버에 네임 노드와 데이터 노드를 설정했네요. 

mapred-site.xml

mapred-site.xml 파일은 Job Tracker와 Task Tracker 같은 맵리듀스 데몬을 위한 환경을 설정하는 파일입니다. 

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 되었다고 하던데요. 일단 예제는 잘 돌아갑니다. 

나중에 한번 제대로 확인해 봐야겠네요~


하둡 (Hadoop) 더 알아보기

맵리듀스의 개념

하둡의 핵심인 맵(Map)과 리듀스(Reduce)의 기본 개념을 이해해 보세요.

하둡 프로그래밍을 위한 이클립스 플러그인 설정

하둡 개발 환경 구축을 위한 이클립스 플러그인 설정 방법입니다.

하둡 프로그래밍을 위한 이클립스 설정

하둡 개발 환경을 이클립스에 직접 설정해 보세요.

하둡 로컬에서 실행

하둡을 Pseudo Mode가 아닌 로컬 환경(Standalone Mode)에서 실행해 보세요.

하둡 HDFS 명령어

하둡 파일 시스템의 명령어 정리입니다.

하둡 관련 기술 - 주키퍼, 피그, HBase

하둡 에코 시스템의 주요 기술인 주키퍼, 피크, HBase에 대한 내용입니다.

하이브(Hive)와 피그(Pig)

하둡 맵리듀스를 보다 편하게 만들어주는 하이브(Hive)와 피그(Pig) 예제입니다.


R 설치와 활용

R에 대한 기본적인 설치와 활용입니다. 하둡과 함께 활용해 보면 어떨까요?

하둡 이외의 빅데이터 분석 기술

하둡 이외에 빅데이터 분석 기술은 어떤 것이 있을까요? Mahout, CEP 등 살펴보세요.

CEP 오픈소스 에스퍼(Esper)

CEP(Complex Event Processing) 기술의 대표적인 오픈소스 에스퍼(Esper)에 대한 내용입니다.

링크드인의 아파치 카프카(Kafka)

실시간 처리를 위한 분산 메시징 시스템 카프카까지 한번 보세요~

댓글
댓글쓰기 폼