연관토픽
개념
- HDFS에 저장된 데이터를 SQL 혹은 SQL과 유사한 형태로 처리를 요청하고 분산 처리하는 시스템
- 실시간 조회 및 처리에 대한 제약 극복하기 위한 실시간 SQL 질의 분석 기술
SQL On Hadoop 분류기준
(1) Interactive Query vs. Long Time Query
- 인터랙티브 쿼리(Interactive Query)는 밀리초 혹은 수초 내에 끝낼 수 있는 Short Time Query, low latency 지원
- Long Time Query는 쿼리를 실행하는데 오랜 시간 소요되는 쿼리
(2) Data Warehouse Infrastructure vs. Distributed Query Engine
- Long Time Query 지원여부는 해당 시스템이 데이터 웨어하우스 인프라스트럭처(Data Warehouse Infrastructure)에 적합한 시스템인지, 아니면 빠른 쿼리만을 처리하기 위한 분산 쿼리 엔진(Distributed Query Engine)인지를 결정
Data Warehouse Infrastructure | Distribtued Query Engine |
- 수 시간 이상 걸리는 쿼리 수행하는데 최적화 - ETL 작업 : 데이터 변환 및 노이즈 제거, 파티셔닝 - 다수 데이터 소스에 대한 통합 - 애드혹 질의(ad-hoc query) - 타조(Tajo), 하이브(Hive) |
- 수초에서 수분까지 걸리는 쿼리를 수행하는데 최적화 - 빠른 응답을 가지는 애드혹 질의 - 중간 데이터 크기와 지원에 따라 질의가 다소 제약됨 - 임팔라(Impala), 프레스토(Presto) |
Long Time Query 지원을 위한 설계 포인트
구분 | 설명 |
내고장성 (Fault Tolerance) |
- 쿼리 처리 중 발생하는 오류를 처리해 완료하는 기능 - 내고장성을 지원할 경우 쿼리 처리 중간에 생성되는 데이터를 병합해야 하는데, 디스크 부하 야기 가능 - 내고장성과 시스템의 처리량은 trade-off 관계 |
다이나믹 스케줄링 (Dynamic Scheduling) |
- 스케줄링 기법에는 고정 스케줄링(Fixed Scheduling)과 다이나믹 스케줄링(Dynamic Scheduling) - 고정 스케줄링은 작업을 시작할 때 클러스터 노드에게 균등하게 분할된 작업 한번에 할당 - 다이나믹 스케줄링은 각 노드에 노드가 한번에 실행할 수 있는 태스크를 우선 배분하고, 노드가 할당받은 태스크가 완료되면 다시 태스크 할당 |
SQL On Hadoop 기술
구분 | 설명 |
아파치 드릴(Drill) | - 하둡 전문 회사인 맵알(MapR)이 추축인 프로젝트 - 드레멜의 아키텍처와 기능을 동일하게 구현한 오픈 소스 버전의 드레멜 |
아파치 스팅거(Stinger) | - 하둡 전문 회사인 호튼웍스에서 개발을 주도하고 있으며, 기존의 하이브 코드를 최대한 이용하여 성능을 개선하는 식으로 개발이 진행되고 있음 |
샤크(Shark) | - 인메모리 기반의 대용량 데이터웨어하우스 시스템이며, 하이브와 호환되기 때문에 하이브 SQL 질의와 사용자 정의 함수를 사용할 수 있음 |
아파치 타조(Tajo) | - 고려대 대학원에서 시작된 프로젝트로 국내 빅데이터 전문회사인 그루터(Gruter)가 합류하여 개발을 진행하고 있고, 아파치 인큐베이션 프로젝트로 등록되어 있음 |
임팔라(Impala) | - 하둡 전문 회사인 클라우데라(Cloudera)에서 개발을 주도 하고 있음 |
호크(HAWQ) | - EMC에서 분사한 하둡 전문 회사인 피보탈(Pivotal)에서 개발한 프로젝트로 상용과 커뮤니티의 2가지 버전 제공 |
프레스토 | - 페이스북에서 자체적으로 개발하여 사용하고 있는 하둡기반 데이터웨어 하우징 엔진(아파치 라이선스) |
SQL On Haoop 기술비교(Tajo vs. Impala vs. Hive vs. Presto)
구분 | Fault Tolerance | Dynamic Scheduling | Long Time Query | Low Latency |
Tajo(타조) | O | O | O | O |
Impala(임팔라) | X | X | X | O |
Hive(하이브) | O | O | O | O |
Presto(프로스토) | X | X | X | O |
Reference