word count v2 2번째 글입니다.

 

Combiner의 동작확인

 

Job의 출력에서 Map-Reduce Framework 카운터들중에 다음 2개를 확인

_ Combine Input Records

- Combine Output Records

 

둘을 비교해보면 Combine Output Records의 값이 훨씬 작다.

- Combine Input Records의 경우 Mapper의 Output Records인 셈인데 Mapper의 Output Records보다 그 값이 큰데 그 이유는 Combiner는 Mapper Output이 merqu될 때마다 지속적으로 적용되기 때문이다.

 

12/08/06 12:31:37 INFO mapred.JobClient: Map output records=417,783,208

12/08/06 12:31:37 INFO mapred.JobClient: Combine input records=460,692,608

12/08/06 12:31:37 INFO mapred JobClient: Combine output records=53,872,927

 

 

카운터 사용

 

- 예를 들어 유일한 단어수를 카운트하고 싶다면 reduce 메소드에서 context.write다음에 다음 코드를 삽입

* context.getCounter("Wrods Stats", "Unique words").increment(1);

 

- JobTracker나 콘솔 출력에서 카운터의 수를 확인가능

 

 

 

빅데이터공부하기 53번째 글입니다.

이번글은 word count v2에 대해서 공부하겠습니다.

 

개요.

 

- 2M 영문 위키피디아 페이지(2M.ID.CONTENTS)들에 있는 단어들의 수를 빈도수를 계산

- 앞서 본 WordCount와 크게 안 다름. 몇 가지 차이점

- 입력파일의 형태가 다름. ID/tContent.ID는 그냥 무시.

- KeyValueTextInputFormat을 입력포맷으로 사용.

- Combiner를 사용 (Reducer를 그대로 적용)

* Combiner는 mapper 출력에 적용되는 로컬 reducer! 교환법칙과 결합법칙 성립 오퍼레이션에만 적용가능

- 카운터 사용

 

코드

 

- main 함수에서의 변경

- job.setCombinerClass(Reduce.class);

- job.setinputFormatClass(KeyValueTextInputFormat.class);

 

- Map 클래스의 변경

public static class Map extends Mapper<Text, Text, Text, LongWritable>

{

....

 

public void map(Text key, Text value, Context context)throws IOException, InterruptedException {

 

 

빅데이터공부하기 52_1 위키피디아 데이터 다운로드

 

데이터 다운로드

- 앞서 위치에서 파일을 다운로드받고 압출 해제 후 data 디렉토리로 이동

- 앞으로 예제프로그램들의 실행을 위해서 이 파일들을 HDFS로 복사

(/input 디렉토리로 복사시 아래 명령 실행)

* hadoop fs-copyFromLocal */input

 

 

다음 글에서는 word count v2를 공부하도록하겠습니다. ^^

 

11월3일 오늘 ... 너무 추워요 ㅠ0ㅠ

정말.. 겨울이 왔나봐요!! 저는 겨울보다 여름이 좋은데.. ㅠㅠ 다들 감기조심하세요 ^^

 

 

 

빅데이터공부하기 52번째글입니다.

 

위키파디아 _ 데이터준비

 

앞으로 예제 프로그램들에서 사용할 데이터들을 설명

Freebase에서 다운로드 된 영문 wikipedia문서들을 대상으로 함.

- 한글문서를 하고 싶었지만 괞찬은 무료형태소분석기를 못찾았습니다. ㅜ

 

다음파일을 다운로드

- wget

https://s3.amazonaws.com/hadoopkr/data.tar.gz

 

싱글서버 하둡을 쓰는 경우를 고려해 처음 2M개의 문서데이터 사용하여 다음 파일들을 생성

- 2M.TITLE.ID

* 각 라인마마 문서타이틀과 문서 ID가 나열 (Tab). 둘다 유니크.

 

-2M.ID.CONTENTS

* 각 문서들 마다 들어있는 링크들을 다음과 같은 형태로 정리

- 링크텍스트/ t소스문서ID

 

* 한 문서에 들어있는 링크텍스트의 수만큼 위의 패턴이 반복

 

- 2M.ID.CONTENTS

* 각 라인마다 "소스문서 ID /t타켓문서ID"가 나열됨. 이는 문서간의 링크관계를 나타냄

 

- RandomString.txt

* 임의의 문자열이 들어간 텍스트파일. 7장 StringSort에서 사용.

 

 

 

 

보너스 : MRUnit

 

- Cloudera에서 개발한 MapReduce를 위한 오픈소스 유닛테스트 프레임웍.

 

- JUnit과 같은 표준 자바 테스트툴과 MapReduce 프레임웍간의 손쉬운 통합 지원

 

- http://mrunit.apache.org

 

 

WordCountTest.java

 

암 세션에서 제공한 WordCount 프로젝트의 일부로 제공한 MRUnit기반 유닛테스트 코드

- WordCount의 mapper와 reducer의 기능을 샘플데이터로 테스트

 

빌드 프로세스의 일부로 실행

- "mvn test" or "mvn install"

 

Unit Test는 Continuous Integration에서 아주 중요!!

 

 

 

 

빅데이터공부하기 51_4 MRUnit / WordCountTest.java

 

지낙 빅데이터공부하기 51_2 번째 글에서 Mapper Task Log를 공부했었는데요.

이번에는 Task Log 페이지에 대해서 알아보도록하겠습니다.

 

Task Log 페이지

 

 

Mapper/Reducer timeout

 

만일 task가 오래동안 아무 "소식"이 없으면 tasktracker는 그 잡이 문제가 있다고 생각하고 중지.

- "소식" : 입력 읽기, 출력쓰기 혹은 상태 리포트, 타운터 증가 등등

 

- 오래 걸리는 것이 예상된다면 해결책은

* timeout 증가(mapred.task.timeout). 디폰트는 10분

* 종종 tasktracker로 살아있다고 핑 보내기

- Mapper.Context나 Reducer.Context의 progress 혹은 setStatus 메소드 호출

빅데이터 공부하기 !!

Job Tracker 웹 인터페이스의 두번째 시간입니다.

1. Mapper Task Detail

2. Mapper Task Log

두가지를 배워보도록 하겠습니다.

 

1. Mapper Task Detail

 

Job job_201208050110_0004

 

 

 

2. Mapper Task Log

 

Task Logs: 'attempt_201208050110_0004_m_000000_0'

 

 

 

빅데이터 공부하기 51번째 글입니다. ^^

 

Job Tracker 웹 인터페이스에 대해서 공부하겠습니다.

1. Job Detail

2. Mapper Detail

 

이번글에서는 2가지로 알아보겠습니다.

 

1. Job Detail

 

Hadoop job_201208050100_0004 on localhost

 

 

이 잡은 모두 16개의 mapper와 1개의 reducer를 필요로 했음

 

2. Mapper Datail

 

Hadoop map task list for job_201208050110_0004 on localhost

 

+ Recent posts