대기 시간이 긴 일부 애플리케이션(오프라인 개발)에 적합한 Hadoop 기반 데이터 웨어하우스는 Hadoop 파일에 저장된 정형 및 반정형 데이터 파일을 데이터베이스 테이블에 매핑하고 테이블을 기반으로 SQL과 유사한 데이터를 제공할 수 있습니다. Hadoop 파일에 저장된 대규모 데이터 세트에 액세스하고 분석하기 위한 HQL(Hive Query Language)이라는 모델
Hive의 핵심은 HQL을 MapReduce 프로그램으로 변환한 다음 실행을 위해 Hadoop 클러스터에 프로그램을 제출하는 것입니다.
Hive 자체는 데이터를 저장하거나 계산하지 않으며 HDFS 및 MapReduce에 전적으로 의존합니다. Hive의 테이블은 순전히 논리적 테이블입니다.
데이터 웨어하우스란 무엇입니까?
데이터 웨어하우스 자체는 데이터를 "생성"하지 않으며 해당 데이터는 다른 외부 시스템에서 나옵니다.
동시에 데이터 웨어하우스 자체는 데이터를 "소비"할 필요가 없으며 결과는 다양한 외부 애플리케이션에 공개됩니다.
이것이 "공장"이 아닌 "창고"라고 불리는 이유입니다.
Hive 아키텍처 및 구성요소
메타스토어: 일반적으로 Mysql/derby와 같은 관계형 데이터베이스에 저장됩니다. Hive의 메타데이터에는 테이블 이름, 테이블의 열 및 파티션과 해당 속성, 테이블의 속성(외부 테이블인지 여부 등)이 포함됩니다. 테이블의 데이터가 위치한 디렉토리 등
운전사 : 구문 분석기, 계획 컴파일러, 최적화 프로그램 및 실행 프로그램을 포함한 드라이버입니다. 어휘 분석, 구문 분석, 컴파일, 최적화 및 쿼리 계획 생성을 통해 HQL 쿼리 문을 완성합니다. 생성된 쿼리 계획은 HDFS에 저장되고 이후 실행 엔진 호출에 의해 실행됩니다.
파서(SQL 파서): SQL 문자열을 추상 구문 트리 AST로 변환하고 AST에서 SQL 의미가 올바른지, 테이블이 존재하는지, 필드가 존재하는지 등의 구문 분석을 수행합니다.
컴파일러(물리적 계획): AST를 컴파일하여 DAG(논리적 실행 계획)를 생성합니다.
옵티마이저(쿼리 옵티마이저): 논리적 실행 계획을 최적화합니다.
실행: 논리적 실행 계획을 MapReduce/Spark 프로그램인 실행 가능한 물리적 계획으로 변환합니다.
HQL 실행 프로세스
요청을하다: UI에서 드라이버로의 실행 요청을 시작합니다.
실행 계획 가져오기: 드라이버는 실행 계획을 얻기 위해 사용자 요청을 컴파일러에 보냅니다.
메타데이터 가져오기: 컴파일러는 SQL 문의 관련 테이블 및 파티션 정보를 기반으로 Meta 저장소에서 관련 메타데이터를 가져옵니다.
메타데이터 반환: 메타 저장소는 해당 메타데이터를 컴파일러에 반환합니다.
반품 실행 계획: 테이블 및 파티션 메타데이터를 기반으로 SQL을 구문 분석하고 최적화하여 논리적 실행 계획을 생성합니다. 계획은 DAG 그래프이며 각 단계는 MapReduce 맵 또는 축소 작업에 해당합니다.
실행 계획을 실행합니다. 실행 계획을 실행 엔진으로 보내면 실행 엔진은 실행을 위해 Hadoop에 MapReduce 형태로 논리적 실행 계획을 제출합니다.