hadoop overview

48
Hadoop Overview Cecil ([email protected] ) 131021월요일

Upload: hyeonseok-choi

Post on 20-May-2015

2.250 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Hadoop overview

Hadoop Overview

Cecil([email protected])

13년 10월 21일 월요일

Page 2: Hadoop overview

PIG

이런것들이 대체 무엇이냐?

13년 10월 21일 월요일

Page 3: Hadoop overview

What is Big Data?

13년 10월 21일 월요일

Page 4: Hadoop overview

데이터의 규모에 맞춘 단순한 정의

기존 데이터 관리 도구로는 감당할 수 없을 정도 규모의 데이터

13년 10월 21일 월요일

Page 5: Hadoop overview

TDWI에서 정의한 BIG Data의 3대요소

• Volume✓ 수십 TB or 수십 PB 이상✓ 기존의 솔루션으로 처리하기 힘든 정도의 크기

• Velocity✓ 대용량의 데이터에 대해 서비스의 요구사항에 맞게 실시간/배치 처리 가능

• Variety✓ 정형, 반정형 뿐만 아니라 비정형 데이터를 핸들링

이 중 2가지 이상을 만족하면 Big data

이미지 출처: What is Big Data?, Datameer, <http://www.datameer.com/product/big-data.html>

13년 10월 21일 월요일

Page 6: Hadoop overview

왜 빅 데이터인가?

13년 10월 21일 월요일

Page 7: Hadoop overview

“일반적으로 더 많은 데이터가 더 좋은 알고리즘보다 낫다”

-아난드 라자라만

ex) 자동 번역 프로그램 IBM vs. Google

13년 10월 21일 월요일

Page 8: Hadoop overview

IBM의 자동 번역 프로그램

컴퓨터가 명사, 형용사, 동사 등 단어와 어문의 문법적 구조를 인식하여 번역하는 방식

13년 10월 21일 월요일

Page 9: Hadoop overview

IBM의 자동 번역 프로그램

컴퓨터가 명사, 형용사, 동사 등 단어와 어문의 문법적 구조를 인식하여 번역하는 방식

지난 40년간 개발하였으나 실패!!

13년 10월 21일 월요일

Page 10: Hadoop overview

Google 번역

수억건의 문장과 번역문을 데이터베이스화하여 번역시 유사한 문장과 어구를 데이터베이스에서

추론해나가는 통계적 기법을 적용

13년 10월 21일 월요일

Page 11: Hadoop overview

Google 번역

수억건의 문장과 번역문을 데이터베이스화하여 번역시 유사한 문장과 어구를 데이터베이스에서

추론해나가는 통계적 기법을 적용

전 세계 58개의 언어간의 자동 번역 프로그램 개발에 성공

13년 10월 21일 월요일

Page 12: Hadoop overview

그럼 빅 데이터를 시작해 볼까?

13년 10월 21일 월요일

Page 13: Hadoop overview

빅 데이터를 처리하기 위해서는...단일 장비로는 한계가 있다

13년 10월 21일 월요일

Page 14: Hadoop overview

빅 데이터를 처리하기 위해서는...단일 장비로는 한계가 있다

분산 처리가 답임!!

13년 10월 21일 월요일

Page 15: Hadoop overview

✓ 처리할 작업을 어떻게 나눌 것인가?✓ 데이터를 어떻게 나누어 처리할 것인가?✓ Failure는 어떻게 다룰 것인가?

분산처리에 따른 이슈

13년 10월 21일 월요일

Page 16: Hadoop overview

분산 처리

분산 처리를 위한 여러가지 방법이 존재

13년 10월 21일 월요일

Page 17: Hadoop overview

분산 처리

But, 너무 복잡!!13년 10월 21일 월요일

Page 18: Hadoop overview

분산 처리와 장애에 대한 투명성을 제공하기 위한MapReduce라는 제한된 프로그래밍 모델을 논문으로 공개

MapReduce

13년 10월 21일 월요일

Page 19: Hadoop overview

더그 커팅(Doug Cutting)이 구글이 논문으로 발표한 GFS(Google File System),

MapReduce를 구현한 결과물http://hadoop.apache.org/

Hadoop = HDFS(GFS) + MapReduce

13년 10월 21일 월요일

Page 20: Hadoop overview

그럼 Hadoop으로...

13년 10월 21일 월요일

Page 21: Hadoop overview

대용량 파일을 안전하게 저장하고, 처리하기 위한 하둡 분산 파일 시스템

(Hadoop Distributed File System)

13년 10월 21일 월요일

Page 22: Hadoop overview

• 대용량 파일을 주로 저장✓ FAT32: 4G, NTFS: 4~64G, EXT3: 2TB ~ 64TB

• 랜덤 접근 보다는 스트리밍 접근 방식을 선호✓ 순차적인 파일 연산

• 고가의 장비보다는 여러대의 저가의 장비에서 실행됨✓ 장비의 고장이 일반적인 상황으로 고려되어야 함

• 한번 쓰여진 파일은 내용이 변경되기 보다는 추가됨✓ 제공되는 파일 연산: create/delete/append/modify(x)

HDFS의 설계의 특징

13년 10월 21일 월요일

Page 23: Hadoop overview

HDFS Architecture

13년 10월 21일 월요일

Page 24: Hadoop overview

주요 컨포넌트

• Name-node✓ 파일 및 블록에 대한 메타 데이터 관리✓ HDFS에 전체에 대한 동작을 관리

• Data-node✓ 블록 단위의 데이터가 저장되는 곳

• Client✓ HDFS API를 이용해서 작성된 클라이언트

13년 10월 21일 월요일

Page 25: Hadoop overview

블록 기반 파일 시스템

• Block✓ 모든 파일은 블록 단위로 저장됨✓ 하나의 파일은 여러개의 블록으로 이루어짐✓ 기본 블록의 사이즈: 64M

• Replication✓ 블록은 장애에 대비하여 여러개의 복제본을 가짐✓ 기본 복제 계수: 3✓ 각각의 파일별로 복제 계수 설정 가능

13년 10월 21일 월요일

Page 26: Hadoop overview

Metadata 관리

• 모든 Metadata는 Name-node의 메모리에 저장• Name-node는 3가지 주요 데이터를 저장✓ 파일에 대한 네임스페이스 정보✓ 파일과 블록의 맵핑 정보✓ 각 블록에 대한 데이터 노드 위치 정보

• 파일에 대한 네임스페이스 정보와 파일과 블록의 맵핑 정보는 Name-node에서 영구적으로 관리✓ 파일 시스템에 대한 이미지 및 변경 로그(FSImage, Edit log)

• 각 블록에 대한 위치 정보는 Name-node에서 임시적으로 관리✓ 데이터 노드 시작시 Name-node로 전송, Name-node는 해당 정보를 메모리에 유지

13년 10월 21일 월요일

Page 27: Hadoop overview

FSImage & EditLog

Name-node Secondary Name-node

Storage

FSImage

Edit Log

Memory FileSystem

/

/var/etc/user

A B C D E

1. Add File2. Delete File

3. Append File:

저장New

FS Image다운로드

병합

FSImage

Edit Log

+:

전송

• Name-node는 FSImage와 EditLog를 사용해서 파일 시스템 이미지를 구성✓ EditLog가 클수록 파일 시스템 갱신시 시간이 오래 걸림.✓ 이러한 이슈를 해결하기 위하여, 보조 네임노드는 주기적으로 파일 시스템 이미지를 갱신

13년 10월 21일 월요일

Page 28: Hadoop overview

Flow - Write OperationWR�VWDUW�ZULWLQJ�GDWD�WR��-XVW�DV�LQ�WKH�UHDG�FDVH��FSDataOutputStream�ZUDSV�D�DFSOutputStream��ZKLFK�KDQGOHV�FRPPXQLFDWLRQ�ZLWK�WKH�GDWDQRGHV�DQG�QDPHQRGH�

$V�WKH�FOLHQW�ZULWHV�GDWD��VWHS�����DFSOutputStream�VSOLWV�LW�LQWR�SDFNHWV��ZKLFK�LW�ZULWHVWR�DQ�LQWHUQDO�TXHXH��FDOOHG�WKH�GDWD�TXHXH��7KH�GDWD�TXHXH�LV�FRQVXPHG�E\�WKH�DataStreamer��ZKRVH� UHVSRQVLELOLW\� LW� LV� WR�DVN� WKH�QDPHQRGH� WR�DOORFDWH�QHZ�EORFNV�E\SLFNLQJ�D�OLVW�RI�VXLWDEOH�GDWDQRGHV�WR�VWRUH�WKH�UHSOLFDV��7KH�OLVW�RI�GDWDQRGHV�IRUPV�DSLSHOLQH¢ZH¦OO�DVVXPH�WKH�UHSOLFDWLRQ�OHYHO�LV�WKUHH��VR�WKHUH�DUH�WKUHH�QRGHV�LQ�WKHSLSHOLQH��7KH�DataStreamer�VWUHDPV�WKH�SDFNHWV�WR�WKH�ILUVW�GDWDQRGH�LQ�WKH�SLSHOLQH�ZKLFK�VWRUHV�WKH�SDFNHW�DQG�IRUZDUGV�LW�WR�WKH�VHFRQG�GDWDQRGH�LQ�WKH�SLSHOLQH��6LPL�ODUO\�� WKH� VHFRQG�GDWDQRGH�VWRUHV� WKH�SDFNHW�DQG� IRUZDUGV� LW� WR� WKH� WKLUG� �DQG� ODVW�GDWDQRGH�LQ�WKH�SLSHOLQH��VWHS����

)LJXUH������$�FOLHQW�ZULWLQJ�GDWD�WR�+')6

DFSOutputStream� DOVR�PDLQWDLQV�DQ� LQWHUQDO�TXHXH�RI�SDFNHWV� WKDW�DUH�ZDLWLQJ� WR�EHDFNQRZOHGJHG�E\�GDWDQRGHV��FDOOHG�WKH�DFN�TXHXH��$�SDFNHW�LV�UHPRYHG�IURP�WKH�DFNTXHXH�RQO\�ZKHQ�LW�KDV�EHHQ�DFNQRZOHGJHG�E\�DOO�WKH�GDWDQRGHV�LQ�WKH�SLSHOLQH��VWHS����

,I�D�GDWDQRGH�IDLOV�ZKLOH�GDWD�LV�EHLQJ�ZULWWHQ�WR�LW��WKHQ�WKH�IROORZLQJ�DFWLRQV�DUH�WDNHQ�ZKLFK�DUH�WUDQVSDUHQW�WR�WKH�FOLHQW�ZULWLQJ�WKH�GDWD��)LUVW�WKH�SLSHOLQH�LV�FORVHG��DQG�DQ\SDFNHWV�LQ�WKH�DFN�TXHXH�DUH�DGGHG�WR�WKH�IURQW�RI�WKH�GDWD�TXHXH�VR�WKDW�GDWDQRGHVWKDW�DUH�GRZQVWUHDP�IURP�WKH�IDLOHG�QRGH�ZLOO�QRW�PLVV�DQ\�SDFNHWV��7KH�FXUUHQW�EORFNRQ�WKH�JRRG�GDWDQRGHV�LV�JLYHQ�D�QHZ�LGHQWLW\��ZKLFK�LV�FRPPXQLFDWHG�WR�WKH�QDPH�QRGH�� VR� WKDW� WKH� SDUWLDO� EORFN� RQ� WKH� IDLOHG� GDWDQRGH�ZLOO� EH� GHOHWHG� LI� WKH� IDLOHG

Data Flow | 73

www.it-ebooks.info

• 클라이언트는 Name-node로 해당 파일 생성을 요청• Name-node는 해당 파일 블록을 저장할 Data-node의 목록을 전달• 클라이언트는 첫번째 Data-node에게 데이터를 전송✓ 데이터 복제는 Data-node간의 파이프 라인을 통해 이루어짐

13년 10월 21일 월요일

Page 29: Hadoop overview

Flow - Read Operation

)LJXUH������$�FOLHQW�UHDGLQJ�GDWD�IURP�+')6

7KH�FOLHQW�RSHQV�WKH�ILOH�LW�ZLVKHV�WR�UHDG�E\�FDOOLQJ�open()�RQ�WKH�FileSystem�REMHFW�ZKLFK� IRU� +')6� LV� DQ� LQVWDQFH� RI� DistributedFileSystem� �VWHS� �� LQ� )LJXUH� �����DistributedFileSystem�FDOOV�WKH�QDPHQRGH��XVLQJ�53&��WR�GHWHUPLQH�WKH�ORFDWLRQV�RIWKH�EORFNV�IRU�WKH�ILUVW�IHZ�EORFNV�LQ�WKH�ILOH��VWHS�����)RU�HDFK�EORFN��WKH�QDPHQRGHUHWXUQV�WKH�DGGUHVVHV�RI�WKH�GDWDQRGHV�WKDW�KDYH�D�FRS\�RI�WKDW�EORFN��)XUWKHUPRUH��WKHGDWDQRGHV�DUH�VRUWHG�DFFRUGLQJ�WR�WKHLU�SUR[LPLW\�WR�WKH�FOLHQW��DFFRUGLQJ�WR�WKH�WRS�RORJ\�RI�WKH�FOXVWHU¦V�QHWZRUN��VHH�£1HWZRUN�7RSRORJ\�DQG�+DGRRS¤�RQ�SDJH������,IWKH�FOLHQW�LV�LWVHOI�D�GDWDQRGH��LQ�WKH�FDVH�RI�D�0DS5HGXFH�WDVN��IRU�LQVWDQFH���WKHQ�LWZLOO�UHDG�IURP�WKH�ORFDO�GDWDQRGH��LI�LW�KRVWV�D�FRS\�RI�WKH�EORFN��VHH�DOVR�)LJXUH������

7KH�DistributedFileSystem�UHWXUQV�DQ�FSDataInputStream��DQ�LQSXW�VWUHDP�WKDW�VXS�SRUWV�ILOH�VHHNV��WR�WKH�FOLHQW�IRU�LW�WR�UHDG�GDWD�IURP��FSDataInputStream�LQ�WXUQ�ZUDSVD�DFSInputStream��ZKLFK�PDQDJHV�WKH�GDWDQRGH�DQG�QDPHQRGH�,�2�

7KH�FOLHQW�WKHQ�FDOOV�read()�RQ�WKH�VWUHDP��VWHS�����DFSInputStream��ZKLFK�KDV�VWRUHGWKH�GDWDQRGH�DGGUHVVHV�IRU�WKH�ILUVW�IHZ�EORFNV�LQ�WKH�ILOH��WKHQ�FRQQHFWV�WR�WKH�ILUVW�FORVHVW��GDWDQRGH�IRU�WKH�ILUVW�EORFN�LQ�WKH�ILOH��'DWD�LV�VWUHDPHG�IURP�WKH�GDWDQRGHEDFN�WR�WKH�FOLHQW��ZKLFK�FDOOV�read()�UHSHDWHGO\�RQ�WKH�VWUHDP��VWHS�����:KHQ�WKH�HQGRI�WKH�EORFN�LV�UHDFKHG��DFSInputStream�ZLOO�FORVH�WKH�FRQQHFWLRQ�WR�WKH�GDWDQRGH��WKHQILQG�WKH�EHVW�GDWDQRGH�IRU�WKH�QH[W�EORFN��VWHS�����7KLV�KDSSHQV�WUDQVSDUHQWO\�WR�WKHFOLHQW��ZKLFK�IURP�LWV�SRLQW�RI�YLHZ�LV�MXVW�UHDGLQJ�D�FRQWLQXRXV�VWUHDP�

%ORFNV�DUH�UHDG�LQ�RUGHU�ZLWK�WKH�DFSInputStream�RSHQLQJ�QHZ�FRQQHFWLRQV�WR�GDWDQRGHVDV�WKH�FOLHQW�UHDGV�WKURXJK�WKH�VWUHDP��,W�ZLOO�DOVR�FDOO�WKH�QDPHQRGH�WR�UHWULHYH�WKHGDWDQRGH�ORFDWLRQV�IRU�WKH�QH[W�EDWFK�RI�EORFNV�DV�QHHGHG��:KHQ�WKH�FOLHQW�KDV�ILQLVKHGUHDGLQJ��LW�FDOOV�close()�RQ�WKH�FSDataInputStream��VWHS����

70 | Chapter 3:ಗThe Hadoop Distributed Filesystem

www.it-ebooks.info

• 클라이언트는 Name-node로 해당 파일의 블록 위치를 요청• Name-node는 복제 블록이 저장된 곳을 확인 후, 클라이언트에서 가까운 순서로 정렬해서 반환• 클라이언트는 Data-node에게 블록 데이터를 요청✓ Best case: 클라이언트와 해당 블록이 저장된 Data-node가 같은 장비일 경우

13년 10월 21일 월요일

Page 30: Hadoop overview

일반적인 하드웨어로 구성된 클러스터 상에서 많은 양의 데이터를 병렬로 처리하는 어플리케이션을 쉽게 작성할 수 있도록 하는 소프트웨어 프레임워크

13년 10월 21일 월요일

Page 31: Hadoop overview

)LJXUH������0DS5HGXFH�GDWD�IORZ�ZLWK�PXOWLSOH�UHGXFH�WDVNV

)LQDOO\��LW¦V�DOVR�SRVVLEOH�WR�KDYH�]HUR�UHGXFH�WDVNV��7KLV�FDQ�EH�DSSURSULDWH�ZKHQ�\RXGRQ¦W�QHHG�WKH�VKXIIOH�VLQFH�WKH�SURFHVVLQJ�FDQ�EH�FDUULHG�RXW�HQWLUHO\�LQ�SDUDOOHO��D�IHZH[DPSOHV�DUH�GLVFXVVHG�LQ�£1/LQH,QSXW)RUPDW¤�RQ�SDJH�������,Q�WKLV�FDVH��WKH�RQO\RII�QRGH�GDWD�WUDQVIHU�LV�ZKHQ�WKH�PDS�WDVNV�ZULWH�WR�+')6��VHH�)LJXUH������

Combiner Functions0DQ\�0DS5HGXFH�MREV�DUH�OLPLWHG�E\�WKH�EDQGZLGWK�DYDLODEOH�RQ�WKH�FOXVWHU��VR�LW�SD\VWR�PLQLPL]H�WKH�GDWD�WUDQVIHUUHG�EHWZHHQ�PDS�DQG�UHGXFH�WDVNV��+DGRRS�DOORZV�WKHXVHU�WR�VSHFLI\�D�FRPELQHU�IXQFWLRQ�WR�EH�UXQ�RQ�WKH�PDS�RXWSXW¢WKH�FRPELQHU�IXQF�WLRQ¦V�RXWSXW�IRUPV�WKH�LQSXW�WR�WKH�UHGXFH�IXQFWLRQ��6LQFH�WKH�FRPELQHU�IXQFWLRQ�LV�DQRSWLPL]DWLRQ��+DGRRS�GRHV�QRW�SURYLGH�D�JXDUDQWHH�RI�KRZ�PDQ\�WLPHV�LW�ZLOO�FDOO�LWIRU�D�SDUWLFXODU�PDS�RXWSXW�UHFRUG��LI�DW�DOO��,Q�RWKHU�ZRUGV��FDOOLQJ�WKH�FRPELQHU�IXQF�WLRQ�]HUR��RQH��RU�PDQ\�WLPHV�VKRXOG�SURGXFH�WKH�VDPH�RXWSXW�IURP�WKH�UHGXFHU�

34 | Chapter 2:ಗMapReduce

www.it-ebooks.info

Map-Reduce Overview

Map-Reduce는 입력 데이터를 Split으로 분할하여 각각의 노드에서 병렬적으로 처리

13년 10월 21일 월요일

Page 32: Hadoop overview

: 직접 소스 개발 : 프레임워크에서 동작

Map & Reduce

Map: (k1, v1) -> list(k2, v2)Reduce: (k2, list(v2)) -> list(k3, v3)

ex) 단어 수 세기

Map-Reduce는 Map과 Reduce라는 2개의 메서드로 구성

read a bookwrite a book

<1, read a book><2, write a book>

Map

<read, 1><a, 1>

<book, 1><write, 1>

<a, 1><book, 1>

<read, (1)><a, (1,1)>

<book, (1,1)><write, (1)>

Reduce

<read, 1>< a, 2>

<book, 2><write, 1>

Map

정렬과병합

Reduce

키,값

13년 10월 21일 월요일

Page 33: Hadoop overview

public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context ) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } }

ExampleWordCount-Mapper

Map: (k1, v1) -> list(k2, v2)

13년 10월 21일 월요일

Page 34: Hadoop overview

ExampleWordCount-Reducer

public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> { private IntWritable result = new IntWritable();

public void reduce(Text key, Iterable<IntWritable> values, Context context ) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } }

Reduce: (k2, list(v2)) -> list(k3, v3)

13년 10월 21일 월요일

Page 35: Hadoop overview

ExampleWordCount-Driver

public class WordCount { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(conf, args)

.getRemainingArgs(); if (otherArgs.length != 2) { System.err.println("Usage: wordcount <in> <out>"); System.exit(2); } Job job = new Job(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); }}

main함수가 있는 구동 Class

13년 10월 21일 월요일

Page 36: Hadoop overview

Map-Reduce Architecture

13년 10월 21일 월요일

Page 37: Hadoop overview

7KH�MRE�VXEPLVVLRQ�SURFHVV�LPSOHPHQWHG�E\�JobClient¦V�submitJob()�PHWKRG�GRHV�WKHIROORZLQJ�

� $VNV�WKH�MREWUDFNHU�IRU�D�QHZ�MRE�,'��E\�FDOOLQJ�getNewJobId()�RQ�JobTracker���VWHS���

� &KHFNV�WKH�RXWSXW�VSHFLILFDWLRQ�RI�WKH�MRE��)RU�H[DPSOH��LI�WKH�RXWSXW�GLUHFWRU\�KDVQRW�EHHQ�VSHFLILHG�RU� LW�DOUHDG\�H[LVWV�� WKH� MRE� LV�QRW� VXEPLWWHG�DQG�DQ�HUURU� LVWKURZQ�WR�WKH�0DS5HGXFH�SURJUDP�

� &RPSXWHV�WKH�LQSXW�VSOLWV�IRU�WKH�MRE��,I�WKH�VSOLWV�FDQQRW�EH�FRPSXWHG��EHFDXVHWKH�LQSXW�SDWKV�GRQ¦W�H[LVW��IRU�H[DPSOH��WKHQ�WKH�MRE�LV�QRW�VXEPLWWHG�DQG�DQ�HUURULV�WKURZQ�WR�WKH�0DS5HGXFH�SURJUDP�

� &RSLHV�WKH�UHVRXUFHV�QHHGHG�WR�UXQ�WKH�MRE��LQFOXGLQJ�WKH�MRE�-$5�ILOH��WKH�FRQILJ�XUDWLRQ� ILOH�� DQG� WKH� FRPSXWHG� LQSXW� VSOLWV�� WR� WKH� MREWUDFNHU¦V� ILOHV\VWHP� LQ� DGLUHFWRU\�QDPHG�DIWHU�WKH�MRE�,'��7KH�MRE�-$5�LV�FRSLHG�ZLWK�D�KLJK�UHSOLFDWLRQIDFWRU��FRQWUROOHG�E\�WKH�mapred.submit.replication�SURSHUW\��ZKLFK�GHIDXOWV�WR����VR�WKDW�WKHUH�DUH�ORWV�RI�FRSLHV�DFURVV�WKH�FOXVWHU�IRU�WKH�WDVNWUDFNHUV�WR�DFFHVVZKHQ�WKH\�UXQ�WDVNV�IRU�WKH�MRE��VWHS����

)LJXUH������+RZ�+DGRRS�UXQV�D�0DS5HGXFH�MRE

168 | Chapter 6:ಗHow MapReduce Works

Map-Reduce-I

• JobClient✓ 공통 파일을 분산 파일 시스템에 복사✓ JobTracker에 Map-Reduce 잡을 제출

• JobTracker✓ 제출된 맵 리듀스 잡을 스케쥴링✓ 태스크 트래커에 태스크(Map/Reduce)를 할당

• TaskTracker✓ 할당된 태스크를 수행✓ 수행되는 태스크는 별도의 JVM에서 실행됨✓ 일반적으로 HDFS의 Data-node와 같은 곳에서 실행됨. - 데이터 지역성 극대화

13년 10월 21일 월요일

Page 38: Hadoop overview

duce.framework.name�LV�VHW�WR�yarn��7KH�VXEPLVVLRQ�SURFHVV�LV�YHU\�VLPLODU�WR�WKH�FODVVLFLPSOHPHQWDWLRQ��7KH�QHZ�MRE�,'�LV�UHWULHYHG�IURP�WKH�UHVRXUFH�PDQDJHU��UDWKHU�WKDQWKH�MREWUDFNHU���DOWKRXJK�LQ�WKH�QRPHQFODWXUH�RI�<$51�LW�LV�DQ�DSSOLFDWLRQ�,'��VWHS����7KH�MRE�FOLHQW�FKHFNV�WKH�RXWSXW�VSHFLILFDWLRQ�RI�WKH�MRE��FRPSXWHV�LQSXW�VSOLWV��DO�WKRXJK�WKHUH�LV�DQ�RSWLRQ�WR�JHQHUDWH�WKHP�RQ�WKH�FOXVWHU��yarn.app.mapreduce.am.compute-splits-in-cluster��ZKLFK�FDQ�EH�EHQHILFLDO�IRU�MREV�ZLWK�PDQ\�VSOLWV���DQG�FRSLHVMRE�UHVRXUFHV��LQFOXGLQJ�WKH�MRE�-$5��FRQILJXUDWLRQ��DQG�VSOLW�LQIRUPDWLRQ��WR�+')6�VWHS�����)LQDOO\��WKH�MRE�LV�VXEPLWWHG�E\�FDOOLQJ�submitApplication()�RQ�WKH�UHVRXUFHPDQDJHU��VWHS����

Job Initialization:KHQ�WKH�UHVRXUFH�PDQDJHU�UHFHLYHV�D�FDOO�WR�LWV�submitApplication()��LW�KDQGV�RII�WKHUHTXHVW�WR�WKH�VFKHGXOHU��7KH�VFKHGXOHU�DOORFDWHV�D�FRQWDLQHU��DQG�WKH�UHVRXUFH�PDQDJHUWKHQ�ODXQFKHV�WKH�DSSOLFDWLRQ�PDVWHU¦V�SURFHVV�WKHUH��XQGHU�WKH�QRGH�PDQDJHU¦V�PDQ�DJHPHQW��VWHSV��D�DQG��E��

7KH�DSSOLFDWLRQ�PDVWHU�IRU�0DS5HGXFH�MREV�LV�D�-DYD�DSSOLFDWLRQ�ZKRVH�PDLQ�FODVV�LVMRAppMaster��,W�LQLWLDOL]HV�WKH�MRE�E\�FUHDWLQJ�D�QXPEHU�RI�ERRNNHHSLQJ�REMHFWV�WR�NHHSWUDFN�RI�WKH�MRE¦V�SURJUHVV��DV�LW�ZLOO�UHFHLYH�SURJUHVV�DQG�FRPSOHWLRQ�UHSRUWV�IURP�WKHWDVNV��VWHS�����1H[W��LW�UHWULHYHV�WKH�LQSXW�VSOLWV�FRPSXWHG�LQ�WKH�FOLHQW�IURP�WKH�VKDUHGILOHV\VWHP��VWHS�����,W�WKHQ�FUHDWHV�D�PDS�WDVN�REMHFW�IRU�HDFK�VSOLW��DQG�D�QXPEHU�RIUHGXFH�WDVN�REMHFWV�GHWHUPLQHG�E\�WKH�mapreduce.job.reduces�SURSHUW\�

7KH�QH[W�WKLQJ�WKH�DSSOLFDWLRQ�PDVWHU�GRHV�LV�GHFLGH�KRZ�WR�UXQ�WKH�WDVNV�WKDW�PDNHXS�WKH�0DS5HGXFH�MRE��,I�WKH�MRE�LV�VPDOO��WKH�DSSOLFDWLRQ�PDVWHU�PD\�FKRRVH�WR�UXQWKHP�LQ�WKH�VDPH�-90�DV�LWVHOI��VLQFH�LW�MXGJHV�WKH�RYHUKHDG�RI�DOORFDWLQJ�QHZ�FRQWDLQHUVDQG�UXQQLQJ�WDVNV�LQ�WKHP�DV�RXWZHLJKLQJ�WKH�JDLQ�WR�EH�KDG�LQ�UXQQLQJ�WKHP�LQ�SDUDOOHO�FRPSDUHG�WR�UXQQLQJ�WKHP�VHTXHQWLDOO\�RQ�RQH�QRGH���7KLV�LV�GLIIHUHQW�WR�0DS5HGXFH���ZKHUH�VPDOO� MREV�DUH�QHYHU� UXQ�RQ�D� VLQJOH� WDVNWUDFNHU���6XFK�D� MRE� LV� VDLG� WR�EHXEHUL]HG��RU�UXQ�DV�DQ�XEHU�WDVN�

:KDW�TXDOLILHV�DV�D�VPDOO�MRE"�%\�GHIDXOW�RQH�WKDW�KDV�OHVV�WKDQ����PDSSHUV��RQO\�RQHUHGXFHU��DQG�WKH�LQSXW�VL]H�LV�OHVV�WKDQ�WKH�VL]H�RI�RQH�+')6�EORFN���7KHVH�YDOXHV�PD\

)LJXUH������+RZ�+DGRRS�UXQV�D�0DS5HGXFH�MRE�XVLQJ�<$51

Anatomy of a MapReduce Job Run | 197

www.it-ebooks.info

Map-Reduce-II(YARN)

• Job✓ 공통 파일을 분산 파일 시스템에 복사✓ JobTracker에 Map-Reduce 잡을 제출

• Resource Manager✓ 클러스터 상의 컴퓨터 리소스를 할당

• Application Master✓ 맵 리듀스 잡을 수행✓ Node Manager에게 태스크 수행을 요청

• Node Manager✓ 컨테이너의 리소스를 관리✓ 리소스 허용 범위 내의 태스크를 실행

13년 10월 21일 월요일

Page 39: Hadoop overview

duce.framework.name�LV�VHW�WR�yarn��7KH�VXEPLVVLRQ�SURFHVV�LV�YHU\�VLPLODU�WR�WKH�FODVVLFLPSOHPHQWDWLRQ��7KH�QHZ�MRE�,'�LV�UHWULHYHG�IURP�WKH�UHVRXUFH�PDQDJHU��UDWKHU�WKDQWKH�MREWUDFNHU���DOWKRXJK�LQ�WKH�QRPHQFODWXUH�RI�<$51�LW�LV�DQ�DSSOLFDWLRQ�,'��VWHS����7KH�MRE�FOLHQW�FKHFNV�WKH�RXWSXW�VSHFLILFDWLRQ�RI�WKH�MRE��FRPSXWHV�LQSXW�VSOLWV��DO�WKRXJK�WKHUH�LV�DQ�RSWLRQ�WR�JHQHUDWH�WKHP�RQ�WKH�FOXVWHU��yarn.app.mapreduce.am.compute-splits-in-cluster��ZKLFK�FDQ�EH�EHQHILFLDO�IRU�MREV�ZLWK�PDQ\�VSOLWV���DQG�FRSLHVMRE�UHVRXUFHV��LQFOXGLQJ�WKH�MRE�-$5��FRQILJXUDWLRQ��DQG�VSOLW�LQIRUPDWLRQ��WR�+')6�VWHS�����)LQDOO\��WKH�MRE�LV�VXEPLWWHG�E\�FDOOLQJ�submitApplication()�RQ�WKH�UHVRXUFHPDQDJHU��VWHS����

Job Initialization:KHQ�WKH�UHVRXUFH�PDQDJHU�UHFHLYHV�D�FDOO�WR�LWV�submitApplication()��LW�KDQGV�RII�WKHUHTXHVW�WR�WKH�VFKHGXOHU��7KH�VFKHGXOHU�DOORFDWHV�D�FRQWDLQHU��DQG�WKH�UHVRXUFH�PDQDJHUWKHQ�ODXQFKHV�WKH�DSSOLFDWLRQ�PDVWHU¦V�SURFHVV�WKHUH��XQGHU�WKH�QRGH�PDQDJHU¦V�PDQ�DJHPHQW��VWHSV��D�DQG��E��

7KH�DSSOLFDWLRQ�PDVWHU�IRU�0DS5HGXFH�MREV�LV�D�-DYD�DSSOLFDWLRQ�ZKRVH�PDLQ�FODVV�LVMRAppMaster��,W�LQLWLDOL]HV�WKH�MRE�E\�FUHDWLQJ�D�QXPEHU�RI�ERRNNHHSLQJ�REMHFWV�WR�NHHSWUDFN�RI�WKH�MRE¦V�SURJUHVV��DV�LW�ZLOO�UHFHLYH�SURJUHVV�DQG�FRPSOHWLRQ�UHSRUWV�IURP�WKHWDVNV��VWHS�����1H[W��LW�UHWULHYHV�WKH�LQSXW�VSOLWV�FRPSXWHG�LQ�WKH�FOLHQW�IURP�WKH�VKDUHGILOHV\VWHP��VWHS�����,W�WKHQ�FUHDWHV�D�PDS�WDVN�REMHFW�IRU�HDFK�VSOLW��DQG�D�QXPEHU�RIUHGXFH�WDVN�REMHFWV�GHWHUPLQHG�E\�WKH�mapreduce.job.reduces�SURSHUW\�

7KH�QH[W�WKLQJ�WKH�DSSOLFDWLRQ�PDVWHU�GRHV�LV�GHFLGH�KRZ�WR�UXQ�WKH�WDVNV�WKDW�PDNHXS�WKH�0DS5HGXFH�MRE��,I�WKH�MRE�LV�VPDOO��WKH�DSSOLFDWLRQ�PDVWHU�PD\�FKRRVH�WR�UXQWKHP�LQ�WKH�VDPH�-90�DV�LWVHOI��VLQFH�LW�MXGJHV�WKH�RYHUKHDG�RI�DOORFDWLQJ�QHZ�FRQWDLQHUVDQG�UXQQLQJ�WDVNV�LQ�WKHP�DV�RXWZHLJKLQJ�WKH�JDLQ�WR�EH�KDG�LQ�UXQQLQJ�WKHP�LQ�SDUDOOHO�FRPSDUHG�WR�UXQQLQJ�WKHP�VHTXHQWLDOO\�RQ�RQH�QRGH���7KLV�LV�GLIIHUHQW�WR�0DS5HGXFH���ZKHUH�VPDOO� MREV�DUH�QHYHU� UXQ�RQ�D� VLQJOH� WDVNWUDFNHU���6XFK�D� MRE� LV� VDLG� WR�EHXEHUL]HG��RU�UXQ�DV�DQ�XEHU�WDVN�

:KDW�TXDOLILHV�DV�D�VPDOO�MRE"�%\�GHIDXOW�RQH�WKDW�KDV�OHVV�WKDQ����PDSSHUV��RQO\�RQHUHGXFHU��DQG�WKH�LQSXW�VL]H�LV�OHVV�WKDQ�WKH�VL]H�RI�RQH�+')6�EORFN���7KHVH�YDOXHV�PD\

)LJXUH������+RZ�+DGRRS�UXQV�D�0DS5HGXFH�MRE�XVLQJ�<$51

Anatomy of a MapReduce Job Run | 197

www.it-ebooks.info

Map-Reduce-II(YARN)

• Job✓ 공통 파일을 분산 파일 시스템에 복사✓ JobTracker에 Map-Reduce 잡을 제출

• Resource Manager✓ 클러스터 상의 컴퓨터 리소스를 할당

• Application Master✓ 맵 리듀스 잡을 수행✓ Node Manager에게 태스크 수행을 요청

• Node Manager✓ 컨테이너의 리소스를 관리✓ 리소스 허용 범위 내의 태스크를 실행확장성 문제를 해결하기 위해

잡트래커의 책임을 분리13년 10월 21일 월요일

Page 40: Hadoop overview

이전 버전과의 차이 (2/2)

출처: Hortonworks, http://hortonworks.com/hadoop/yarn

Map-Reduce I vs YARN

13년 10월 21일 월요일

Page 41: Hadoop overview

Hadoop Echo System

13년 10월 21일 월요일

Page 42: Hadoop overview

Apache HBase하둡 기반의 NoSQL 시스템(컬럼기반), Google Big Table 과 유사 - MasterServer와 RegionServer로 구성됨.- HA를 위해 Apache Zookeer 사용

13년 10월 21일 월요일

Page 43: Hadoop overview

Apache PIG

• 대규모의 데이터를 쉽게 분석할 수 있도록 스크립트 수준의 언어를 제공하는 분석 플랫폼

✓ Hadoop 상에서 구동시 스크립트가 내부적으로 맵리듀스 잡으로 수행 됨

<WordCount Example>

A = load './input.txt'; B = foreach A generate flatten(TOKENIZE((chararray)$0)) as word; C = group B by word; D = foreach C generate COUNT(B), group; store D into './wordcount';

13년 10월 21일 월요일

Page 44: Hadoop overview

Apache Hive

The Hive Web Interface (HWI)$V�DQ�DOWHUQDWLYH�WR�WKH�VKHOO��\RX�PLJKW�ZDQW�WR�WU\�+LYH¦V�VLPSOH�ZHE�LQWHUIDFH��6WDUWLW�XVLQJ�WKH�IROORZLQJ�FRPPDQGV�

% export ANT_LIB=/path/to/ant/lib% hive --service hwi

�<RX�RQO\�QHHG�WR�VHW�WKH�ANT_LIB�HQYLURQPHQW�YDULDEOH�LI�$QW¦V�OLEUDU\�LV�QRW�IRXQGLQ� �RSW�DQW�OLE� RQ� \RXU� V\VWHP��� 7KHQ� QDYLJDWH� WR� KWWS���ORFDOKRVW������KZL� LQ� \RXUEURZVHU��)URP�WKHUH��\RX�FDQ�EURZVH�+LYH�GDWDEDVH�VFKHPDV�DQG�FUHDWH�VHVVLRQV�IRULVVXLQJ�FRPPDQGV�DQG�TXHULHV�

,W¦V�SRVVLEOH�WR�UXQ�WKH�ZHE�LQWHUIDFH�DV�D�VKDUHG�VHUYLFH�WR�JLYH�XVHUV�ZLWKLQ�DQ�RUJD�QL]DWLRQ�DFFHVV�WR�+LYH�ZLWKRXW�KDYLQJ�WR�LQVWDOO�DQ\�FOLHQW�VRIWZDUH��7KHUH�DUH�PRUHGHWDLOV�RQ�WKH�+LYH�:HE�,QWHUIDFH�RQ�WKH�+LYH�ZLNL�DW�KWWSV���FZLNL�DSDFKH�RUJ�FRQIOXHQFH�GLVSOD\�+LYH�+LYH:HE,QWHUIDFH�

Hive clients,I�\RX�UXQ�+LYH�DV�D�VHUYHU��hive --service hiveserver���WKHQ�WKHUH�DUH�D�QXPEHU�RIGLIIHUHQW�PHFKDQLVPV�IRU�FRQQHFWLQJ�WR�LW�IURP�DSSOLFDWLRQV��7KH�UHODWLRQVKLS�EHWZHHQ+LYH�FOLHQWV�DQG�+LYH�VHUYLFHV�LV�LOOXVWUDWHG�LQ�)LJXUH������

)LJXUH�������+LYH�DUFKLWHFWXUH

418 | Chapter 12:ಗHive

www.it-ebooks.info

하둡에 저장된 데이터를 쉽게 처리할 수 있도록 하는 데이터 웨어하우스 솔루션 - SQL 호환의 스크립트 구조를 제공 - 메타 정보를 저장하기 위해 별도의 메타 스토어가 필요

13년 10월 21일 월요일

Page 45: Hadoop overview

이미지 출처: siliconweek, <http://www.siliconweek.es/noticias/apache-sqoop-se-convierte-en-proyecto-prioritario-para-big-data-21558>

하둡과 RDBMS 사이에서 데이터를 전송하기 위한 Tool

Import Export

Apache Sqoop

13년 10월 21일 월요일

Page 46: Hadoop overview

Apache Flume

출처: cloudera, http://archive.cloudera.com/cdh/3/flume-0.9.0+1/UserGuide.html

• 분석을 위해 많은 양의 로그 데이터를 효과적으로 수집하여 HDFS에 저장하는 시스템• 노드✓ Logical: 데이터의 흐름을 담당✓ Physical: 단일 자바 프로세스, 즉 단일 JVM 인스턴스

Logical 노드를 담는 컨테이너

• 컨포넌트✓ Master: Logical, Physical 노드를 제어✓ Agent: 로그를 수집하여 Collector에 전송하는 역할✓ Collector: 로그를 수집하여 더 큰 스트림으로 묶어 HDFS에 저장

13년 10월 21일 월요일

Page 47: Hadoop overview

Apache Zookeeper분산 환경에서 필요한 여러가지 기능을 구현할수 있도록 하는 분산 코디네이터 - Google Chubby의 구현제 - 세션 기반의 파일 시스템과 유사한 데이터 저장 구조를 제공 - 분산 락, 캐시, 맴버쉽 관리에 용이 - HA를 위해 과반수 알고리즘을 사용

13년 10월 21일 월요일

Page 48: Hadoop overview

References

• 정재화. 시작하세요! 하둡 프로그래밍. 경기도 파주: 위키북스, 2012

• 위키피디아. 빅데이터. http://ko.wikipedia.org/wiki/%EB%B9%85_%EB%8D%B0%EC%9D%B4%ED%84%B0 .

• Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung. The Google le system. In 19th Symposium on Operating Systems Principles, pages 2943, Lake George, New York, 2003.

• 아파치. 하둡. http://hadoop.apache.org/

• Hadoop YARN “A next-generation framework for Hadoop data processing”, Hortonworks, http://hortonworks.com/hadoop/yarn

• Flume User Guide, Cloudera, http://archive.cloudera.com/cdh/3/flume-0.9.0+1/UserGuide.html

13년 10월 21일 월요일