일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 분산분석
- join
- 밀도기반
- 분포
- list
- k-means
- pca
- merge
- hive
- T-검정
- distribution
- 교차검증
- SPLIT
- DBSCAN
- cross validation
- Python
- DataFrame
- 다중공선성
- SQL on 하둡
- dict
- 병렬 쿼리 시스템
- 딕셔너리
- p-value
- Sawzall
- 유사도
- 데이터프레임
- 가설검정
- 하둡
- 결정계수
- pig
- Today
- Total
one of a kind scene
4-2 데이터 처리 기술_분산 컴퓨팅 기술 part2_병렬 쿼리 시스템 본문
분산 컴퓨팅 기술 part2_병렬 쿼리 시스템(Sawzall, Pig, Hive)
병렬 쿼리 시스템 : 사용자가 MapReduce를 쉽게 사용할 수 있도록 새로운 쿼리 언어로 추상화된 시스템 → Sawzall, pig, Hive 등이 있으며, 실시간 데이터 처리 기술인 SQL on Hadoop과는 다르다
1. 병렬 쿼리 시스템의 개요
• 구글이나 하둡의 MapReduce는 개발자들에게 구현하려는 알고리즘에만 포커싱 할 수 있도록 간단한 프로그래밍 모델을 제공
• But, MapReduce 코딩도 어려워하는 경우가 발생
• 따라서, 직접 코딩하지 않고도 쉽고 빠르게 서비스 혹은 알고리즘을 구현하고 적용할 수 있는 환경에 대한 필요성이 대두
• 사용자에게 친숙한 쿼리 인터페이스를 통해 병렬 처리를 할 수 있는 시스템들이 개발됨
• 대표적인 예로 구글의 Sawzall, 야후의 Pig, 아파치의 Hive 등이 있음
• 사용자가 MapReduce를 쉽게 사용할 수 있도록 새로운 쿼리 언어로 추상화된 시스템
2. 구글 Sawzall
• 구글 Sawzall은 MapReduce를 추상화한 최초의 스크립트 형태 병렬 쿼리 언어
• MapReduce에 대한 이해가 없는 사용자들도 더욱 쉽게 병렬 프로그래밍을 할 수 있게 되었음.
• Pig나 Hive도 개발배경과 기본적인 개념은 Sawzall과 유사
3. 아파치 Pig
① 정의 및 특징
• 아파치 Pig는 야후에서 개발하였으며, 데이터 처리를 위한 고차원 언어(추상화된 병렬 처리 언어)
• 네이티브 MapReduce와 비교한 성능이 90% 수준까지 올라옴
② 개발 배경
• MapReduce는 큰 틀에서 Map과 Reduce 두 단계로만 이루어진 단순한 병렬 모델이지만, 실제 대부분의 업무는 한번의 MapReduce 작업으로 끝나지 않는 경우가 많음
• 개발자들이 알고리즘 개발 후 공유가 잘 되지 않아 유사한 알고리즘을 중복 개발하는 경우가 많았음
• 이로인해 의미적으로는 SQL과 비슷하지만 새로운 언어인 Pig를 정의하게 됨
• MapReduce는 무공유(Shared Nothing) 구조이기 때문에 일반 RDB로는 쉽게 해결할 수 있는 Join연산을 매우 복잡하게 처리하므로 위 문제를 해결하기 위해 개발자는 약 400라인에 가까운 코드를 프로그래밍 해야함. 하지만, Pig를 이용하면 단 10라인의 코드로 간단히 해결 가능
4. 아파치 Hive
① 정의 및 특징
• Hive는 페이스북에서 개발한 데이터 웨어하우징 인프라이며, 하파치 내의 하둡 서브 프로젝트로 등록돼 개발됨
• Pig와 마친가지로 하둡 플랫폼 위에서 동작, 사용자가 쉽게 사용할 수 있도록 SQL 기반의 쿼리 언어와 JDBC를 지원
• 아파치 Hive는 맵리듀스의 모든 기능을 지원
② 개발 배경
• 페이스북 초기에는 사용 DBMS 기반의 데이터 웨어하우스 시스템 운영
• 시간이 지나면서 운영데이터는 수백 TB 규모로 늘어나 관리 및 운영비용 절감 필요
• 상용 DBMS → 하둡 으로 교체하는 과정에서 필요한 기능들을 구현하면서 지금의 Hive라는 시스템이 만들어짐
③ 하이브 아키텍처
• 하이브의 구성요소 중에서 MetaStore는 Raw File들의 콘텐츠를 일종의 테이블 내 칼럼처럼 구조화된(Structured) 형태로 관리할 수 있게 해주는 스키마 저장소
• 별도의 DBS를 설정하지 않으면 Embedded Derby를 기본 데이터베이스로 사용
• 앞단에 커맨드 라인 인터페이스(CLI)가 있는데, 사용자는 CLI를 통해 Join이나 Group By 같은 SQl 쿼리를 사용
• 그러면, 파서(Parser)에서 쿼리를 받아 구문을 분석 → MetaStore에서 테이블과 파티션 정보를 참조해 Execution Plan을 만듦
• Execution Engine은 하둡의 JobTracker와 네임노드와 통신을 담당하는 창구 역할을 하면서 MapReduce 작업을 실행하고 파일을 관리함
• 아래 그림에서 SerDe라는 것은 Serializer와 Deserializer의 줄임말이며, 테이블의 로우나 칼럼의 구분자 등 저장 포맷을 정의해주는 컴포넌트. 하둡의 InputFormat과 OutputFormat에 해당한다고 볼 수 있음.
④ 하이브의 언어 모델
DDL |
DML (Data Manipulation Language) |
Query |
- 테이블 생성, 삭제, 변경 명령 |
- 로컬에서 DFS로 데이터 로드 (LOAD DATA) - 쿼리 결과를 테이블이나 로컬 파일 시스템, DFS에 저장 |
- Select, Group by, Sort by, Joins, Union, Sub Queries, Sampling, Transform |
'ADP > 이론' 카테고리의 다른 글
4-3 데이터 처리 기술_클라우드 인프라 기술 part1_클라우드 컴퓨팅 (0) | 2020.01.22 |
---|---|
4-2 데이터 처리 기술_분산 컴퓨팅 기술 part3_SQL on 하둡(임팔라) (0) | 2019.12.23 |
4-2 데이터 처리 기술_분산 컴퓨팅 기술 part1_MapReduce (0) | 2019.12.16 |
4-2 데이터 처리 기술_분산 데이터 저장 기술 part3_NoSQL 데이터베이스 (0) | 2019.11.22 |
4-2 데이터 처리 기술_분산 데이터 저장 기술 part2_데이터베이스 클러스터 (0) | 2019.11.22 |