하둡을 막상 사용하려면 좀 갑갑하다. 설치 빼고는 제대로 된 문서가 별로 없다. 그래서 간단하게 내가 만든 예제를 보여드리고자 한다.
두서 없이 쓰긴 하는데.. 읽다보면 알 수 있을 것이다.
// 하둡 내부에서 output 삭제
bin/hadoop fs -rmr output
// 하둡 내부에 jsp grep한 결과를 output 이라는 hdfs에 저장
bin/hadoop jar hadoop-*-examples.jar grep input output 'jsp'
// hdfs에 저장된 output을 로컬로 복사
bin/hadoop fs -get output1 output
한번 만들어진 hdfs의 output 디렉토리는 다시 쓸 수 없다. 지워야 한다..
[handev001:/share/hadoop-0.18.3] bin/hadoop
[handev001:/share/hadoop-0.18.3] bin/hadoop dfs -mkdir source
[handev001:/share/hadoop-0.18.3] cat > source.txt
input
[handev001:/share/hadoop-0.18.3] bin/hadoop dfs -put source.txt source/
[handev001:/share/hadoop-0.18.3] bin/hadoop jar contrib/streaming/hadoop-0.18.3-streaming.jar -input source -output "./log_result" -mapper mapper.pl -file mapper.pl -reducer reducer.pl -file reducer.pl
이 때 -input 프로퍼티의 값은 source는 디렉토리를 의미한다. 즉, hdfs의 root 상대경로 인 source 디렉토리릉 의미한다. 아래를 볼 것 ..
그리고, 마찬가지로 -output이다. 하지만, 펄 스크립트는 내 local 파일에 있다.
/share/hadoop-0.18.3] bin/hadoop fs -ls
Found 11 items
drwxr-xr-x - hadoop supergroup 0 2009-03-03 14:45 /user/hadoop/input
drwxr-xr-x - hadoop supergroup 0 2009-03-03 17:37 /user/hadoop/log_result
drwxr-xr-x - hadoop supergroup 0 2009-03-03 17:39 /user/hadoop/output
drwxr-xr-x - hadoop supergroup 0 2009-03-03 17:41 /user/hadoop/output1
drwxr-xr-x - hadoop supergroup 0 2009-03-03 17:46 /user/hadoop/output2
drwxr-xr-x - hadoop supergroup 0 2009-03-03 18:53 /user/hadoop/output3
drwxr-xr-x - hadoop supergroup 0 2009-03-03 18:54 /user/hadoop/output4
drwxr-xr-x - hadoop supergroup 0 2009-03-03 18:58 /user/hadoop/output5
drwxr-xr-x - hadoop supergroup 0 2009-03-04 10:11 /user/hadoop/output6
drwxr-xr-x - hadoop supergroup 0 2009-03-04 10:26 /user/hadoop/output7
drwxr-xr-x - hadoop supergroup 0 2009-03-03 17:43 /user/hadoop/source
mapper.pl
#!/usr/bin/perl
#$r = `grep -r $line /user/hadoop/input`; |
reducer.pl
#!/usr/bin/perl while (<>) { print; } |
아래를 참조하면 좋다.
참고하기
http://www.cs.brandeis.edu/~cs147a/lab/hadoop-troubleshooting/
http://www.cs.brandeis.edu/~cs147a/lab/hadoop-example/
계속 쓰려고 헀지만, hadoop을 중간에 안쓴 이유가 있었다.
우선 가지고 있는 파일들이 대용량이 아니라는 점, 그리고 hadoop을 써도 아주 성능상 효과를 가지지 못한 점이었다. 그것은 로컬만 썼으니까 그랬던 것 같다.
대용량 파일, 검색이 필요할 때는, 다양하게 거기에 맞는 솔류션을 쓰는 것이 많긴 한데, 아직은 나에게는 그런 일이 적어서..^^;; 하루만에 hadoop 써본 것을 정리한다.
또한 Hadoop의 전문가가 쓴 아래의 글도 많은 도움을 받았다.
'general java' 카테고리의 다른 글
JMX에서의 Internalization (0) | 2009.03.25 |
---|---|
toString 구현을 쉽게 구현하기 (0) | 2009.03.25 |
javax.mail.Transport.send 메소드 사용시 block되는 현상 (0) | 2009.03.24 |
sping 2.0 aop @aspect 사용 예제 (0) | 2009.03.06 |
Hadoop 설치 하기 (0) | 2009.03.04 |