반응형
20-03-09 월
mapreduce의 기본동작은 분류와 집계하기. - 빈도수체크
< 하둡 커스터마이징 >
- csv파일 hdfs에 옮겨놓기.
- 컴바이너는 mini reducer
- 합을 구하는 작업에서는 컴바이너쓴거랑 안쓴거랑 차이가 많이 난다. 아래는 컴바이너 쓴 것들. 기존에 비해서 데이터가 엄청 줄었음.
- 컴바이너 클래스
셔플(shuffle)할 데이터의 크기를 줄이는 데 도움을 준다. => 성능 UP !
- 파티셔너 클래스
- mapreduce 동작 순서 : mapper - combiner - partitioner(맵에서 가져온 거를 같은 키를 기준으로 정렬) - reducer
- combiner와 partitioner가 셔플 단계임
- Partitioner를 사용자 정의로 커스터마이징 하겠다.
- 정렬이 될 수 있게 클래스를 변경하는 작업 수행
- Key를 커스텀하여 CustomKey를 생성
- 리듀서로 넘겨줄 때 같은 키를 기준으로 처리한다. 그 기준은 사용자정의 커스터마이징 하는것.(문자열을 기준으로 비교)
- 정렬을 위한 rownum 활용
- 가상의 테이블 만들기 - subquery를 from절에서 활용하기( 페이징 처리도 가능)
select rownum, ename, sal
from (select *
from emp
order by sal desc) sorttable
where rownum <=3;
1. 정렬
1) 보조정렬
정렬하려고 하는 기준을 정의한 사용자 키 클래스를 작성
=> 복합키
Mapper 클래스의 map메소드에서 사용자 키가 outputkey로 출려고딜 수 있도록 정의
Reduce태스크에 분배할 수 있는 partitioner를 정의
=> 같은 키를 갖고 있는 Mapper의 출력데이터를 같은 리듀스태스크로 보내기 위해서 해시코드를 이용해서 계산
Reduce태스크로 보내기 전에 같은 그룹으로 그룹핑을 할 수 있도록 객체를 정의.
=> 그룹키비교기
=> ex) air데이터에서 같은 년도별로 데이터를 분류
4번에서 같은 그룹으로 정의한 데이터 내부에서 두 번째 기준을 적용해서 비교할 수 있도록 객체를 정의
=> 1번에서 정의한 복합키의 기준으로 데이터를 정렬하기 위한 객체
=> 복합키비교기
2. 조인
20-03-11 수
Hadoop FireFox
- hadoop01:50030 : 네임노드 페이지 (파일탐색기)
- hadoop01:50070 : 잡트래커 페이지 (map, reduce 확인)
inputdata.txt 넣고 출력해보기
package mapreduce.basic; public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{ IntWritable resultVal = new IntWritable(); Text appenddata = new Text(); String data = ""; Text resultKey = new Text(); @Override protected void reduce(Text key, Iterable<IntWritable> values, Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException { int sum = 0; data = data + "reduce호출"; appenddata.set(data); for (IntWritable value:values) { sum += value.get(); } resultVal.set(sum); resultKey.set(key+":"+appenddata); context.write(resultKey, resultVal); } }
=> 전달되는 key 갯수만큼 reduce 메소드가 실행됨
- 커스터마이징이랑 그냥 동작하는 거랑 다르다.
반응형
'IT > [ Bigdata ]' 카테고리의 다른 글
[ Bigdata ] 05. R과 크롤링(Crawling) (0) | 2020.08.10 |
---|---|
[ Bigdata ] 04. MongoDB (0) | 2020.08.10 |
[ Bigdata ] 03. Sqoop과 Flume설치 후 Hadoop에 WAS 구축하기 (0) | 2020.08.10 |
[ Bigdata ] 01. 하둡의 HDFS와 MapReduce (0) | 2020.08.10 |
[ Bigdata ] 00. 빅데이터 플랫폼 구축(CentOS & Hadoop) (0) | 2020.08.10 |