1. Hive란?
-하이브는 하둡 에코시스템 중에서 데이터를 모델링하고 프로세싱하는 경우 가장 많이 사용하는 데이터 웨어하우징용 솔루션입니다.
-RDB의 데이터베이스, 테이블과 같은 형태로 HDFS에 저장된 데이터의 구조를 정의하는 방법을 제공하며, 이 데이터를 대상으로 SQL과 유사한 HiveQL 쿼리를 이용하여 데이터를 조회하는 방법을 제공합니다.
*가장 큰 특징으로는 메타스토어라는 것이 존재하는데, 하이브는 기존의 RDB와는 다르게 미리 스키마를 정의하고 그 틀에 맞게 데이터를 입력하는 것이 아닌, 데이터를 저장하고 거기에 스키마를 입히는(메타스토어에 입력하는) 것이 가장 큰 특징입니다.
2. Hive 구성요소
- UI
- 사용자가 쿼리 및 기타 작업을 시스템에 제출하는 사용자 인터페이스
- CLI, Beeline, JDBC 등
- Driver
- 쿼리를 입력받고 작업을 처리
- 사용자 세션을 구현하고, JDBC/ODBC 인터페이스 API 제공
- Compiler
- 메타 스토어를 참고하여 쿼리 구문을 분석하고 실행계획을 생성
- Metastore
- 디비, 테이블, 파티션의 정보를 저장
- Execution Engine
- 컴파일러에 의해 생성된 실행 계획을 실행
하이브 실행 순서
- 사용자가 제출한 SQL문을 드라이버가 컴파일러에 요청하여 메타스토어의 정보를 이용해 처리에 적합한 형태로 컴파일
- 컴파일된 SQL을 실행엔진으로 실행
- 리소스 매니저가 클러스터의 자원을 적절히 활용하여 실행
- 실행 중 사용하는 원천데이터는 HDFS등의 저장장치를 이용
- 실행결과를 사용자에게 반환
3. 등장 배경
-하이브는 SQL을 하둡에서 사용하기 위한 프로젝트로 시작됐습니다.
-하둡의 MR을 java로 표현하기보다는 익숙한 SQL로써 데이터를 핸들링하는 것이 편하기에 나오게 된 개념입니다.
4. 버전별 Hive 특징
1) Hive 1.0
- SQL을 이용한 맵리듀스 처리
- 파일 데이터의 논리적 표현
- 빅데이터의 배치 처리를 목표
- MR engine을 사용(default engine이 MR)
2) Hive 2.0
- LLAP(Live Long and Process) 구조 추가
- Spark 지원 강화
- CBO 강화
- HPLSQL 추가
- Tez Engine이 추가(default engine이 Tez로 변경)
*LLAP란
-작업을 실행한 데몬을 계속 유지하여, 핫 데이터를 캐슁하여 할 수 있어 빠른 속도로 데이터를 처리할 수 있습니다.
-LLAP는 작업을 도와주는 보조도구 입니다. 실제 작업을 처리하는 MR, TEZ 같은 작업 엔진이 아닙니다.
-또한 HDFS같이 데이터를 영구히 저장하지 않습니다. 사용자가 작업 모드를 선택할 수 있으며, TEZ엔진에서만 사용할 수 있습니다.
*HPLSQL란
오라클의 PL/SQL과 비슷한 Procedural SQL을 지원합니다. 재사용 가능한 스크립트 작성을 목표로 개발 되었습니다. 아래와 같이 FOR를 이용한 루프문이나 커서등을 이용할 수 있습니다.
*TEZ engine이란?
-테즈(TEZ)는 YARN 기반의 비동기 사이클 그래프 프레임워크입니다.
-하이브에서 맵리듀스 대신 실행엔진으로 사용할 수 있습니다.
-맵리듀스는 맵단계에서 데이터를 읽어서 처리하고, 리듀스 단계에서 처리 결과를 저장합니다.
-하나의 작업이 여러 단계의 맵, 리듀스를 거치게 되면 중간 작업 결과를 HDFS에 쓰고, 다시 맵단계에서 파일을 읽어서 처리하게 됩니다.
-작업 중간 임시 데이터도 디스크에 쓰게 되어 IO 작업으로 인한 오버헤드가 많았습니다.
-테즈는 맵단계 처리 결과를 메모리에 저장하고, 이를 리듀스 단계로 바로 전달합니다. 리듀스 작업의 결과를 맵단계를 거치지 않고 리듀스 단계로 전달하여 IO 오버헤드를 줄여서 속도를 높일수 있습니다.
-MR에 비해 30% 정도 향상된 성능을 보입니다.
3) Hive 3.0
-맵리듀스 엔진, 하이브 CLI를 제거하고 TEZ엔진과 비라인을 이용하여 작업을 처리하도록 수정
- 롤을 이용한 작업 상태 관리(workload management)
- 트랜잭션 처리 강화
- 구체화 뷰(Materialized View) 추가
- 쿼리 결과를 캐슁하여 더 빠른속도로 작업 가능
- 테이블 정보 관리 데이터베이스 추가
출처:
댓글