코알못

[AWS] EMR(hadoop) - Glue 메타 스토어 (HIVE, SPARK) 본문

BIG DATA

[AWS] EMR(hadoop) - Glue 메타 스토어 (HIVE, SPARK)

코린이s 2022. 2. 1. 01:38
728x90

클러스터 생성시 Glue 메타 스토어를 Hive, spark 서비스의 경우 사용하도록 지정 할 수 있는데 선택 했을시와 선택 안했을시 차이를 보려고 한다.

클러스터를 아래와 같이 구성한다.

구분 지정
1번 클러스터 hive 만 glue 메타 스토어 지정
2번 클러스터 spark 만 glue 메타 스토어 지정
3번 클러스터 hive, spark glue 메타 스토어 지정
4번 클러스터 모두 glue 메타 스토어 지정하지 않음

결론 먼저 공개하면 아래와 같다.

구분\클러스터명 1번 클러스터 2번 클러스터 3번 클러스터 4번 클러스터
HIVE glue 데이터 로컬 mysql 데이터 glue 데이터 로컬 mysql 데이터
SPARK 오류 (하이브 메타 데이터를 바라보나 스파크는 glue 사용 설정을 하지 않아 connect 오류 발생/ hive 는 glue 메타 스토어를 사용하고, spark 에서 하이브 메타 스토어를 사용한다면 glue 사용 선택 해줘야 한다.)
glue 데이터 glue 데이터 로컬 mysql 데이터(하이브 메타 데이터를 바라봄)

아래는 테스트를 위해 각각 서비스에 접속하기 위한 명령어 및 테스트 결과 이다.

// hive 접속
$ hive

// spark sql 접속
$ spark-sql

1번 클러스터, 3번 클러스터의 경우 하이브를 이용하여 glue에 저장된 메타 데이터 정상적으로 이용이 가능하다.

2번 4번 클러스터의 경우 마스터 서버에 mysql이 설치 되고 해당 mysql에 메타 스토어가 저장 되고 읽어 온다. (참고사항 참조)

뒤에 스파크 테스트를 위해 4번 클러스터에 테이블 및 데이터를 생성한다.

1번 클러스터의 경우 스파크 접속시 connect fail 오류 발생하며, 3번 클러스터의 경우 스파크로 glue에 저장된 메타 데이터 정상적으로 이용 할 수 있다.

2번 클러스터의 경우 스파크로 glue에 저장된 메타 데이터 정상적으로 이용 할 수 있다.

4번 클러스터의 경우 로컬 maria db에 있는 hive 메타 스토어의 데이터를 정상적으로 가져온다. 설정하지 않아도 클러스터 구성시 spark 에서 sql 접속시 hive matastore 연결 되도록 기본 설정 되어있다. (참고사항 참조)

 

<참고 사항>

1. 하이브 메타 데이터 저장소 확인 방법 - 설정값 확인

$ cat /etc/hive/conf/hive-site.xml
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>org.mariadb.jdbc.Driver</value>
    <description>username to use against metastore database</description>
  </property>

  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>username to use against metastore database</description>
  </property>

  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>abcd1234</value>
    <description>password to use against metastore database</description>
  </property>

mariadb 를 사용하며 id/pw 도 기재되어 있으니 접속해 본다.

$ sudo mysql -u hive -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 142
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hive               |
| hue                |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)

MariaDB [(none)]>

hue 랑 hive 가 저장되어 있으며 로컬에 저장되어 있어 클러스터 종료시 메타 데이터는 사라지니 외부 데이터 베이스를 사용하는것이 낫다.

2. spark 에서 하이브메타스토어를 사용하려면 ?

스파크 설정 파일 경로(/etc/spark/conf/)에 hive-site.xml 을 넣으면 된다!

그러나 aws로 클러스터 생성시 기본으로 spark 에서 hive 메타스토어를 바라보도록 되어있다.

$ cd /etc/spark/conf/
$ ll
합계 68
lrwxrwxrwx 1 root root   44  1월 31 16:09 emrfs-site.xml -> /usr/share/aws/emr/emrfs/conf/emrfs-site.xml
-rw-r--r-- 1 root root 1105  6월 30  2021 fairscheduler.xml.template
-rw-r--r-- 1 root root 2177  1월 31 16:11 hive-site.xml
-rw-r--r-- 1 root root 3232  1월 31 16:11 log4j.properties
-rw-r--r-- 1 root root 2023  6월 30  2021 log4j.properties.template
-rw-r--r-- 1 root root 9141  1월 31 16:11 metrics.properties
-rw-r--r-- 1 root root 9141  6월 30  2021 metrics.properties.template
-rw-r--r-- 1 root root 5016  1월 31 16:11 spark-defaults.conf
-rw-r--r-- 1 root root 1292  6월 30  2021 spark-defaults.conf.template
-rw-r--r-- 1 root root 1689  1월 31 16:11 spark-env.sh
-rwxr-xr-x 1 root root 4428  6월 30  2021 spark-env.sh.template
-rw-r--r-- 1 root root  865  6월 30  2021 workers.template

 

728x90
Comments