ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Hive MySQL Metastore 알아보기
    Hive 2023. 12. 17. 08:14
    728x90
    반응형

     

    - 목차

     

    소개.

    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
Designed by Tistory.