본문 바로가기
  • 개발 삽질 블로그
데이터/데이터 엔지니어링

하둡 Hadoop MapReduce

by 갹둥 2023. 5. 16.


MapReduce?

  • 하둡 데이터 처리 프레임워크
  • 대용량 데이터를 분산 처리
  • Map과 Reduce라는 함수 기반으로 주로 구성
  • 데이터를 특정 크기의 블록으로 나누고 각 블록에 대해 Map Task와 Reduce Task를 수행
  • mapper->reducer   
  • <key, value> dataset의 변환으로 진행




Mapper

-처리한 데이터를 <key, value> 로 묶어줌

-output: <key, value>

public static class Map extends Mapper<T, T, T, T>{
map output key type, map output value type>{
	public void map(T key, T value, Context context) {
        //map 함수 정의
	}
}

<T, T, T, T> : <input key, input value, output key, output value> 각각의 타입 지정

 


Shuffle

hadoop이 같은 key를 갖고 있는 data들을 모아 list로 만들어줌

 

 

Reducer

-같은 key 값을 같는 data list 처리 및 원하는 데이터 추출
-input: <key, [value]>        output: <key, value>

public static class Reduce extends Reducer <T, T, T, T>{
	public void reduce(T key, Iterable<T> values, Context context) {
        //reduce 함수 정의
	}
}

<T, T, T, T> : <Input key, Input value, Output key, Output value>

*Reducer의 Input key type는 Mapper의 Output key type와 같음

*Reducer의 Input value type는 Mapper의 Output value type와 같음

 


Hadoop의 기본 타입

Text toString() ->String
IntWritable get() -> 각 타입
LongWritable
FloatWritable
BooleanWritable
ArrayWritable
NullWritable

ex)

String str = "String Type";
Text txt = new Text(str); //Text type 객체 생성
//txt.set(str)로 세팅할 수도 있음

System.out.println(txt.toString()); //String 반환
IntWritable one = new IntWritable();
one.set(1);
int val = one.get();

 

'데이터 > 데이터 엔지니어링' 카테고리의 다른 글

하둡(Hadoop)  (0) 2023.05.11