Download presentation
Presentation is loading. Please wait.
2
DataScience Lab. 박사과정 김희찬 2017-02-23 (목)
Big Data Analytics Short Courses Hadoop과 MapReduce DataScience Lab. 박사과정 김희찬 (목)
3
하둡이란? 소개 왜 사용하는가? 신뢰가능하고 확장성이 높은 분산처리 컴퓨팅을 위한 자바 기반 오픈소스 소프트웨어
신뢰가능하고 확장성이 높은 분산처리 컴퓨팅을 위한 자바 기반 오픈소스 소프트웨어 2005년에 더그 커팅(Doug Cutting)이 구글이 논문으로 발표한 GFS(Google File System)와 맵리듀스(MapReduce)를 구현한 결과물 왜 사용하는가? 많은 CPU/디스크를 한번에 관리 필요 (Scalable) 가끔 디스크가 망가지더라도 데이터 유지 필요 (Reliable) 몇몇 디스크가 망가지거나 기타 다른 에러가 발생해도 전체 작업은 문제없이 구동되어야함 (Fault-tolerant) 여러 컴퓨터 끼리 데이터를 주고 받기가 간편 (Simple)
4
하둡이란? 분산 처리란? 분산 처리 시스템에서 중요한 것은 크게 두 가지
여러 대의 컴퓨터를 이용하여 어떠한 목적을 달성하기 위한 프로그램을 구동하는 것 컴퓨터 한 대만으로는 부족한 큰 연산량이나 데이터를 처리하기 위함 분산 처리 시스템에서 중요한 것은 크게 두 가지 분산 저장 여러 컴퓨터에 있는 디스크를 하나의 디스크인 것처럼 쓰는 것 분산 처리 여러 컴퓨터의 CPU를 하나의 작업을 위해 적절히 일을 분담하는 것
5
하둡이란? 작업 처리 개요 1) 데이터를 쪼개서 처리한 후 2) 일정 기준으로 다시 묶은 다음에 재처리 후 결과 출력
6
HDFS의 이해 HDFS란? Hadoop 에서 데이터 분산 저장을 위해 고안한 저장 방법
파일을 여러 군데에 나누어 저장해두고 각 파일이 어디있는지 주소를 중심의 컴퓨터가 기억하고 있는 방법 한 디스크가 망가져도 데이터를 잃지 않기 위해 같은 데이터를 다른 곳에도 복제해둠 Namenode 데이터가 어디에 저장되어있는지에 대한 정보를 가진 컴퓨터 Datanode 실제로 데이터를 저장하고 있는 컴퓨터
7
HDFS의 이해 HDFS와 Local Disk의 구분 OS가 깔려있는 Disk와 HDFS는 논리적으로 분리되어있음
HDFS 전체는 여러 대의 컴퓨터의 Disk의 일부를 이용 즉 HDFS는 가상의 하나의 큰 Disk가 됨 그래서 각 PC에서는 HDFS의 파일 내용을 정상적으로 확인할 수 없음 HDFS에 데이터를 ‘업로드’하는 이유 본인의 컴퓨터에서 데이터를 이 가상의 Disk로 데이터를 올려야 Hadoop이 해당 데이터를 인식할 수 있기 때문에 이후의 작업이 가능함
8
MapReduce Framework Job MapReduce Framework를 이용하여 데이터를 처리하는 작업 단위
작업이 각 컴퓨터에서 잘 진행되는지를 확인하는 기능이 존재 JobTracker 각 컴퓨터가 무슨 일을 하고 있는지 확인함 TackTracker에 무슨 문제가 생기면 해당 컴퓨터에 시켰던 일을 비교적 여유로운 다른 TaskTracker에 일을 시킴 TaskTracker Datanode와 비슷하게 실제로 작업을 진행하는 컴퓨터가 JobTracker로 주기적으로 작업 결과를 보냄
9
MapReduce Framework MapReduce란? Map Reduce
1) 데이터를 쪼개서 처리한 후 모든 데이터에 대하여 특정한 작업을 수행 Key, Value 쌍으로 데이터를 출력함 R의 apply()와 같은 역할 Reduce 2) 일정 기준으로 다시 묶은 다음에 재처리 후 결과 출력 Map에서 처리한 데이터를 같은 Key를 가지는 데이터를 모아서 처리함
10
MapReduce Framework 주요 과정 개요 input split0 split1 split2 split3
11
MapReduce Framework MapReduce HDFS 주요 과정 개요 Namenode위치 등록 replication
JVM IPC/RPC MapReduce HDFS input splits 계산, map/reduce task 배정 Namenode위치 등록 replication Local File MR Job map reduce map reduce Client tasktracker jobtracker Client datanode namenode Node 1 Node 2 Node 3 Node 4 Node 5 Node 6
12
MapReduce Framework 우리가 해야할 일 구현은 어떻게? Wordcount 예제로 한단계씩!
나머지는 신경쓰지 않아도 될 부분 구현은 어떻게? 자바 메소드로 Map과 Reduce를 구현 Wordcount 예제로 한단계씩!
13
WordCount ver. MR WordCount를 MapReduce로 변경 Map에서는? Reduce에서는?
띄어쓰기 기준으로 단어를 나누자, Key는 단어가 됨 그러면 Value는? 단어가 등장할 때마다 1을 넣어준 후 정렬된 이후에 다 더하면 되지 않을까? Reduce에서는? Key 별로 데이터가 묶여서 들어오니까 같이 넘어온 값을 전부 더한 후에 출력하면?
14
WordCount ver. MR Hadoop에서의 MapReduce 코딩 방법 실행할 클래스의 전체 구조
실행할 클래스 내에서만 사용할 것이라고 정의되었기 때문에 멤버 변수와 같이 멤버 클래스를 만듦 < > 안의 내용은 무엇인지? 붉은 색 입력의 Key 와 Value의 형태 푸른 색 출력의 Key 와 Value의 형태 Hashtable을 떠올려보자!
15
WordCount ver. MR Hadoop에서의 MapReduce 코딩 방법 실행할 클래스이므로 main 메소드가 필요함
하둡에서의 작업 단위는 Job 이기 때문에 Job에 대한 설정이 필요 job의 이름 설정 job 실행 시 사용할 클래스 job의 Mapper에서 출력 Key 클래스 job의 Mapper에서 출력 Value 클래스 job에서 Map에서 사용할 클래스 job에서 Reduce에서 사용할 클래스 job의 입력 형태 job의 출력 형태 job의 입력 경로 job의 출력 경로 job을 하둡 클러스터에 전송한 후 해당 Job이 종료될 때까지 대기
16
WordCount ver. MR Hadoop에서의 MapReduce 코딩 방법
Map 클래스의 멤버 변수로 map 메소드가 필요 입출력 형태에 주의
17
WordCount ver. MR Hadoop에서의 MapReduce 코딩 방법
Reduce 클래스의 멤버 변수로 reduce 메소드가 필요 입출력 형태에 주의 shuffle은 필요 없나? 하둡에서 자동적으로 해준다!
18
리눅스 환경 적응하기 직접 네임 노드에 접속하기에 앞서 설치된 OS 파일의 저장 계층 구조가 윈도우와는 상이
리눅스 중 우분투 배포판 파일의 저장 계층 구조가 윈도우와는 상이 C:\, D:\와 같이 드라이브 개념이 없음 최상위 폴더가 C:\가 아니라 ‘/’ 라는 곳, ‘루트’라고 부름 멀티 유저를 상정 -> 다른 유저의 폴더나 관리자 폴더에 접속 불가능 기본 유저의 폴더는 /home/[계정이름]
19
리눅스 환경 적응하기 직접 네임 노드에 접속하기에 앞서 실행 파일 주로 쓸 리눅스 명령어
윈도우와 다르게 exe파일이 아니고 바이너리(binary AKA bin)임 확장자가 따로 없는 경우도 많음 [실행파일] [옵션(실행 파일에 따라 여러 개 가능)] hadoop fs –ls / 주로 쓸 리눅스 명령어 cd [To] Change directory / 현재 디렉토리를 변경 ls [directory] list / 현재 디렉토리의 내용을 보여줌 cat [target] catenate / 지정된 파일의 내용을 보여줌
20
리눅스 환경 적응하기 직접 네임 노드에 접속하는 방법 Xshell 프로그램 접속
SSH(Secure SHell)를 사용할 수 있는 클라이언트 프로그램 SSH는 네트워크 상의 다른 컴퓨터에 접속하거나 원격에서 명령을 전송하거나 파일을 복사할 수 있는 프로토콜 FTP는 데이터 패킷을 중간에 가로챌 경우 사용자의 계정과 비밀번호를 알아낼 수 있음 SFTP는 SSH를 이용한 파일 전송 프로토콜 (안심하고 사용 ㄱㄱ) 개인/학교는 무료 접속 IP : , port : 22 계정 : stat, 비번 : stat513
21
리눅스 환경 적응하기 직접 네임 노드에 접속하는 방법 Xshell 프로그램
22
HDFS로 파일 입출력 테스트할 파일을 업로드! 주의사항! 다음 명령어 입력
같은 계정으로 같은 컴퓨터에 접속해있는 것이기 때문에 명령을 잘못 날릴 경우 다른 사람에게도 영향을 미치므로 데이터는 개인 폴더에 업로드 다음 명령어 입력 mkdir bigCourse/[학번] 개인 폴더 생성 cd bigCourse /[학번] 본인 개인 디렉토리로 이동 hadoop fs –ls / HDFS에서 루트에 저장된 내용을 보여줌 hadoop mkdir /bigCourse/[학번] /bigCourse/[학번] 디렉토리를 생성 hadoop fs –copyFromLocal ~/bigCourse/alice.txt /bigCourse/[학번] 테스트용 파일은 ‘이상한 나라의 앨리스’ 챕터 1임 hadoop fs –ls /bigCourse/[학번]/ 업로드된 파일을 확인
23
HDFS로 파일 입출력 파일 다운로드 HDFS의 파일 삭제 이후 실습을 위한 파일 재 업로드 다음 명령어 입력
hadoop fs –copyToLocal /bigCourse/[학번]/alice.txt ~/bigCourse/[학번] 업로드 하였던 파일을 내 디렉토리에 다운로드 cat alice.txt 파일 확인! HDFS의 파일 삭제 hadoop fs –rm /bigCourse/[학번]/alice.txt 이후 실습을 위한 파일 재 업로드 hadoop fs –copyFromLocal ~/users/alice.txt /bigCourse/[학번]
24
WordCount 돌려보기 하둡 클러스터로 전송하기 위하여 라이브러리로 생성 하둡 클러스터로 전송 하둡에서 실행
export -> Java -> jar 로… 하둡 클러스터로 전송 Xshell을 이용하여 전송 ~/bigCourse/[학번] 폴더로 전송 하둡에서 실행 다음 명령어를 실행 hadoop jar WordCountMR.jar WordCountMR /bigCourse/[학번]/alice.txt /bigCourse/[학번]/output 이때 /bigCourse/[학번]/output 디렉토리는 없어야함 있다면 삭제하자 alice.txt파일이 없다면 새로 업로드하자
25
WordCount 돌려보기 결과 확인을 위하여 하둡에서 결과 파일 내려받기 결과 파일 열어보기
hadoop fs –copyToLocal /bigCourse/[학번]/output . 결과 파일 열어보기 Reduce의 결과는 그 개수에 따라 따로 저장함 part-r-00000 cat part-r-00000
26
Appendix Xshell Hadoop libraries
Hadoop libraries
27
THANKS
Similar presentations