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

이번에 공부할 내용은 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 메소드)

 

 

 

 

이번글은 Reducer 클랙스 공부입니다.

오늘도 빅데이터공부로 열심히열심히 글을 올리겠습니다. ^-^

하핫 !!! 빅데이터공부하시는 분들 퐈이팅!!

 

Reducer 클래스

 

org.apache.hadoop.mapreduce.Reducer로부터 계승

 

extends Reducer<K1, V1, K2, V2>

처음 2개는 입력레코드의 키, 밸류의 타입 (K1, V1)

- mapper 출력레코드의 키, 밸류의 타입과 일치

 

다음 2개는 출력레코드의 키, 밸류의 타입(K2, V2)

이 타입들은 main함수에서 Job클래스의 setOutputKeyClass setOutputValueClass로 지정한 타임과 일치해야함.

 

Job 클래스의 setReducerClass로 지정(프레임웍에 알린다)

 

코어는 바로 Reducer의 reduce메소드

-벨류는 V2타입의 리스트이며 이를 *개의 출력레코드로 변환

- 출력레코드를 프레임웍으로 내보내는데 Context 클래스의 srite메소드를 사용

- 출력레코드가 어떻게 저장되느냐는 main함수에서 호출한 Job클래스의 setOutputFormatClass 메소드에서 지정한 출력차입에 의해 결정

 

 

 

빅데이터공부하기 40번째글입니다.

벌써!!! 많이 공부했죠 우리 ^---^

 

이번공부의 주제는 mapper 클래스입니다.

오늘도 열심히 빅데이터를 공부해볼까용?!!

GoGo ~~!!

 

Mapper 클래스

 

org.apache.hadoop.mapreduce.Mapper로 부터 계승

 

extends Mapper<K1, V1, K2, V2>

처음 2개는 입력레코드의 키, 밸류의 타입 (K1, V1)

다음 2개는 출력레코드의 키, 밸류의 타입 (K2, V2)

- reducer입력레코드의 키, 밸류의 타입과 일치

 

Job 클래스의 setMapperClass로 지정 (프레임웍에 알린다)

 

코어는 바로 Mapper의 map 메소드

- 주어진 입력레코드를 *개의 출력레코드로 변환

- 출력레코드를 프레임웍으로 내보내는데 Context클래스의 write메소드를 사용

 


Public static class Map extends Mapper<Long Writable, Text, Text, LongWritable>

private final static LongWritable one = new LongWritable(1);

private text word= new Text();

 

public voidmap(LongWritable key, Text value, Context context)

throws IOException, InterruptedException

{

String line = value.toString();

String Tokenize tokenizer = new String Tokenizer(line, "trnf,.\"");

while(tokenizer.hasMoreTokens());

context.write(word, one);

}


1. 입력레코드의 키, 밸류 타입은 인풋포뱃이 결정하며 앞서 main에서 보면 TextlnputFormat을 사용. LongWritable.Text등은 자바의 Long과 String 타입의 하둡용랩퍼.

 

2. 출력레코드의 키, 밸류 타입은 Text, LongWritable인데 이건 프레임웍에 의해 소팅, 셔플링이 된다음에 reducer로 넘어간다

 

3. map 메소드내에서 사용할 변수를 두개 미리 만들어둔다.

 

4. map 메소드는 밸류로 넘어온 텍스트 파일의 라인을 StringTokenizer클래스를 이용해 파싱한 다음 각 단어들을 하나씩 프레임웍으로 넘긴다 (키는 단어, 밸류는 1)

 

 

 

 

 

이번 빅데이터공부하기 39번째글은 MAIN함수코드 설명입니다.

 

먼저 Main 함수부터 공부해보겠습니다. ^^

 

main 함수

 

Configuration과 Job 인스턴스 생성

 

두 인스턴스를 이용해서 수행하려는 잡의 환경설정

- mapper, rduecer 클래스지정

- 입렵/출력포맷 지정

- 입력파일위치, 출력디렉토리 지정

둘다 HDFS(혹은 AWS의 S3도 가능)

 

여러개 잡들의 chaining도 가능

 


public static void main(String[] args) throws Exception

{

Configuration conf = new Configuration();

Job job = new Job(conf, "wordcount");

 

 

job.setJarByClass(WordCount.class);

job.setMapperClass(Map.class);

job.setReducerClass(Reduce.class);

 

 

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(LongWritable.class);

 

job.setInputFormatClass(Text.class);

job.setOutputFormatClass(TextOutputFormat.class);

 

 

 

FileInoutFormat.addlnputPath(job, new Path(args[0]));

FileOutputFormat.setOutputPath(job, new Path(args[1]));

 

 

job.watiForCompletion(true);

}

 

여!기!까!지

다음 빅데이터 글에서 또만나요 ^^

벌써 8월이... 3일밖에 안남았어요 !!

시간은 왕왕빠름

시간은 우리를 기다려주지를 않죠 ㅠㅠ

 

이번글은 MAPREDUCE 프로그램의 기본 골격에 대해서 공부하겠습니다.

 

mapred vs. mapreduce

 

두 종류의 MapReduce 라이브러리

* org.apache.hadoop.mapred(옛날버전)

* org.apache.hadoop.mapreduce(새버전)

 

mapreduce가 새로 제공되는 라이브러리이고 mapred는 점진적으로 phase out

이후 모든 예제에서 mapreduce를 사용

 

MapReduce 템플릿 (1)

 

import org.apache.hadoop.mapreduce.*;

 

public static class Reduce extends Reducer<K2, V2, K3, V3>

{

K3 k3 = new K3();

V3 v3 = new V3();

public void reduce(K2 key, lterable<V2> values, Context contes)

{

....

context.write(k3, v3)

}

}

 

 

 

MapReduce 템플릿 (2)

 

public static void main(String[] args) throws Exception

{

Configuration conf=new Conflguration();

Job job = new Job(conf, "wordcount")

// job 인스턴스를 갖고 각종 초기화 작업

...

// 최종적으로 실행 !

job.waitForCompletion(true);

}

 

 

 다음글에서 또만나요~~ ^^

빅데이터공부하기 !!!

WordCount에 대해서 공부할거에요 ^^

37번라인글도 퐈이팅!!

 

 

WordCount 프로그램

 

 가장 기본이 되는 프로그램입니다.

* 하둡 프로그래밍의 Hello World

 

입력으로 주어진 파일에서 단어들별로 빈도수를 카운트

* 단순 tokenization을 하기 때문에 CJK에는 제대로 동작하지 않음

 

WordCount 의사코드

 

Map(key, value)

- value : a line of text

- workflow

* tokenize value

* For each token

emit(token, 1)

 

Reduce(key, list(values))

- key : a word

- values: a list of count (1)

- workflow

* lterate values and sum them up

* emit (key, sum)

 

빅데이터공부하기 37

WordCount 프로그램

+ Recent posts