Ubuntu Kylin 기반 Apache Hive 데이터 웨어하우스 구축 가이드

Apache Hive 개요

Apache Hive는 Hadoop 기반의 데이터 웨어하우스 인프라로, 구조화된 데이터 파일을 테이블 형태로 관리하고 SQL과 유사한 쿼리 언어인 HQL(Hive Query Language)을 통해 데이터를 조회할 수 있게 해줍니다. 내부적으로 HQL은 MapReduce 작업으로 변환되어 Hadoop 클러스터에서 실행됩니다.

Hive의 주요 특징

  • 장점: SQL 익숙한 사용자라면 러닝 커브가 낮으며, 복잡한 MapReduce 코드를 직접 작성하지 않고도 대규모 데이터 통계 및 분석이 가능합니다.
  • 단점: 모든 쿼리가 MapReduce 작업을 거치기 때문에 실시간 처리에 비해 지연 시간(Latency)이 발생할 수 있습니다.
  • 특성: 주로 데이터 분석 및 배치 처리에 최적화되어 있으며, 한 번 기록하고 여러 번 읽는(Write-once, Read-many) 방식입니다. 개별 레코드의 수정이나 삭제는 지원하지 않으며 전체 데이터를 덮어쓰는 방식을 사용합니다.

Hive와 관계형 데이터베이스(RDBMS) 비교

비교 항목 Apache Hive (HQL) 전형적인 RDBMS (SQL)
저장 위치 HDFS (분산 파일 시스템) 로컬 파일 시스템 (Raw Device)
데이터 형식 사용자 정의 가능 (Schema on Read) 시스템 결정 (Schema on Write)
데이터 업데이트 제한적 (Overwrite 방식) 지원 (Update, Delete)
인덱스 일부 지원 (상대적으로 약함) 강력한 인덱스 기능
실행 엔진 MapReduce / Tez / Spark Database Executor
확장성 매우 높음 상대적으로 낮음

Hive 설치 및 환경 설정

1. Hive 바이너리 다운로드 및 압축 해제

Apache Hive 공식 홈페이지에서 적절한 버전을 다운로드한 뒤, 원하는 경로에 압축을 해제합니다.

tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /usr/local
mv /usr/local/apache-hive-1.2.1-bin /usr/local/hive

2. 시스템 환경 변수 설정

/etc/profile 파일을 열어 Hive 실행 경로를 등록합니다.

# Hive Environment
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

설정을 적용하기 위해 다음 명령어를 실행합니다.

source /etc/profile

3. Hive 설정 파일 수정

먼저 Hive 설정 디렉터리로 이동하여 템플릿 파일을 복사합니다.

cd $HIVE_HOME/conf
cp hive-env.sh.template hive-env.sh

hive-env.sh 파일을 편집하여 Java 및 Hadoop 경로를 지정합니다.

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive

4. 메타스토어(Metastore) 구성을 위한 hive-site.xml 설정

Hive는 기본적으로 Derby를 메타데이터 저장소로 사용하지만, 다중 접속 환경을 위해 MySQL을 사용하는 것이 권장됩니다. hive-site.xml 파일을 생성하고 다음과 같이 작성합니다.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive_admin</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive_pass</value>
  </property>
</configuration>

MySQL 데이터베이스 구성

Hive 메타데이터를 저장할 MySQL 데이터베이스와 사용자를 생성합니다.

# MySQL 접속
mysql -u root -p

# 데이터베이스 생성
CREATE DATABASE hive_metastore;

# 사용자 생성 및 권한 부여
CREATE USER 'hive_admin'@'localhost' IDENTIFIED BY 'hive_pass';
GRANT ALL PRIVILEGES ON hive_metastore.* TO 'hive_admin'@'localhost';
GRANT ALL PRIVILEGES ON hive_metastore.* TO 'hive_admin'@'%' IDENTIFIED BY 'hive_pass';
FLUSH PRIVILEGES;

※ 주의: MySQL JDBC 커넥터(jar 파일)를 다운로드하여 $HIVE_HOME/lib 디렉터리에 반드시 추가해야 합니다.

Hive 실행

모든 설정이 완료되면 터미널에서 다음 명령어를 입력하여 Hive CLI에 접속합니다.

hive

태그: Apache Hive hadoop Ubuntu Kylin MySQL metastore

8월 4일 02:48에 게시됨