-
Hive MySQL Metastore 알아보기Hive 2023. 12. 17. 08:14728x90반응형
- 목차
소개.
Hive Metastore 의 Backend 로써 MySQL 를 사용하는 케이스에 대해서 알아보려고 합니다.
먼저 Hive 와 MySQL 를 연결시키는 과정부터 진행해보겠습니다.
Hive 와 MySQL 은 각각 Docker 환경에서 수행할 예정입니다.
먼저 MySQL 이 Hive 의 Metastore Backend 로써 동작할 수 있도록 Hive 가 사용할 User 와 Database 를 생성합니다.
User 는 hiveuser, Database 는 hive_metastore 로 이름지었습니다.
< Create User And Database >
cat <<EOF> /tmp/mysql-init-script.sql CREATE DATABASE hive_metastore; CREATE USER 'hiveuser'@'%' IDENTIFIED BY '1234'; GRANT ALL PRIVILEGES ON hive_metastore.* TO 'hiveuser'@'%'; FLUSH PRIVILEGES; EOF
< Run MySQL Container With Initial Script >
docker run -d --name mysql \ --mount type=bind,source=/tmp/mysql-init-script.sql,target=/docker-entrypoint-initdb.d/init.sql,readonly \ -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 mysql:8.0
< hive_metastore, hiveuser 확인하기 >
select user, host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | root | % | | hiveuser | localhost | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+ 6 rows in set (0.00 sec) show databases; +--------------------+ | Database | +--------------------+ | hive_metastore | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)
그리고 MySQL 과 연결할 Hive Container 를 생성합니다.
먼저 Hive 에 MySQL jdbc Connector jar 파일이 필요합니다.
그래서 아래 명령어를 통해서 MySQL JDBC Connector 를 다운로드합니다.
< Download MySQL JDBC Connector Jar >
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.2.0.tar.gz -O /tmp/mysql-connector-j-8.2.0.tar.gz tar -zxvf /tmp/mysql-connector-j-8.2.0.tar.gz rm /tmp/mysql-connector-j-8.2.0.tar.gz if test -f /tmp/mysql-connector-j-8.2.0/mysql-connector-j-8.2.0.jar; then echo exist; fi
< Hive Container 를 실행 >
env SERVICE_OPTS 를 통해서 MySQL Container 와 연결하고,
mount 옵션을 통해 MySQL JDBC Connector 를 추가합니다.
HIVE_METASTORE_DRIVER=com.mysql.cj.jdbc.Driver HIVE_METASTORE_CONNECTION_URL='jdbc:mysql://mysql:3306/hive_metastore?createDatabaseIfNotExist=true' HIVE_METASTORE_USER=hiveuser HIVE_METASTORE_PASSWORD=1234 docker run -d \ --name hive \ --env SERVICE_OPTS="-Djavax.jdo.option.ConnectionDriverName=$HIVE_METASTORE_DRIVER -Djavax.jdo.option.ConnectionURL=$HIVE_METASTORE_CONNECTION_URL -Djavax.jdo.option.ConnectionUserName=$HIVE_METASTORE_USER -Djavax.jdo.option.ConnectionPassword=$HIVE_METASTORE_PASSWORD" \ --link mysql:mysql \ --mount type=bind,source=/tmp/mysql-connector-j-8.2.0/mysql-connector-j-8.2.0.jar,target=/opt/hive/lib/mysql-connector-j-8.2.0.jar,readonly \ -p 9083:9083 \ apache/hive:3.1.3
아래와 같이 2개의 Container 가 생성되어야 합니다.
Hive - MySQL 연결 테스트해보기.
위 과정을 마치면 Hive 에서 MySQL 로의 연결을 확인해볼 수 있습니다.
아래 명령어를 실행하게 되면,
docker exec -it hive beeline -u 'jdbc:mysql://hiveuser:1234@mysql:3306/hive_metastore'
아래와 같이 Hive 의 Metastore Backend 로 MySQL 이 연결됨을 확인할 수 있습니다.
0: jdbc:mysql://mysql:3306/hive_metastore> show databases; +---------------------+ | Database | +---------------------+ | hive_metastore | | information_schema | | performance_schema | +---------------------+ 3 rows selected (0.104 seconds)
0: jdbc:mysql://mysql:3306/hive_metastore> show tables; +---------------------------+ | Tables_in_hive_metastore | +---------------------------+ +---------------------------+ No rows selected (0.026 seconds)
반응형'Hive' 카테고리의 다른 글
Hive & Hadoop 연결하기 (0) 2023.12.17 Docker 로 Hive 구현하기 (0) 2023.12.16