하둡 어플리케이션은 보통 Mapper -> Shuffle -> Reducer 순으로 작업을 진행한다.

파이썬 예제와 함께 각각의 결과물을 확인한다.

1. Mapper


$ cat wordcount_mapper.py | python ./wordcount_mapper.py > output_mapper.txt
$ cat output_mapper.txt
import	1
sys	1
for	1
line	1
in	1
sys.stdin:	1
line	1
=	1
line.strip()	1
keys	1
=	1
line.split()	1
for	1
key	1
in	1
keys:	1
value	1
=	1
1	1
print("{0}\t{1}".format(key,value))	1


2. Shuffle


$ cat output_mapper.txt | sort > output_sort.txt
$ cat output_sort.txt
=	1
=	1
=	1
1	1
for	1
for	1
import	1
in	1
in	1
key	1
keys:	1
keys	1
line	1
line	1
line.split()	1
line.strip()	1
print("{0}\t{1}".format(key,value))	1
sys	1
sys.stdin:	1
value	1


3. Reducer


$ cat output_sort.txt | python wordcount_reducer.py > output_reducer.txt
$ cat output_reducer.txt 
=	3
1	1
for	2
import	1
in	2
key	1
keys:	1
keys	1
line	2
line.split()	1
line.strip()	1
print("{0}\t{1}".format(key,value))	1
sys	1
sys.stdin:	1
value	1


4. Mapper | Shuffle | Reducer


$ cat wordcount_mapper.py | python wordcount_mapper.py | sort | python wordcount_reducer.py > output.txt
$ cat output.txt
=	3
1	1
for	2
import	1
in	2
key	1
keys:	1
keys	1
line	2
line.split()	1
line.strip()	1
print("{0}\t{1}".format(key,value))	1
sys	1
sys.stdin:	1
value	1





딥 러닝에 대해 독학을 하면서 정리한 걸 적고 있습니다.

전공과 무관하며 전문적인 지식이 아니므로 개인적인 의견과 부족하고 틀린 점이 많습니다.

추가 지식 및 잘못된 점을 지적해주시면 공부하는데 많은 도움이 되겠습니다. 감사합니다^^

- 푸어맨


[Reference]

(Writing Hadoop Applications in Python with Hadoop Streaming) http://www.glennklockwood.com/data-intensive/hadoop/streaming.htm

(하둡 스트리밍을 활용한 word count 예제) http://blog.acronym.co.kr/606

(파이썬 문자열 관련함수) http://agiantmind.tistory.com/31


+ Recent posts