How Hadoop Works HDFS Shell haddop fs Java

  • Slides: 37
Download presentation
How Hadoop Works 박영택 컴퓨터학부

How Hadoop Works 박영택 컴퓨터학부

HDFS 접근 방법 § Shell 커맨드 라인을 사용: haddop fs § Java API §

HDFS 접근 방법 § Shell 커맨드 라인을 사용: haddop fs § Java API § Ecosystem 프로젝트 ‐Flume ‐ network sourc로 부터 데이터 수집 ‐Sqoop ‐ HDFS와 RDBMS 사이의 데이터 전송 ‐Hue ‐ Web 기반의 interactive UI로 browse, upload, download, file view 등이 가능

Example: Storing and Retrieving Files (1)

Example: Storing and Retrieving Files (1)

Example: Storing and Retrieving Files (2)

Example: Storing and Retrieving Files (2)

Example: Storing and Retrieving Files (3)

Example: Storing and Retrieving Files (3)

Example: Storing and Retrieving Files (4)

Example: Storing and Retrieving Files (4)

HDFS Name. Node Availability § Name. Node daemon은 반드시 항상 실행되고 있어야 함 ‐Name.

HDFS Name. Node Availability § Name. Node daemon은 반드시 항상 실행되고 있어야 함 ‐Name. Node가 중단되면, 클러스터는 접근이 불가능 § High Availability mode (in CDH 4 and later) ‐ 2개의 Name. Node : Active와 Standby § Classic mode ‐ 1개의 Name. Node ‐또 다른 “helper” node는 Secondary. Name. Node ‐ backup이 목적이 아니며, 장애 발생 시 Name. Node를 대신하는 것이 불가능 ‐ Name. Node를 복구 할 수 있는 정보를 제공

Hadoop Server roles Clients Data Storage Jobs Data Analytics Jobs HDFS Map Reduce Job

Hadoop Server roles Clients Data Storage Jobs Data Analytics Jobs HDFS Map Reduce Job Tracker Name Node Data Node & Task. Tracker Task Data Node & Task Tracker Data Node && Data Task Tracker Data Node & Task Tracker . . . Secondary Name Node Masters Data Node & Task Tracker Slaves Data Node & Task Tracker

맵퍼 예제: Upper Case Mapper § 대문자로 바꾸기(pseudo-code): Let map(k, v) = emit(k. to.

맵퍼 예제: Upper Case Mapper § 대문자로 바꾸기(pseudo-code): Let map(k, v) = emit(k. to. Upper(), v. to. Upper()) (‘foo’, ‘bar’) -> (‘FOO’, ‘BAR’) (‘foo’, ‘other’) -> (‘FOO’, ‘OTHER’) (‘baz’, ‘more data’) -> (’BAZ’, ‘MORE DATA’)

맵퍼 예제: Filter Mapper § 입력값의 Value가 소수인 경우에만 Key/Value 쌍 출력(pseudo-code): Let map(k,

맵퍼 예제: Filter Mapper § 입력값의 Value가 소수인 경우에만 Key/Value 쌍 출력(pseudo-code): Let map(k, v) = if (is. Prime(v)) then emit(k, v) (‘foo’, 7) -> (‘foo’, 7) (‘baz’, 10) -> nothing

리듀서 예제 : Sum Reducer § 각 중간 키 값과 관련있는 모든 값들을 합

리듀서 예제 : Sum Reducer § 각 중간 키 값과 관련있는 모든 값들을 합 (pseudo-code) let reduce(k, vals) = sum = 0 foreach int i in vals: sum += i emit(k, sum) (’bar', [9, 3, -17, 44]) -> (’bar’. 39) (’foo', [123, 100, 77]) -> (’foo', 300)

리듀서 예제 : Identity Reducer § Identity 리듀서 는 매우 흔하다. (pseudo-code) let reduce(k,

리듀서 예제 : Identity Reducer § Identity 리듀서 는 매우 흔하다. (pseudo-code) let reduce(k, vals) = foreach v in vals: emit(k, v) ('bar', [123, 100, 77]) -> ('bar', 123), ('bar', 100), ('bar', 77) ('foo', [9, 3, -17, 44]) -> ('foo', 9), ('foo', 3), ('foo', -17), ('foo', 44)

맵리듀스 예제: Word Count § 큰 Input 데이터에서 나타나는 각 단어의 개수를 세는 것

맵리듀스 예제: Word Count § 큰 Input 데이터에서 나타나는 각 단어의 개수를 세는 것 ‐Word Count 는 맵리듀스 프로그래밍에서 ‘Hello world’ 와 같다. map(String input_key, String input_value) foreach word w in input_value: emit(w, 1) reduce(String output_key, Iterator<int> intermediate_vals) set count = 0 foreach v in intermediate_vals: count += v emit(output_key, count)

맵리듀스 예제: Word Count (cont’d) § 맵퍼의 Input (3414, 'the cat sat on the

맵리듀스 예제: Word Count (cont’d) § 맵퍼의 Input (3414, 'the cat sat on the mat') (3437, 'the aardvark sat on the sofa') § 맵퍼로 부터의 Output ('the', 1), ('cat', 1), ('sat', 1), ('on', 1), ('the', 1), ('mat', 1), ('the', 1), ('aardvark', 1), ('sat', 1), ('on', 1), ('the', 1), ('sofa', 1)