티스토리 뷰
요즘 하둡(Hadoop)을 계속해서 테스트해보고 있습니다.
지난번에 설치는 2012/05/18 - [프로그래밍/Java] - 하둡(Hadoop) 설치부터 테스트까지 정리~ 에서 정리했었는데요.
이번에는 맵리듀스 프로그래밍을 위한 이클립스 설정을 살펴보도록 하겠습니다.
참고로 이번부터는 맥에서 하둡을 설치하고 테스트를 진행했네요.
Apache Ant / Ivy 다운로드 및 설치
하둡 내부의 소스 폴더를 보면 ant build를 많이 사용하고 있습니다.
자바 프로젝트를 하면서 Ant는 기본적으로 설치되어 있을텐데요.
제 Mac에서도 /usr/share/java/ant-1.8.2/에 설치되어 있네요.
Ant가 설치되어 있으면 이어서 Apache Ivy를 설치해야 합니다.
하둡에서도 Ivy를 사용하고 있는데요. Apache ivy는 자바 프로젝트의 의존성을 관리해 주는 도구입니다.
즉, Ant 빌드에 세팅된 정보를 이용하여 각 라이브러리를 참조한 뒤 의존성 검사를 수행하고 검사결과도 HTML 형태로 보여주기도 합니다.
다운로드는 http://ant.apache.org/ivy/download.cgi 에서 하면 됩니다.
apache-ivy-2.3.0-rc1-bin.tar.gz 파일을 받아서 압축을 풀면 ivy-2.3.0-rc1.jar 파일을 찾을 수 있습니다.
이 파일을 Ant 가 설치된 폴더의 lib/에 복사하시면 됩니다. (/usr/share/java/ant-1.8.2/lib)
이클립스 플러그인 Ant 빌드
이클립스에 세팅하기 위해서 먼저 테스트한 것은 이클립스 플러그인 입니다.
하둡을 다운로드하고 소스들을 살펴보면 eclipse-plugin이라는 폴더가 있습니다.
(정확한 위치는 /hadoop-1.0.1/src/contrib/eclipse-plugin 이네요.)
contrib인 걸로 봐서 Third Party에서 개발해서 제공한 것 같은데요.
Ant 빌드를 세팅했으므로 아무 생각없이 먼저 Build를 실행해 봤습니다.
아래 그림과 같이 뭔가 동작하는 것 같기는 하지만, compile과 jar에서 아무 내용이 없는 것을 확인할 수 있습니다.
build.xml 파일을 열어보니 compile과 jar에서 사용하는 eclipse.home이나 version과 같은 property가 설정이 안되어 있었습니다.
그래서 해당 property를 설정하고 다시 Ant 빌드를 수행했습니다.
<property name="eclipse.home" value="/Applications/eclipse"/>
<property name="version" value="1.0.1"/>
결과는 역시 Build Fail.... 100개의 Error가 발생했네요~
오류메시지와 build.xml 파일을 살펴보니 자바 컴파일 중에 난 에러인데요..
hadoop 관련된 jar 파일들이 포함되지 않아서 발생한 것 같네요.
그래서 hadoop-core와 hadoop-lib에 대한 classpath를 다음과 같이 설정해 봤습니다.
(먼저 path를 정의하고, classpath에 참조하는 형태로 구성했네요.)
<path id="hadoop-core">
<fileset dir="${hadoop.root}/">
<include name="hadoop*.jar"/>
</fileset>
</path>
<path id="hadoop-lib">
<fileset dir="${hadoop.root}/lib/">
<include name="*.jar"/>
</fileset>
</path>
....
<path id="classpath">
<pathelement location="${build.classes}"/>
<pathelement location="${hadoop.root}/build/classes"/>
<path refid="hadoop-core"/>
<path refid="hadoop-lib"/>
<path refid="eclipse-sdk-jars"/>
</path>
다시 Ant 빌드 해보니 아래와 같은 오류가 나오네요.. 휴~ 정말 직접 만든게 아니라 끝이 없네요.. ㅋㅋ
오류 메시지를 잘 살펴보니 build에 hadoop-core-1.0.1.jar 파일이 없다는 것 같습니다.
그래서 /hadoop-1.0.1 하위에 있는 hadoop-core-1.0.1.jar 파일을 build 폴더 밑으로 복사했습니다.
마찬가지로 Ant 빌드를 해보면 commons-cli-1.2.jar 파일 관련 오류가 나오므로 마찬가지로 지정한 위치로 복사했네요.
(위치가 조금 다릅니다. 다음 내용 참고하세요)
# cp hadoop-core-1.0.1.jar build/
# cp lib/commons-cli-1.2.jar build/ivy/lib/Hadoop/common/
드디어 eclipse plugin에 대한 Ant Build를 성공했습니다. ^^
/hadoop-1.0.1/build/contrib/eclipse-plugin 폴더에 보면 hadoop-eclipse-plugin-1.0.1.jar 파일이 생성된 것을 볼 수 있습니다.
이클립스 플러그인 적용
생성된 파일을 이클립스의 plugin 폴더에 복사하고 이클립스를 재시작하면 해당 플러그인이 적용됩니다.
Perspective를 보면 다음 그림과 같이 코끼리 모양의 MapReduce를 추가할 수 있습니다.
곰곰히 생각해보니 DFS와 같은 하둡에 연동이 안된다면 굳이 플러그인을 사용하는 것이 의미가 있을까 하는 의문이 드네요. 헐~
윈도우에서는 동작할 것 같기는 한데요.. cygwin과 같은 것을 설치해야 하니 부담이 있을 듯 하구요..
localhost가 아닌 원격으로 세팅하면 될 것 같기도 한데.. 거기까지는 다음에 다시 한번 테스트 해보도록 하죠.
일단 이어서 MapReduce 프로젝트로 wordcount를 하나 생성해 봤습니다.
그런데 생성해보니 버그인지 프로젝트가 두개가 생겼습니다. 하나를 지우면 같이 사라지는 것으로 봐서 버그인 듯 하네요..
더욱 당황스러운 것은 기본적인 jar 파일을 포함한 것 이외에 다른 템플릿이 전혀 없다는 것입니다.
헉! 왜 이걸 빌드하고 적용했지? 하는 생각이 밀려오네요.. ㅠㅠ
정리
현재까지 살펴본 바에 따르면 일단 다음과 같이 정리할 수 있습니다.
- Mac의 이클립스에서는 HDFS를 연결해도 SSH로 접속이 되지 않습니다.
- MapReduce 프로젝트를 생성하니 프로젝트가 두개씩 보여지고 jar 파일 import외에는 특별한 템플릿이 없습니다.
위 내용을 토대로 생각해보면
이클립스 플러그인을 적용해서 맵리듀스 프로그래밍을 할 필요가 현재까지는 없다는 것입니다.
그렇다면 차라리 이클립스에 기본적인 자바 프로젝트로 생성하고 jar만 잘 import 해줘서
맵리듀스 프로그래밍에 대한 컴파일과 결과 파일인 jar 생성만 잘 해주면 된다는 것이죠.
다음에는 이 방식으로 이클립스 맵리듀스 개발 환경 세팅을 다시 정리해 보려고 합니다.
'Cloud&BigData > 하둡(Hadoop)' 카테고리의 다른 글
Cloudera Impala - 하둡 기반의 SQL 쿼리 엔진으로 실시간 분석을 (0) | 2014.08.12 |
---|---|
하둡(Hadoop) 파일시스템 (HDFS) 명령어 정리~ (0) | 2012.08.29 |
하둡(hadoop) 맵리듀스 로컬에서 테스트 하기 (0) | 2012.06.13 |
하둡(hadoop) 맵리듀스 프로그래밍을 위한 이클립스 설정 및 맵리듀스 개발 #2 (3) | 2012.05.25 |
하둡(Hadoop) 설치부터 테스트까지 정리~ (2) | 2012.05.18 |
- Total
- Today
- Yesterday
- 분석
- 도서
- 마케팅
- 자바
- fingra.ph
- 클라우드
- 구글
- r
- 빅데이터
- java
- 디자인
- 세미나
- mysql
- 모바일
- 통계
- 아이폰
- XML
- 웹
- 책
- 애플
- 하둡
- HTML
- 프로젝트
- 맥
- ms
- 자바스크립트
- 안드로이드
- SCORM
- Hadoop
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |