이번 강좌에서는 하둡 에코시스템에서 데이터 웨어하우징 도구로 널리 사용되는 Hive에 대해 알아보겠다.
Hive는 SQL-like 쿼리를 사용해 하둡 분산 저장소에서 데이터를 처리하고 분석할 수 있도록 도와준다.
이번 시간에는 Hive의 개념과 설치, 그리고 기본적인 사용법을 설명하겠다.
Hive는 하둡에서 SQL과 유사한 언어인 HiveQL을 통해 대규모 데이터를 분석할 수 있는 도구다.
Hive는 MapReduce 작업을 추상화하여 사용자가 복잡한 코드를 작성할 필요 없이 SQL로 데이터를 처리할 수 있게 도와준다.
Hive는 대규모 데이터를 효율적으로 처리하며, 하둡 HDFS에 저장된 데이터를 대상으로 쿼리를 실행한다.
Hive를 설치하려면 하둡이 먼저 설치되어 있어야 한다.
하둡이 설치된 상태에서 Hive를 설치하는 절차는 다음과 같다.
Hive를 설치하기 전에 Java, Hadoop, MySQL 등이 설치되어 있어야 한다.
Hive의 메타데이터를 저장하기 위해 MySQL을 설치하고 설정하는 과정도 필요하다.
Java는 Hive 실행에 필수적인 요소다.
다음 명령어로 Java 설치를 확인한다:
java -version
Java가 설치되어 있지 않다면 설치해 주자.
Hadoop이 설치되어 있어야 하며, 하둡 네임노드(NameNode)와 데이터노드(DataNode)가 실행 중이어야 한다.
hdfs dfs -ls /
이 명령어가 제대로 작동하는지 확인하고, 하둡 클러스터가 정상적으로 작동하고 있는지 확인하자.
Hive는 아파치 소프트웨어 재단에서 제공하는 오픈소스 프로젝트다.
최신 버전의 Hive를 다운로드받고 설치해보자.
Hive 최신 버전은 다음 URL에서 다운로드할 수 있다:
https://hive.apache.org/downloads.html
cd /opt/
wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
tar -xvzf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin hive
환경 변수 설정을 위해 .bashrc
파일에 Hive 경로를 추가한다.
nano ~/.bashrc
다음 줄을 추가한 후, 저장하고 나가자:
export HIVE_HOME=/opt/hive
export PATH=$HIVE_HOME/bin:$PATH
변경 사항을 적용하기 위해 source
명령어를 사용한다.
source ~/.bashrc
Hive는 메타스토어(Metastore)로서 MySQL을 사용한다. MySQL을 설치하고 Hive와 연결하는 과정을 보자.
sudo apt-get install mysql-server
sudo service mysql start
MySQL에 접속하여 Hive용 데이터베이스를 생성한다.
mysql -u root -p
CREATE DATABASE metastore;
CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'hivepassword';
GRANT ALL PRIVILEGES ON metastore.* TO 'hiveuser'@'localhost';
FLUSH PRIVILEGES;
Hive가 MySQL과 통신할 수 있도록 설정 파일을 수정하자.
Hive 설치 경로의 hive-site.xml
파일을 설정한다.
cp $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml
nano $HIVE_HOME/conf/hive-site.xml
hive-site.xml
에 다음 내용을 추가하여 MySQL 설정을 한다.
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/metastore</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hiveuser</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hivepassword</value>
</property>
MySQL과 Hive를 연결하기 위해 JDBC 드라이버를 다운로드하여 hive/lib
디렉토리에 복사한다.
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz
tar -xvzf mysql-connector-java-8.0.23.tar.gz
cp mysql-connector-java-8.0.23/mysql-connector-java-8.0.23.jar $HIVE_HOME/lib/
Hive 메타스토어를 초기화하여 MySQL과의 연결을 테스트한다.
schematool -dbType mysql -initSchema
이 명령어가 성공적으로 실행되면 Hive가 MySQL에 메타데이터를 저장할 수 있는 환경이 완성된다.
Hive 설치가 완료되었다면 이제 기본적인 Hive 사용법을 알아보자.
다음 명령어로 Hive CLI에 접속할 수 있다.
hive
Hive 셸이 실행되면 SQL-like 쿼리를 실행할 수 있는 환경이 제공된다.
Hive에서 테이블을 생성하려면 CREATE TABLE
문을 사용한다.
CREATE TABLE employee (
id INT,
name STRING,
salary FLOAT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
HDFS에 저장된 데이터를 Hive 테이블로 로드할 수 있다.
hdfs dfs -put /local/path/to/employee.csv /user/hive/warehouse/
LOAD DATA INPATH '/user/hive/warehouse/employee.csv' INTO TABLE employee;
Hive에서 SQL-like 쿼리를 사용하여 데이터를 조회할 수 있다.
SELECT * FROM employee;
이외에도 다양한 집계 함수와 조인을 사용할 수 있다.
SELECT name, salary FROM employee WHERE salary > 5000;
Hive는 웹 UI를 통해 관리할 수 있다. Hive Beeline 인터페이스를 사용하여 메타스토어 상태를 확인하거나 쿼리를 실행할 수 있다.
beeline
이번 강좌에서는 Hive의 개념과 설치, 기본 사용법을 다뤘다. Hive는 하둡 분산 파일 시스템에서 SQL-like 쿼리를 통해 데이터를 쉽게 분석할 수 있게 해주며, 대규모 데이터 처리에서 매우 유용한 도구다. 다음 강좌에서는 HiveQL을 더 깊이 이해하고 복잡한 쿼리 실행 방법에 대해 다루겠다.