빅데이터 분산 컴퓨팅
하둡
- 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 사용 가능