Hive Connector
Apache Hive 데이터 웨어하우스에 저장된 데이터 쿼리를 쿼리 할 수 있다. Trino에서 Hive 런타임 없이 Hive에 의해 지정된 규칙에 따라 객체 스토리지에서 데이터를 읽기 위해 사용한다.
Trino는 Hadoop, Spark 또는 Hive 인프라에서 느린 쿼리 처리 속도를 피하기 위해 사용하기 때문에 Hive Connector가 있다는 게 혼란스러울 수 있는데, 관련해서 정리된 공식 문서를 요약해 둔다.
Hive 구조
Hive 커넥터를 이해하기 위해서는 Hive 구조와 구성 요소를 알아야 한다.
- Runtime : HiveQL을 파일 시스템에 저장된 파일에서 실행하는 MapReduce 작업으로 변환하는 쿼리 엔진 로직을 포함한다.
- Storage : 다양한 형식과 인덱스 구조로 파일을 저장하고 불러온다. Json, CSV와 같은 형식부터 ORC, parquet과 같은 열 형식을 포함해 복잡한 파일까지 다룰 수 있다.
- Hive Metastore : 파일을 처리하는데 필요한 런타임의 SQL 테이블과 스토리지 구성 요소의 파일 및 디렉터리 매핑 정보를 저장한다. 테이블 열, 파일 위치, 파일 형식 등의 파일에 대한 메타데이터를 관리한다. 보통 메타스토어라고 줄여서 부른다.
- Hive 데이터 구성 스펙 : 하이브 내 코드에만 문서가 존재하며, 다른 시스템과의 호환성을 위해 Trino 같은 다른 시스템에서 사용할 수 있도록 리버스 엔지니어링되었다.
Trino는 런타임을 제외한 모든 요소를 사용한다.
Trino 구조
Trino 구조에서 변경되는 부분은 Runtime이다. 런타임을 제외한 모든 요소를 재사용한다.
스토리지 구성 요소와 관계없이 런타임이 HMS를 사용하기 때문에 Hive connector라고 한다. Hive 커넥터와 Hive Metastore만 있으면, 스토리지에 있는 객체의 메타데이터를 관리할 수 있다.
Hive Metastore
Trino에서 Hive 커넥터를 사용할 때 유일하게 사용되는 Hive 프로세스.
Hive Metastore 자체는 Thrift 프로토콜을 사용하는 바이너리 API가 포함된 간단한 서비스라고 이해할 수 있다. PostgreSQL, MySQL 또는 MariaDB와 같은 RDBMS에 저장된 메타데이터를 업데이트하는데, AWS Glue 등으로 메타스토어를 대체할 수 있다.
참고 문서
https://trino.io/episodes/29.html
https://trino.io/blog/2020/10/20/intro-to-hive-connector.html