동혼 2020. 3. 31. 04:17

 

빅데이터 분산 컴퓨팅

 

하둡

- HDFS : 스토리지 담당

- MapReduce  : 계산 담당

 

하둡 흐름 

job =

HDFS 에서 read 

-> <key,value> 형식으로 변환

-> Mapper에서 key, value 쌍의 형태로 데이터 읽음

-> Shuffle 로 합침

-> [<k,v>] 의 리스트형태로 만듦 Reduce 

-> <k,v> 

-> HDFS 파일로 write 

 

MapReduce 는 java 나 python 으로 개발

개발 task (driver, mapper , reducer )

 

 

HDFS 

file 저장방식

- file 은 block 단위로 분할됨 ( 64mb ~128mb)

- 데이터 로드 시 여러 machine 에 분산되어 저장된다.

( 같은 file 의 다른 block 들은 서로 다른 machine 에 저장됨 / 이를 통해 효율적은 mapreduce 처리 가능 )

- block 은 여러 machine 에 복제되어 data node 에 저장됨

 

HIVE

why

- 맵리듀스 프로그래밍은 데이터 분선가들이 하기에 너무 어려움

- 재사용 불가하고, 에러 발생율이 높음

- 데이터 분석가들는 sql 가능, (프로그래밍은 못 함)

 

HQL 이라는 맵리듀스를 대체할 hive 를 개발

비구조적인 데이터들을 테이블처럼 보이게 하여 hql를 사용할 수 있게함

 

hive 흐름

hql 쿼리

-> HIVE 에서 해당쿼리문을 MapReduce 로 변환

<-> MapReduce

<-> HDFS

 

즉, 사용자는 hive (쿼리문)을 사용시, hive가 자동으로 MapReduce 프로그래밍으로 변환해줌

 

장점

- 대용량 데이터 쉽게 처리

- SQL 제공 (hiveQL)

- 맵리듀스를 직접 작성하는 것보다 생산적 ( java로 100line 을 hiveQL로 5line으로 구현가능)

- 많은 BI툴이 hive 지원

 

단점

- 데이터 추가 방법이 쉽지 않다

- HDFS 안의 파일은 수정 불가

 

 

HIVE는 Client machine에서 동작

 - hiveQL질의문을 MapReduce job으로 변환

 

 

 

출처 : https://threenation9.tistory.com/1

 

 

 

HBase

 

mapreduce 를 사용 하여 hbase 에 데이터를 효율적으로 넣거나 가져올 수 있다.

Hbase 대신 java, hbase API 사용 가능