Presentation is loading. Please wait.

Presentation is loading. Please wait.

Hadoop Chapter 2. 맵리듀스 2010301027 김영지.

Similar presentations


Presentation on theme: "Hadoop Chapter 2. 맵리듀스 2010301027 김영지."— Presentation transcript:

1 Hadoop Chapter 2. 맵리듀스 김영지

2 2.1 기상 데이터셋 2.1.1 데이터 포맷 - 국립기후자료센터( 가져온 기상 데이터 사용 예제에서는 에 있는 데이터 사 용. : 이 데이터들은 반구조적이면서도 레코드 지향적이기 때문에 맵리 듀스를 이용한 데이터 분석에 적합하다. (각 행이 하나의 레코드이며 행 단위의 ASCII형식으로 저장되어있다.)

3 2.2 유닉스 도구로 데이터 분석하기 Awk - ‘awk’는 행 기반의 데이터 처리를 위한 유닉스 도구.
#!/usr/bin/env bash for year in all/* do each –ne ‘bashname $year .gz’ “\t” gunzip –c $year | \ awk ‘{ temp = substring($0, 88, 5) + 0; q = substring($0, 93, 1); if(temp != 9999 && q ~ /[01459]/ && temp > max = temp } END { print max }’ done0000 % ./max_temperature.sh

4 2.2 유닉스 도구로 데이터 분석하기 문제점 - 이 방법으로 20세기 전체에 대한 완전한 수행은 하나의 EC2 고성 능 CPU XL 인스턴스에서 42분이 걸림 : 처리 속도를 높이기 위해서는 프로그램의 각 부분을 병렬로 수행할 필요가 있다 > 이러한 이슈를 처리하기 위해 하둡 프레임워크를 사용.

5 2.3 하둡으로 데이터 분석하기 2.3.1 맵과 리듀스 - 맵리듀스는 맵 단계와 리듀스 단계로 처리 과정을 나누어 작업. _ 각 단계는 입력과 출력으로써 키-값 쌍을 가지고 있고 그 타입은 프로그래머가 선택. <기상데이터를 이용한 예제>에서 맵 함수 : 분석대상인 연도와 기온을 추출한다. 리듀스 함수 : 연도별로 최고 기온을 찾아준다.

6 2.3 하둡으로 데이터 분석하기 2.3.2 자바 맵리듀스 최고 기온을 구하는 Mapper예제

7 최고 기온을 구하는 Reducer예제

8 기상청 데이터셋으로부터 최고 기온을 찾는 프로그램

9 2.3 하둡으로 데이터 분석하기 2.3.2 자바 맵리듀스 - 컴파일 # javac –classpath /hadoop-core-x.y.z.jar가 있는 경로/ –d /class파일을 저장할 경로/ /java파일이 있는 경로/ ex)(자바파일이 있는 경로에서) # javac –classpath /usr/hadoop /hadoop-core jar –d classes MaxTemperatureMapper.java

10 2.3 하둡으로 데이터 분석하기 2.3.2 자바 맵리듀스 - jar 생성 # jar cvf 파일이름.jar /jar파일로 압축할 디렉토리/ ex)(jar파일을 저장할 경로에서) # jar cvf MaxTemperature.jar classes

11 2.3 하둡으로 데이터 분석하기 2.3.2 자바 맵리듀스 - 실행 # hadoop jar /jar파일이 있는 경로/파일이름.jar Main문이 있는 클래스명 /입력할 데이터가있는 경로/ /출력할 디렉토리/ ex)(jar파일이 있는 경로에서) # hadoop jar MaxTemperature.jar MaxTemperatureWithCombiner /usr/hadoop /input/sample.txt /usr/hadoop-1.2.1/output/ (이때 output 디렉토리는 존재하지 않아야 함)

12 2.3 하둡으로 데이터 분석하기 2.3.2 자바 맵리듀스 - 확인 # cat /output디렉토리/part-r-00000

13 2.4 분산형으로 확장하기 2.4.1 데이터 흐름 - 맵리듀스 잡은 클라이언트가 수행하려는 작업의 단위 맵리듀스 잡은 입력데이터, 맵리듀스 프로그램, 설정 정보로 구성. _ 하둡은 잡을 맵 태스크와 리듀스 태스크로 나누어 실행.

14 - 잡 실행과정을 제어하기 위해 하나의 잡트래커와 다수의 태스크트래 커가 존재
- 잡 실행과정을 제어하기 위해 하나의 잡트래커와 다수의 태스크트래 커가 존재. 잡트래커는 태스크트래커가 수행할 테스크를 스케쥴링. 태스크트래커는 태스크를 수행하고 각 잡의 전체 경과를 하나 의 레코드로 유지하는 경과 보고서를 잡트래커에게 보냄. 만일 태스크가 실패하면 잡트래커는 그것을 다른 태스크트래커 에게 다시 스케쥴. - 하둡은 맵리듀스의 잡을 스플릿이라고 불리는 고정크기의 조각으로 나눔. 하둡은 각 스플릿마다 맵 태스크를 생성. 그 스플릿에 있는 각 레코드를 사용자 정의 맵 함수로 처리. -> 전체 입력을 통째로 처리하는 시간보다 스플릿을 통해 분할된 조각을 처리하는 시간이 더 짧게 걸리고, 그 스플릿을 병렬로 처리할 경우 비율 적으로 더 많은 스플릿을 처리할 수 있기 때문에 부하 분산에 더 좋은 효 과를 낸다.

15 - 지역성 최소화 : 하둡은 HDFS 내의 입력 데이터가 있는 노드에서 맵 태스크를 실행할 때 가장 잘 작동된다
- 지역성 최소화 : 하둡은 HDFS 내의 입력 데이터가 있는 노드에서 맵 태스크를 실행할 때 가장 잘 작동된다. (클러스터의 중요 자원인 네트워크 대역폭을 사용하지 않기 때문) - 최적의 스플릿 크기 = HDFS 블록 크기. (단일 노드에 저장된다고 확신할 수 있는 가장 큰 입력크기이기 때문) [그림2-3]단일 리듀스 태스크의 맵리듀스 데이터 흐름

16 2.4 분산형으로 확장하기 2.4.2 컴바이너 함수 -컴바이너 함수의 출력이 결국 리듀스 함수의 입력이 된다.
2.4.2 컴바이너 함수 -컴바이너 함수의 출력이 결국 리듀스 함수의 입력이 된다. (맵리듀스 잡은 클러스터 내에서 이용할 수 있는 대역폭이 제한적이 기 때문에 맵과 리듀스 태스크 간의 데이터 전송 최소화 할 필요가 있다.) job.setCombiner(MaxTemperatureReducer.class); 만 추가해주면 된다. -> 컴바이너 함수를 추가하여 수행할 경우 CPU XL 인스턴스를 실 행중인 10개의 노드의 EC 클러스터에서 프로그램이 수행된 시간은 6분이었다.

17 2.5 하둡 스트리밍 2.5.1 루비 2.5.2 파이썬 하둡에서는 자바 외에 다른 언어로 맵과 리듀스 함 수를 작성할 수 있는 맵리듀스 API를 제공한다.

18 2.6 하둡 파이프 하둡 파이프는 하둡 맵리듀스를 위한 C++ 인터페 이스의 이름이다.


Download ppt "Hadoop Chapter 2. 맵리듀스 2010301027 김영지."

Similar presentations


Ads by Google