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

오늘의 내용은 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에 대해서 공부할께요 ^^

 

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

이번 빅데이터공부하기 45에서는 MapReduce에서 사용되는

타입들에 대해서 보기로 했죠!

밸류타입과 키타입에 대해서 공부하겠습니다.

 

 

밸류 타입

 

MapReduce에서 밸류로 사용되는 타입은 반드시 Writable인터페이스를 지원

 

이는 하둡노드들간의 RPC시 파라미터나 리턴밸류 부분의 serialization과 deserialization을 위함

 

Writable에는 두 개의 메소드가 존재

- void write(DataOutput out)

- void readFields(DataInput in)

 

 

키 타입

 

MapReduce에서 키로 사용되는 타입은 WritableComparable인터페이스를 지원.

 

public interface WritableComparable<T> extends Writable, Comparable<T>

 

이는 하둡노드들간의 RPC시 밸류 부분의 serialization과 deserialization과 셔플링/소팅시 키 값의 비교를 위함

 

WritableComparable에는 Writable 이너페이스 이외에 Java의 Comparable 인터페이스를 지원

- void write(DataOutput out)

- void readFields(DataInput in)

- int compareTo(T o)

 

 

 

빅데이터공부하기 45-1 밸류타입과 키 타입

 

 

+ Recent posts