본문으로 바로가기

| Apache Hive 의 이해

오늘부터 빅데이터 엔지니어링에 가장 많이 활용되는 hive에 대해서 소개할까 한다.

독자층은 Hive 기초 과정부터 중급까지 다소 넓게 가져갈까 한다.


hive는 사실 빅데이터 오픈소스 진영에서 가장 많이 활용되는 SQL on Hadoop 요소로써 많은 사용자들이 활용중인 요소다.

우선 hive의 이해에 앞서 apache hive 공식 site의 설명을 들어보자

공식 Site URL : https://hive.apache.org/

The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in storage. A command line tool and JDBC driver are provided to connect users to Hive.

여러 정의들이 있으나 필자가 생각하기에 hive를 설명하기 가장 편한 용어는 "hadoop의 SQL" 이라고 간단히 표현하는것이 독자들이 이해하기 편하지 않을까 한다.

SQL은 너무도 잘 알려진 정형화된 Query 언어이다. Hadoop은 HDFS 즉 하둡 분산 파일 시스템과 맵리듀스(MR)이 합쳐진 용어인데, 이 Hadoop에서 SQL로 편하게 질의하고 데이터를 가져올 수 있는 툴 정도로 이해하면 된다.

참고로 SQL을 모르는 독자라면 이미 많은 블로깅이나 서적에서 자세하게 소개하기 때문에 다른곳을 참고하기 바란다.


| Hive Architecture 이해

Hive의 이해를 위해 먼저 Architecture를 간략히 살펴보자


위 그림에 여러 박스들이 있으나 복잡할 것 없다. 

가장 중요한 것 세 가지만 살펴보자

1. Meta store : Meta Store는 물리적으로는 Mysql이나 Oracle 등의 DB로 구성된다.  Meta Store에 저장되는 것은 Hive가 구동될 때 필요로 하는 테이블의 스키마 구조나 다양한 설정값들이 저장된다.  때문에 hive를 구성하는데 가장 중요한 요소중의 하나이며, 만약 Meta Store가 깨지거나 장애가 생길경우 hive는 정상적으로 구동되지 않는다고 봐야한다.  필자도 다년간의 Hadoop 운영 경험을 갖고 있으나 많은 Hadoop 운영자들이 Meta Store의 back up 계획을 세워놓지 않고 single 서버에 설치하여 활용하는 것을 다수 목격했다. 사실 Back up 개념조차 갖지 못하는 운영자도 많이봤다.  다시 말하지만 Hive의 Meta Store의 장애나 데이터 유실시 Hive의 주요 정보들은 복구할 수 없다. 따라서 반드시 Back up 정책을 세워두기 바란다.  (너무도 중요하기에 궁서체로 썼다.)


2. Hive Server : Hive Server 는 Hive에 질의하는 가장 앞단의 서버라고 보면 된다. 쉽게 말해 JDBC나 ODBC로 부터 질의를 받아서 이를 Driver에 전달하는 역할이다.  Hive Server를 통해야 여러 권한 체크나, 접근성을 검증할 수 있다. Hive Server 상단 박스에 CLI(Comment Line Interface)가 보일텐데 CLI를 통할경우 바로 Dirver로 접속되기 때문에 기타 권한이나 제어권을 상실한체 바로 모든 컨트롤이 가능해 진다. CLI는 본 블로깅에서 실습 용도로 많이 활용하게 될 텐데 운영 모드에서는 권장하지 않는 접속 방법이다.  만약 이 글을 읽는 독자가 Hadoop 운영과 관련이 있다면 CLI가 아닌 Hive Server에 접근하는 방안을 고려하기를 권장한다.

여담이지만, 안타깝게도 Hive 접속시 아직도 많은 Hadoop 운영 상황에서 CLI 모드가 편한다는 이유로 그대로 활용중이다....   왜 안타까운지는 데이터 몇번 날려 먹어야 알듯.. 


3. Driver : Driver는 Hive의 엔진으로써 여러 질의에 대해 Optimizer를 통해 Hive SQL의 연산 방식을 계산하고 MR, Spark 등의 여러 엔진등과 연동하는 역할을 담당한다.   사실 Driver에 대해 사용자가 깊게 생각할 필요는 없겠으나 가장 핵심중의 핵심이기 때문에 한번쯤은 보고 넘어가자.


간단히 Hive Architecture에 대해 살펴 보았다.

첨언하자면, Hive는 HDFS의 데이터에 대해서 Meta Store에 저장된 스키마(테이블) 를 기준으로 데이터를 MR, Spark 등의 기타 분산 엔진등을 통해 처리하고 이를 사용자에게 결과를 정형화된(테이블 화된) 결과를 제공하는 SQL 툴 이라고 보면 된다.


Hive가 빅데이터 엔지니어링의 기본중의 기본이라고 말하는 이유는, Hadoop 진영의 오픈소스에서 가장 오래 활용되었을 뿐 아니라 SQL 의 자유도나 기타 하둡 Eco 라 불리는 오픈소스 엔진과의 융합성도 좋기 때문이다. 이 글을 읽는 독자가 Data Scientist를 꿈구는 분이라면 빅데이터를 다루는 Hive는 반드시 이해하고 있어야 한다.


Query 엔진은 각 엔진마다의 성격이 다르기 때문에 같은 SQL 이라 하더라도 성능에 많은 차이가 생긴다. 

앞으로 본 블로깅을 통해 차차 하나씩 알아가 보자.



공감버튼이 큰 힘이 됩니다.



댓글을 달아 주세요

  1. BlogIcon S00ahKim 2019.10.17 17:03 신고

    공부하다가 도움이 됐습니다!