오호호 오늘은 목요일 ~~

내일은 불타는 금요일><

그러나 지금은 공부혀 ~~

ㅋㅋㅋ 빅데이터공부를 시작해볼까용 !!

 

Identity Reducer

 

- 모든 reducer의 선조가 되는 Reducer 클래스가 바로 Identity Reducer

- 입력으로 들어온 키, 밸류를 그대로 출력으로 내보냄

 

protected void reduce(KEYIN key, lterable<VALUEIN> values, Context context) throws IOException, InterryptedException

{

for(VALUCIN value: values)

{

context.write((KEYOUT)key, (VALUEOUT)value);

}

}

예를들어 같은 키를 갖는 레코드들끼리 모아서 처리해야할 필요없는 경우 사용가능

즉 mapper만 필요하면 생각보다 많이 사용된다.

- job.setReducerClass(Reducer.class);

 

 

빅데이터공부하기입니다.

오늘의 내용은 Reducer 클래스의 메소드들입니다.

오늘하루도 열공!!!

 

앞서 본 reduce메소드이외에도 다음 메소들들이 존재

- public void setup(Reducer.Context context)

* Reduce 메소드에서 필요리소스를 여기서 할당

 

- public void cleanup(Reducer.Context context)

* setup에서 할당한 리소스를 해제

 

- public void run(Reducer.Context context)

* Reducer의 기본구현은 다음과 같다.

 

public void run(Context context) throws IOException, InterruptedException

{

setep(context);

while(context.nextKey())

{

reduce(context.getCurrentkev(), context.getValues(), context);

}

cleanup(context);

}

 

 

 

월요일이에요 !!!

월요일은 열심히 한주를 계획해야하거늘...

ㅋㅋㅋ아직월요일이라니라는 생각이 더 많이 든다는..하핫!!

모두들 파이팅하세요^--^

 

오늘 빅데이터공부하기의 내용은 WritableComparator입니다.

 

WriableComparator

 

SortComparator와 GroupingComparator로 사용되는 디폴트 클래스

 

핵심이 되는 메소드는 두개의 WritableComparable을 인자로 받는 compare

 

public int compare(WritableComparable a, WritableComparable b)

{

return a.compareTo(b)

}

 

 

 

 

Tom White의 "Hadoop Definite Guide"

 

이번 빅데이터공부하기의 주제는 Reducer단의 준비작업입니다. ^^

오늘도 열공!!><

 

 

Reducer 단의 준비작업

 

Mapper 단의 파티션 데이터는 HTTP를 통해 해당 reducer가 읽어간다(이를 shuffle이라 부름)

- mapper와 reducer의 수가 크면 네트웍 bandwidth가 병목이 됨

 

Reducer는 여러 mapper에서 읽어간 데이터들을 키로 소팅하면서 같은 키를 갖는 밸류들끼리는 묶는다(sorting)

- SortComparator, GroupingComparator가 이 작업을 수행

SortComparator는 한 reducer로 모인 레코드들을 키를 바탕으로 정렬하는 역할을 하고 GroupingComparator는 어떤 레코드들을 같은 키 밑으로 묶을지 정한다.

Job클래스의 setFropingComparatorClass와 setSortComparatorClass로 커스텀 클래스로 교체가능

 

- 이 두 클래스를 이용하면 밸류 리스트는 원하는 방식으로 정렬가능 -> "Secondary Sorting"

빅데이터공부하기 62번째글 중에서 3번째시간이네요 ^^

 

이번글은 Mapper의 출력 버퍼링에 대해서 공부하도록하겠습니다.

Mapper의 출력 버퍼링

 

Mapper의 출력은 메모리로 버퍼링됨 (Circular buffer)

- 버퍼 크기는 io.sort.mb라는 파라미터로 결정. 디폴트크기는 100MB.

 

출력 레코드마다 세가지의 정보를 저장

- 파티션 보호, 키, 밸류

 

버퍼는 io.sort.spill.percent로 지정된 퍼센트만큼 차면 디스크로 플러시(이를 spill이라 부름)

- 이는 매번 별도의 파일로 써지며 io.sort.factor로 지정된 수까지 별개의 파일이 존재가능

 

- 파일 수가 io.sort.factor를 넘어가는 순간 디스크기반 merging sorting을 한다(파티션기준)

 

- Combiner가 설정되어 있다면 매번 적용된다.(spill시 그리고 merge시)

 

 

빅데이터공부하기 46-2 Mapper의 출력버퍼링

 

 

지난 빅데이터공부하기에서는 Local Reducer에 대해서 알아보았는데요.

이번 글은 Mapper출력을 어느 Reducer로 하는지 알아보도록하겠습니다.

 

 

mapper 출력의 키를 바탕으로 어느 reducer로 보낼지 결정

- 이 때 사용되는 것이 바로 partitioner !

- 디폴트로 사용되는 것이 HashPartitioner(단순 나머지 연산 !)

- Job 클래스의 setPartitionerClass 메소드로 커스텀 partitioner를 지정가능

 

public class HashPartitioner<K, V> extends Partitioner<K, V>

{

Public int getPartition(K key, V value, int numReduceTasks)

{

return(kev.hashCode() &Integer.MAX..VALUE)%numReduceTasks;

}

}

 

 

 

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

이번에 공부할 빅데이터하둡내용은요...

Local Reducer에 대해서 알아볼께요^^

 

오늘하루도 파이팅!! ^-^

 

Local Reducer

 

mapper의 출력에 적용

- 따라서 mapper와 같은 타입의 출력이 필요

- 대부분 reducer를 그대로 combiner로 사용

 

Reducer로 보내지는 네트웍 통신의 양을 최소화하기 위해 사용

- 작업이 결합법칙과 교환법칙을 만족하는 사용 가능

- WordCount나 Min, Max등이 이에 속함

- Mean은 이에 속하지 않음

 

Combiner는 Job 클래스의 setCombinerClass 메소드를 통해지정

 

 

 

 

 

빅데이터공부하기 45번째의 글을 계속 이어나가고 있죠 ^^

 

이번글은 주요 WritableComparable타입들에 대해서 정리해보았습니다.

함께 보실까요^^

 

 

 

주요 WritableComparable

 

타입 

설명 

 Text

 자바 String의 Wrapper

 IntWritable

 자바 Int의 wrapper

 LongWritable

 자바 Long의 wrapper

 FloatWritable

 자바 Float의 wrapper

 BooleanWritable

 자바 Boolean의 wrapper

 NullWritable

 갑이 없음을 나타내는 singletonwritable

 기타

 org.apache.hadoop.io참고

다음글은 Local Reducer에 대해서 공부할께요 ^^

 

항상 빅데이터 하둡공부하시는문들 파이팅하세요 ><

+ Recent posts