본문 바로가기

Hadoop/mapreduce

MapReduce - 간단개념소개 및 wordcount 사용해보기

728x90

MapReduce는 Hadoop 클러스터의 데이터를 처리하기 위한 시스템으로 총 2개(Map, Reduce)의 phase로 구성된다. Map과 Reduce 사이에는 shuffle과 sort라는 스테이지가 존재한다. 각 Map task는 전체 데이터 셋에 대해서 별개의 부분에 대한 작업을 수행하게 되는데, 기본적으로 하나의 HDFS block을 대상으로 수행하게 된다. 모든 Map 태스크가 종료되면, MapReduce 시스템은 intermediate 데이터를 Reduce phase를 수행할 노드로 분산하여 전송한다.

[출처: http://www.slideshare.net/kwnam4u/hadoop-38481079] 

실제로 그러면 wordcount를 사용해보도록 하자.

Wordcount는 해당 텍스트에 어떤 단어가 얼마나 들어가있는지를 key value꼴로 나타낼 수 있는 라이브러리이다.

자연어처리 tokenizing보다는 약간 하위호환 개념인 느낌이다.

 

어쨌든 읽을 텍스트 파일을 준비하고, 나는 Azure를 통해 미리 준비한 Hadoop cluster에 putty로 접속해보았다.

클라이언트를 위한 맵리듀스 라이브러리들이 이렇게나 많이 준비되어 있다.

그중에 나는 hadoop-mapreduce-examples.jar에 있는 wordcount라는 프로그램을 이용할 것이다.

data는 Azure Storage Manager를 이용해서 옮겨두고..

wordcount를 쓰겠다는 옵션과 데이터가 저장된 파일위치, 결과값을 저장할 위치를 옵션으로 주고나면 wordcount를 돌릴 수 있다.

돌려보면 완성! /data/reviews.txt로 결과값도 직접 확인해 볼 수 있다.