Hive 아키텍처
일반적인 SQL문과 유사한 HiveQL을 사용해서 MapReduce를 사용할 수 있게 해줌
실행 과정
- Client가 쿼리 실행
- Driver가 Compiler에게 쿼리플랜 요청
- Compiler가 쿼리를 Mapreduce코드로 변환
- 이때 Metastore를 통해 MetaData를 가져와서 사용 후 쿼리플랜 생성
- 생성한 쿼리플랜을 Execution Engine에 전달
- Execution Engine은 Hadoop에 Mapreduce job을 요청 후 결과가 나오면 받아서 전달
저장소 역할의 Metastore Database와 저장소를 연갈하는 Metastore Process가 있음
구성방법에 따라 3가지 형태가 있음
1. Embedded Mode
- Hive Server, Metastore Process, Metastore Database가 동일 JVM에서 동작
- 1개의 요청만 처리할 수 있음
- Metastore Database로는 Derby Database(hive 설치 시 기본으로 설정)사용
2. Local Mode
- Hive Server, Metastore Process는 동일 JVM에서 작동
- Metastore Database가 모두 다른 JVM, 다른 서버에서 동작는 다른 JVM 또는 다른 서버에서 동작
- 한 번에 여러개의 요청 처리 가능
- Metastore Database로 MySQL, MariaDB등을 사용
- hive-site.xml 설정

3. Remote Mode
- Hive Server, Metastore Process, Metastore Database가 모두 다른 JVM, 다른 서버에서 동작
- Metastore Process가 따로 동작하면서 Hive뿐만 아니라 다양한 Client(Impala, Presto 등)의 요청을 받을 수 있음
- Client와 Metasotre Process(Server)는 Thrift 통신을 함
- Metastore Database로 Mysql, mariaDB를 사용
- hive-site.xml 추가 설정
