월요일이에요 !!!

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

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

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

 

오늘 빅데이터공부하기의 내용은 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 밸류타입과 키 타입

 

 

오 이제 빅데이터공부하기 45번째글이 왔네요 ..^^

이번글의 주제는 MapReduce에서 사용되는 타입들에 대해서 공부를 할거에요^^

 

 

전에 MapReduce에 대해서 공부한것이 기억나시나요?!!

안나시는 분들을 위해!!

 

 

전에 공부했던 내용이에요!!

앞으로 MapReduce에서 사용되는 타입에 대해서 공부할 것이기때문에

모르시는 분들은 아래를 클릭해서 참고하시면 될것 같아요 !

 

다음 글부터 본격적으로 시작할거구요..

오늘은 이글을 배우기 전 내용들을 복습하는 시간을 가져보려고 글을 올렸어요^^

항상 IT공부하자 티스토리로 공부하시는 분들~~

많은 것을 얻어가셨으면 합니다. ^^

 

+ Recent posts