Apache Hive
Hadoop Ecosystem에서 데이터를 모델링하고 프로세싱할 때 가장 많이 사용하는 데이터 웨어하우스 솔루션
HDFS에 저장된 데이터를 RDB 데이터베이스 테이블과 같은 구조로 정의하는 방법을 제공한다. Hive를 사용하면 하둡 에코시스템에 저장된 거대한 데이터세트를 SQL 기반으로 쿼리하고 처리할 수 있게 된다.
💡 Hadoop Ecosystem
Apache Hadoop 소프트웨어 라이브러리를 이루는 다양한 구성 요소.
HDFS, Hive, Pig, YARN, MapReduce 등이 해당된다.
💡 데이터 웨어하우스
여러 소스에서 가져온 구조화된 데이터와 반구조화된 데이터를 분석하고 보고하는 데 사용되는 엔터프라이즈 시스템
구성 요소
Hive는 다음과 같은 구조로 되어 있다.
- UI : 사용자가 Hive에 쿼리를 제출할 수 있는 사용자 인터페이스를 제공한다. CLI, Beeline 등이 해당된다.
- Driver : 쿼리를 받고 쿼리의 수명주기를 관리하는 컨트롤러에 해당된다. 세션을 생성하여 쿼리문 실행을 시작하고, 실행 과정과 수명주기를 모니터링한다. 쿼리를 실행하면서 발생하는 메타데이터를 저장하고 결과를 수집한다.
- Complier : 쿼리를 분석하여 쿼리를 실행 계획(execution plan)으로 변환한다. 실행 계획은 결과를 얻기 위한 실행 엔진의 task와 step을 포함한다.
- Metastore : 각 테이블의 스키마, location과 같은 메타데이터를 관리한다.
동작 순서
1. 사용자가 제출한 SQL을 드라이버가 컴파일러에 요청하여 메타스토어를 이용해 처리해 적합한 형태로 컴파일한다.
2. 컴파일한 SQL을 실행 엔진으로 실행한다.
3. 리소스 매니저가 클러스터의 자원을 적절히 활용하여 실행한다.
4. 실행 중 사용하는 원천데이터는 HDFS 등의 저장장치를 이용한다.
5. 실행결과를 사용자에게 반환한다.