기본 뼈대 출처 :
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관련해서 정리한 건데 참고하기 좋음
./launcher run
을 해주면 실행됨root@f4c87b412483:/opt/trino/trino-server-421/bin# ./launcher run
)/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
그대로 입력Unrecognized VM option 'G1UsePreventiveGC'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
-XX:-G1UsePreventiveGC
)을 지웠다.ERROR: Trino requires Java 17+ (found 11.0.19)
apt install openjdk-17-jdk
로 다시 깔아서 했다.^^./launcher run
으로 처음 실행한 후에 ./launcher start
를 했을 때 Started as 숫자
로 떠야 trino가 정상적으로 실행이 된 것이다.select * from hive.test.numbers;
Query 20230718_033938_00006_sw7gx failed: 'org.apache.http.client.methods.HttpRequestBase com.amazonaws.http.HttpResponse.getHttpRequest()'
aws-java-sdk-bundle
을 냅두고 aws-java-sdk-core
을 지웠다고 하는데 나는 반대였다.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
이외에도..
hive Connection 에러나 127.0.0.1:8080 연결 에러나 S3연결 에러나 등등의 자잘한 문제가 많았다.
해결 한 후에 에러들의 문제점에 대해 생각해보자면,
내 최종 목표는 trino - hive - deltalake 이 3개의 시스템 연결이 목적이였기 때문에, catalog 폴더 내에 deltalake.properties
도 9083 포트로 연결되게끔 만들어 놨었는데, 이게 hive와 9083이 동일해서 포트 충돌 문제가 있었던 것 같다.
9083 deltalake와 포트 충돌 -> deltalake 파일 삭제함
---> 이거 문제가 아니였음. deltalake.properties 있어도 잘 돌아감. 포트충돌따위 없음
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/
만 해줌
metastore-site.xml
에 ConnectionPassword는 내가 mysql 들어갈 때 설정한 비밀번호로 설정해줘야하는데 참고자료 보면서 그냥 hive
로 넣어놨음 -> 내가 설정한 1111
로 변경
-> 근데 확실하지 않은건.... 아래의 schema 설정할 때 넣어준 비밀번호로 해야하는지, mysql 접속시 설정해준 비밀번호로 해야하는지는 정확하지 않다^^ㅎ
모든 설정 변경한 후에 mysql에 원래 있던 metastore database 제거 후 initSchema로 새로 생성해줬음
mysql -u root -p
에 접속, show databases
했을 때 metastore가 있다면 drop database metastore
로 지워준 후, mysql을 벗어나서 schematool -initSchema -dbType mysql <username> -passWord <비밀번호>
로 생성해준다.schematool -initSchema -dbType mysql hive -passWord 1111
-> 내가 설정 한 hive metastore schema-> ./start-metastore &
로 실행시킨 후에 해야함............(&
를 꼭 붙이기)
-> 참고자료에서는 metastore를 실행시키는 부분이 없어서 실행시켜야 한다는 것도 몰랐음....ㅠㅠ
trino에서 s3와 연결할 때 뜨는 S3AFileSystem not found
는 hadoop-aws랑 aws-sdk-bundle의 문제가 아니였음.
-> hive를 설치할 때는 이 두개가 문제가 맞았는데 이번에는 아니였다.
이 두개의 jar를 다 넣었는데도 문제있었지만 docker 껐다 키니까 잘됐음,,,,,....
사실 아직도 잘 모르겠다.
처음해보는 연결과 개념이라 정확하진않다. 문제를 해결하면서 좀 더 이해해가고 있지만 확실하진 않음! 참고만 해주시길 ~