빅데이터공부하기 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공부하자 티스토리로 공부하시는 분들~~

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

 

빅데이터공부하기  44-3 번째글입니다.

시간이 너무나도 빨리 지나가네요 ㅠㅠ

벌써 금요일이라니!!!

뚜등.... ㅠㅠ

하루하루 알차게 보내시길 바랍니다.><

 

빅데이터 공부하기 44-번째의 주제는 TextInputFormat 소스입니다.

시작해볼께요 ^^

 

 

 

 

TextInputFormat소스

 

./src/mapred/org/apache/hadoop/mapreduce/lib/input/TextInputFormat.java

 

 

public class TextInputFormat cxtends FileInputFormat<LingWritable, Text>

{

@ Override

public RecordReader<LongWritable, Text>

createRecordReader(InputSplit split, TaskAttemptContext context)

{

return new LineRecordReader();

}

 

 

 

@ Override

protected boolean isSplitable(JobContext context, Path file)

{

CompressionCodec codec= new

CompressionCodecFactory(context.getConfiguration()).getCodec(file);

return codec == null;

}

}

 

 

빅데이터공부하기 입력포맷의 역활에 대해 알아볼께요 ^^

 

입력포맷은 크게 두 가지 역할을 담당합니다.

 

1. 입력파일(들)을 InputSplit들로 나누기

보통HDFS블록 사이즈로 파일을 나누지만 몇가지 다른 변수들이 존재

 

getSplits 메소드로 입력파일들을 몇개의 InputSplit으로 나눌지를 리턴한다.

 

만일 입력포맷이 어떤 파일을 잘게 나누는 방법을 제공하지 않는다면 isSplitable 호출시 false를 리턴한다.

 

 

2. 한 InputSplit내의 레코드들을 읽는 방법을 제공한다.

 

이는 입력포맷에서 제공해주는 RecordReader를 통해 이뤄지는데 createRecordReader메소드를 통해서 제공된다.

 

 

MapReduce 프레임웍은 Job 시작시 지정된 입력포맷을 통해 위의 두정보를 얻어갑니다.

 

 

 

 

빅데이터공부하기 44-2 입력포맷의 역할

+ Recent posts