하둡(hadoop) 맵리듀스 로컬에서 테스트 하기

|



앞선 강좌에 따라 환경 설정을 하고 이클립스에 개발환경 세팅 후 맵리듀스 프로그래밍을 진행을 하다보면 조금 귀찮은게 있습니다. 

우선 프로그램을 테스트하기 위해서 매번 jar로 묶어줘야 한다는 점이 있구요. 

또한 input 파일을 hadoop의 파일시스템으로 넣어줘야 한다는 것도 조금 귀찮습니다. 


이러한 문제를 해결할 수 있는 것은 역시 standalone mode로 실행하는 수 밖에는 없을 것 같습니다. 

앞서 세팅한 하둡(hadoop) 설치부터 테스트까지 정리~ 에서는 pseudo-distributed mode였는데요. 

이번에는 설정된 환경에서 몇개의 config 파일만 수정해서 standalone mode로 변경해서 jar로 묶지 않고 로컬의 파일시스템으로 예제를 실행해 보도록 하겠습니다. 


Standalone mode로 설정하기

독립적으로 로컬에서 실행되도록 변경하기 위해서는 파일 시스템 부분과 맵리듀스의 잡트래커를 수정해 주면 됩니다. 

hadoop 1.0 버전부터는 config 파일들이 분할 되어 있기 때문에 해당 파일들을 각각 수정해서 테스트 해보니 잘 되더군요. 

그럼 한번 살펴보도록 하겠습니다. 


core-site.xml 설정

이 파일에 있는 프로퍼티 중 fs.default.name을 "file:///"으로 변경해야 합니다. 

전체 소스는 다음과 같습니다. 


mapred-site.xml 설정

이 파일에 있는 프로퍼티 중 mapred.job.tracker를 "local"로 변경해야 합니다. 

소스는 다음과 같습니다. 


이제 설정이 완료되었으니  파일 시스템을 하둡의 HDFS가 아닌 로컬의 파일시스템을 사용하게 되겠죠.. 


하둡 실행 및 종료

하둡을 실행하고 종료하는 것은 기존과 동일하게 수행하시면 됩니다. 

Standalone mode이므로 기존의 웹 기반 UI는 사용할 수 없을 겁니다. 

하둡 실행

# start-all.sh


하둡 종료

# stop-all.sh


WordCount 예제로 맵리듀스 테스트 수행

자.. 이제 하둡 맵리듀스 개발에서 설명한 동일한 예제를 가지고 로컬에서 테스트를 진행해 보도록 하겠습니다. 

로컬에서 실행할 때는 클래스를 경로에 추가하기 위해서 HADOOP_CLASSPATH를 설정해야 합니다. 

다음과 같이 명령어를 실행하면 jar로 묶지 않고 실행할 수 있습니다. 

# export HADOOP_CLASSPATH=bin

# hadoop kr.acronym.wordcount.WordCount input/ output/


여기에서 중요한 부분이 바로 예제를 실행하는 위치입니다. 

만약 이전의 이클립스에서 하둡 맵리듀스 설정대로 따라 하셨다면 위 명령의 실행 위치는 workspace/hadoop/ 이 됩니다.

workspace는 이클립스에서 설정한 경로가 되겠죠.. 

해당 경로의 bin/ 하위에 클래스 파일이 생성되고 해당 클래스 파일을 HADOOP_CLASSPATH로 지정하구요. 

그리고 input/ 폴더에 word count를 진행할 file01, file02를 넣어두시면 됩니다. 

input/ 폴더도 실제 로컬 파일 경로가 됩니다. 


이렇게 실행하면 다음 그림과 같이 output/폴더가 생기고 결과도 맞게 들어갑니다. 

이제 jar 파일을 생성하거나 hadoop dfs 명령어로 파일을 넣어주는 작업 없이도 빠르게 테스트 할 수 있을 것 같네요. 


하둡 실행 결과


하둡을 완전히 처음부터 하고 있어서 어려운 점이 많네요. 

그렇지만 하나씩 정리해 나가면서 진행해 보려고 합니다. 






Trackback 0 And Comment 0