빅데이터공부하기 44-1 입력포맷클래스..

명절 다들 잘 보내셨나요??^^

쉬는날은 빨리지나가죠...

오늘도 빅데이터 공부를 모두 파이팅하면서 시작합시다!!

 

이건 복싑이죠 ><

KeyValueTextInputFormat

 

- TextInputFormat과 흡사

 

- 텍스트라인에서 키와 밸류가 tab문자를 사이에 두고 나뉘었다고 가정.

키와 밸류는 모두 Text타입

 

- tab이외의 다른 문자를 delimiter로 사용시

Configuration의 "key.value.separator.in.input.line"프로퍼티를 해당

문자로 설정

 

 

 

 

 

 

SequenceFileInputFormat

 

- SequenceFile포맷의 파일을 읽어들일때 사용하는 포맷

SequenceFile : 하둡 고유의 바이내리 키/ 밸류기반 압축지원 파일포맷.

키와 밸류는 어떤 타입이건 가능

 

특히 여러 하둡잡들을 체인닝하여 작업을 할때 굉장히유용(퍼포먼스 측면)

 

- 퍼포먼스를 고려하면 반드시 사용해야할 입력포맷

 

 

기타 입력파일 지정방법

 

- MultipleInputs.addInputPath

간혹 입력파일들에 따라 다른 mapper를 지정하면 일이 단순해지는 경우가 존재

 

입력파일에 따라 다른 입력포맷과 mapper를 지정가능

 

 

빅데이터공부하기 44 입력포맷 클래스들

 

이번빅데이터하둡 공부도 우리 다같이 파이팅합시다 ^^

 

TextInputFormat

 

디폴트 입력포맷클래스는 textInputFormat

- FileInputFormat에서 계승됨

-텍스트파일 대상이며 .gz로 압축된 것도 처리

- 라인 하나 (\n,\r)가 하나의 입력레코드

- 키: 라인의 파일 오프셋. LongWritable 타입

- 밸류: 라인전체 스트링. Text타입

 

입력포맷클래스의 변경은 Job클래스의 setInputFormatClass로 지정

 

 

KeyValueTextInputformat

 

TextInputFormat과 흡사

 

텍스트라인에서 키와 밸류가 tab 문자를 사이에 두고 나뉘었다고 가정. 키와 밸류는 모두 Text 타입

 

tab이외의 다른 문자를 deliniter로 사용시

- Configuration의 "key.value.separator.in.input.line" 프로퍼티를 해당 문자로 설정

 

 

 

 

 

 

빅데이터 공부하기!!

오늘은 Mapper갯수의 결정방식에 대해서 알아볼게요^^

 

Mapper갯수의 결정방식

MapReduce라이브러리부터는 Mapper의 갯수를 MapReduce프레임웍이 결정

- setNumMapTasks메소드는 이제 no-op

 

 

고려대상은 입력파일의 수와 크기, 입력파일포맷, HDFS의 블록크기등의 다양한 변수들

- 가장 중요한 것은 입력파일포맷

 

- 입력파일들은 결국 Input Split이란 블록(가능하면 HDFS블록의 크기만큼)으로 나눠지며 각 Input Split마다 mapper가 하나씩 할당

 

- 즉 Input Split의 수 == mapper의 수

 

 

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

이번글은 Mapper 입력과 출력에대해서 공부하겠습니다.

 

Mapper 입력지정

 

다음 두 메소드에 의해 결정

- Job 클래스의 setlnputFormatClass(입력포맷)

- FileInputFormat클래스의 addInputPath 혹은 addInputPaths(입력파일위치)

 

setInputFormatClass로 지정된 클래스가 addInputPath로 지정된 입력파일들을 어떻게 읽어들일지 결정한다.

 

addInputPath나 addInputPaths 모두 여러번 호출가능하며 디렉토리를 지정할 경우 디렉토리 아래 모든 파일들이 입력파일이 된다.

 

Mapper 출력타입

만일 mapper의 출력차입이 reduecer의 출력타입과 다른 경우에는 Job 클래스의 다음 두 메소드 호출필요

setMapOutputKeyClass

setMapOutputValueClass

 

 

 

 

 

 

빅데이터공부하기 추석전날까지도 우린 열심히

빅데이터를 공부합시다. 그리고 추석때 가족들과

즐거운 시간을 보내세요 ^^

 

이번글은 Identity Mapper에 대해서 배울거에요..

 

Identity Mapper

 

모든 mapper의 선조가 되는 Mapper 클래스가 바로 Identity Mapper

 

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

 

protected void map(KEYIN key, VALUEIN value, Context context) throws IOExecption, InterruptedExecption {

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

}

 

예) 이미 키가 존재하는 입력파일들을 같은 키를 갖는 레코드들끼리 모아서 처리해야할 경우 사용가능. 즉 reducer만 필요.

- job.setMapperClass(Mapper.class)

 

 

 

빅데이터공부하기 계속계속 달리는중~~~~

이번에 공부할 내용은 Mapper Internals입니다.

 

 

Mapper 클래스의 메소드들

 

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

public void setup(Mapper.Context context)

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

 

public void cleanup(Mapper.Conntext context)

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

 

public void run(Mapper.Context context)

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

 

 

 

public void run(Context context)throws IOExeption, InterruptedException

{

setup(context);

while(context.netKeyValue())

{

map(context.getCurrentkey(), context getCurrentValue(), context);

}

cleanup(context);

}

 

 

 

 

빅데이터공부는 아직..끝나지않았다.. ㅋㅋㅋ

모두 파이팅하세용 ^^

 

빅데이터공부하기 이번주제는 소스컴파일을 실행해보고

결과확인을 해보려합니다.

며칠뒤면.. 추석이에요 ^^ 추석을바라보며~~ 오늘도 파이팅><

 

컴파일

 

컴파일은 메이븐을 이용

- sudo apt-get install maven2

 

작업 디렉토리를 만든 후 WordCount 프로젝트 파일 다운로드 (chapter4 디렉토리)하고 untar

 

프로젝트 루트 디렉토리에서 컴파일하고 jar 파일 생성(이 작업시 인터넷이 연결되어있어야함)

- mvn compile

- mvn install

*target이란 디렉토리 밑에 jar 파일 생성.

 

실행

 

앞서 하둡설치후 실행한 예제프로그램의 실행방법과 거의 흡사

 

bin/hadoop jar[생성된 Jar 파일위치] WordCount/input/README.txt/output/wordcount2

 

 

실행결과확인

 

앞 세션에서 한것과 마찬가지로 hdfs의 결과디렉토리 확인해보고 JobTracker 웹인터페이스로도 확인

 

참고로 MapReduce의 결과는 파트파일이란 것으로 만들어져 결과 디렉토리에

 존재

- "part-r-"이란 이름으로 시작하며 다섯자리의 일련번호가 붙음

(00000부터 시작)

 

 

 

 

 

빅데이터공부는 오라클자바 it공부하자 티스토리에서!!><

 

지난글에 이어서 이번 빅데이터공부하기도

Reducer 클래스에 대해서 공부하겠습니다.

이번엔 코딩하고 설명을 보도록 하겟습니다. ^-^

 

빅데이터공부는 --> 오라클자바교육센터에서 듣고가세요.

 

Reducer 클래스

 

public static class Reduce extends Reducer<Text, LongWritable, Text, LongWritable>

{

private LongWritable sumWritable= new Long Writable();

 

public void reduce(Text key, lterable<LongWritable>nalues, Context context)

throws IOException

{

long sum=0;

for (LongWritable val : values)

{

sum+=val.get();

}

sumWritable.set(sum);

context.write(key,sumWritable);

}

}

 

1. 입력레코드의 키, 밸류 타입은 mapper에서 사용한 키, 밸류타입에 의해 결정

 

2. reduce 메소드에서 사용할 변수를 미리 하나 만들어둔다.

 

3. reduce 메소드로 넘어오는 밸류 필드는 리스트타입이며 mapper 단에서 같은 키값을 갖는 밸류들이 리스트형태로 묶여진 것이다. 리스트내의 원소들의 값을 합한 다음 (결국 주어진 단어가 나타난 회수를 카운트하는 셈) 단어를 키로 지정하고 합을 밸류로 지정하여 프레임으로 넘긴다. 이 출력레코드는 지정된 출력포맷에 맞춰 앞서 지정된 HDFS위치에 저장된다(Job 클래스의 setOutputPath 메소드)

 

 

 

 

+ Recent posts