하둡 어플리케이션은 보통 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