trino 설치 & hive metastore & S3 연결

0

DB

목록 보기
16/17

기본 뼈대 출처 :

https://passwd.tistory.com/entry/Trino-%EC%84%A4%EC%B9%98%EA%B5%AC%EC%84%B1%EC%8B%A4%ED%96%89
-> 위의 링크를 통해 trino를 설치 한 후
https://passwd.tistory.com/entry/Trino-Trino-CLI-%EC%84%A4%EC%B9%98
->여기서 클라이언트(CLI)도 설치해야 사용할 수 있다.
https://docs.nhncloud.com/ko/Data%20&%20Analytics/DataQuery/ko/console-user-guide/
-> NHN에서 Trino관련해서 정리한 건데 참고하기 좋음

  • trino 실행 시, trino를 설치해놓은 폴더의 bin 폴더로 가서 ./launcher run 을 해주면 실행됨
    (예시, root@f4c87b412483:/opt/trino/trino-server-421/bin# ./launcher run)
ERROR. 1
/usr/bin/env: 'python': No such file or directory
  • whereis python3 를 쳤을 때
    python3: /usr/bin/python3 /usr/lib/python3 /etc/python3 /usr/share/python3 라고 나오면,
    sudo ln -s /usr/bin/python3 /usr/bin/python 그대로 입력
ERROR. 2
Unrecognized VM option 'G1UsePreventiveGC'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
  • etc/jvm.config 의 제일 마지막 줄 (-XX:-G1UsePreventiveGC)을 지웠다.
ERROR. 3
ERROR: Trino requires Java 17+ (found 11.0.19)
  • ...블로그 앞에도 jdk 11은 안된다고 써있었어서 찾아봤는데 딴데는 별다른말 없길래 기존에 설치해뒀던 11로 했더니 안됨.
    apt install openjdk-17-jdk 로 다시 깔아서 했다.^^
ERROR. 4

  • trino를 실행시키려 하면, ConnectException이 뜬다....
    근데
    - 어쩌다보니 될 때도 있다..?
    핵심은 ./launcher run 으로 처음 실행한 후에 ./launcher start를 했을 때 Started as 숫자 로 떠야 trino가 정상적으로 실행이 된 것이다.
ERROR. 5
select * from hive.test.numbers;
Query 20230718_033938_00006_sw7gx failed: 'org.apache.http.client.methods.HttpRequestBase com.amazonaws.http.HttpResponse.getHttpRequest()'
  • https://eonj.github.io/trouble.log/2019-08-14.aws-jar-nsme/
    위의 블로그에서 힌트를 얻었다. 위의 블로그에서는 aws-java-sdk-bundle을 냅두고 aws-java-sdk-core을 지웠다고 하는데 나는 반대였다.
    trino에 plugin -> hive의 jar 중에서, 내가 임의로 aws-java-sdk-bundle를 추가해놨었는데 이걸 지우면 된다.
    • aws-core-2.20.89.jar, aws-java-sdk-core-1.12.493.jar, aws-java-sdk-glue-1.12.493.jar, aws-java-sdk-kms-1.12.493.jar, aws-java-sdk-s3-1.12.493.jar, aws-java-sdk-sts-1.12.493.jar
      위의 6개만 있으면 정상적으로 작동된다.

이외에도..

hive Connection 에러나 127.0.0.1:8080 연결 에러나 S3연결 에러나 등등의 자잘한 문제가 많았다.
해결 한 후에 에러들의 문제점에 대해 생각해보자면,

1. 포트충돌

내 최종 목표는 trino - hive - deltalake 이 3개의 시스템 연결이 목적이였기 때문에, catalog 폴더 내에 deltalake.properties도 9083 포트로 연결되게끔 만들어 놨었는데, 이게 hive와 9083이 동일해서 포트 충돌 문제가 있었던 것 같다.
9083 deltalake와 포트 충돌 -> deltalake 파일 삭제함
---> 이거 문제가 아니였음. deltalake.properties 있어도 잘 돌아감. 포트충돌따위 없음

2. Connection URL 문제

metastore-site.xml 에 (위치 : /opt/metastore/apache-hive-metastore-3.1.2-bin/conf/metastore-site.xml)
Conncetion URL에 jdbc:mysql://localhost:3306/ 해줘야하는데 jdbc:mysql://localhost/만 해줌

3. Connection Password 문제

metastore-site.xml 에 ConnectionPassword는 내가 mysql 들어갈 때 설정한 비밀번호로 설정해줘야하는데 참고자료 보면서 그냥 hive로 넣어놨음 -> 내가 설정한 1111 로 변경
-> 근데 확실하지 않은건.... 아래의 schema 설정할 때 넣어준 비밀번호로 해야하는지, mysql 접속시 설정해준 비밀번호로 해야하는지는 정확하지 않다^^ㅎ

4. schema 재설정

모든 설정 변경한 후에 mysql에 원래 있던 metastore database 제거 후 initSchema로 새로 생성해줬음

  • 방법 : mysql -u root -p 에 접속, show databases 했을 때 metastore가 있다면 drop database metastore 로 지워준 후, mysql을 벗어나서 schematool -initSchema -dbType mysql <username> -passWord <비밀번호> 로 생성해준다.
    -> 어쨌거나 hive의 metastore 설정에 대한 mysql타입의 데이터베이스를 만든 후 그 데이터베이스를 trino 에 연결해서 사용하는 것이므로 hive-metastore, trino, mysql 모두 설정을 맞춰줘야 한다!...?!
    schematool -initSchema -dbType mysql hive -passWord 1111 -> 내가 설정 한 hive metastore schema

5. 제일 큰 문제.

start-metastore를 실행시키지 않았음.

-> ./start-metastore & 로 실행시킨 후에 해야함............(& 를 꼭 붙이기)
-> 참고자료에서는 metastore를 실행시키는 부분이 없어서 실행시켜야 한다는 것도 몰랐음....ㅠㅠ

6. S3AFileSystem not found

trino에서 s3와 연결할 때 뜨는 S3AFileSystem not found 는 hadoop-aws랑 aws-sdk-bundle의 문제가 아니였음.
-> hive를 설치할 때는 이 두개가 문제가 맞았는데 이번에는 아니였다.
이 두개의 jar를 다 넣었는데도 문제있었지만 docker 껐다 키니까 잘됐음,,,,,....

사실 아직도 잘 모르겠다.

처음해보는 연결과 개념이라 정확하진않다. 문제를 해결하면서 좀 더 이해해가고 있지만 확실하진 않음! 참고만 해주시길 ~

profile
백엔드를 공부하고 있습니다.

0개의 댓글