centos7 기준입니다.
coordinator는 mast01, worker는 work01,02,03 서버 환경으로 설치하겠습니다.
1. openJDK17 설치, Python 버전 설정
action server: mast01, work01, work02, work03
user: root
pwd: /opt/apps/
cmd:
# 파일다운로드
wget https://cdn.azul.com/zulu/bin/zulu17.42.19-ca-jdk17.0.7-linux_x64.tar.gz
# 압축 파일 해제
tar xvfz zulu17.42.19-ca-jdk17.0.7-linux_x64.tar.gz
# 심볼릭링크 설정
ln -s /opt/apps/zulu17.42.19-ca-jdk17.0.7-linux_x64 jdk17
# 권한 부여
chown -R hadoop:hadoop ./zulu17.42.19-ca-jdk17.0.7-linux_x64/
chown -R hadoop:hadoop ./jdk17
# 설치 확인
/opt/apps/jdk17/bin/java -version
# openjdk version "17.0.7" 2023-04-18 LTS이 나오면 성공
# 기존 서버들에 jdk8이 환경변수로 잡혀있어 추후 트리노 실행 파일에 jdk17 경로를 하드코딩할 예정
공식 홈페이지(https://trino.io/docs/435/installation/deployment.html)에 따르면
파이썬 버전 2.6.x, 2.7.x 또는 3.x이 필요합니다. 아래 링크에 따라 파이썬 3.6.8 버전으로 진행하였습니다.
https://developer-woong.tistory.com/35
2. 동시 접근 파일, 프로세스 설정
action server: mast01, work01, work02, work03
user: root
pwd: /opt/apps/
cmd:
# 추가
vi /etc/security/limits.conf
hadoop soft nofile 131072
hadoop hard nofile 131072
hadoop soft nproc 128000
hadoop hard nproc 128000
3. trino server 파일 다운로드 및 압축 해제
action server: mast01, work01, work02, work03
user: root
pwd: /opt/apps/
cmd:
# https://repo1.maven.org/maven2/io/trino/trino-server/435/
# 위 링크에서 trino-server-435.tar.gz 파일을 다운로드 후,
# 각 서버의 /opt/apps/ 경로에 sftp를 통해 위치시켜주었습니다.
# wget으로 서버에서 직접 다운로드하셔도 무방합니다.
# 제 환경에서는 시간이 다소 걸려 사이트에서 직접 다운로드하였습니다.
# 경로 이동 및 압축 해제
cd /opt/apps
tar xvfz /opt/apps/trino-server-435.tar.gz
# 심볼릭 링크 설정
ln -s trino-server-435 trino
# 권한 부여
chown -R hadoop:hadoop trino-server-435
chown -R hadoop:hadoop trino
# 계정 전환
su - hadoop
# 경로 이동
cd /opt/apps/trino/bin
4. trino 실행 파일 수정
action server: mast01, work01, work02, work03
user: hadoop
pwd: /opt/apps/trino/bin
cmd:
vi launcher
# 위 설치한 jdk17을 지정해줍니다.
export JAVA_HOME=/opt/apps/jdk17
export PATH=$JAVA_HOME/bin:$PATH
exec "$(dirname "$0")/launcher.py" "$@"
vi launcher.py
# 441번째 줄
# 주석처리
#o.pid_file = realpath(options.pid_file or pathjoin(o.data_dir, 'var/run/launcher.pid'))
#o.launcher_log = realpath(options.launcher_log_file or pathjoin(o.data_dir, 'var/log/launcher.log'))
#o.server_log = abspath(options.server_log_file or pathjoin(o.data_dir, 'var/log/server.log'))
# log,pid파일을 다른 디렉토리로 지정하여 관리합니다.
o.pid_file = '/data/trino/pids/launcher.pid'
o.launcher_log = '/data/trino/log/launcher.log'
o.server_log = '/data/trino/log/server.log'
# 경로 생성 및 권한 부여
exit
mkdir -p /data/trino/pids
mkdir -p /data/trino/log
chown -R hadoop:hadoop /data/trino/
su - hadoop
cd /opt/apps/trino/
5. trino 설정 파일 수정 (코디네이터 서버)
action server: mast01
user: hadoop
pwd: /opt/apps/trino
cmd:
mkdir etc
# /opt/apps/trino/etc
cd etc
# 코디네이터, 워커 서버 다르게 설정합니다.
vi node.properties
node.environment=trino_cluster
# 해당 부분 각 서버별로 다르게 설정합니다.
# 꼭 서버 호스트명일 필요는 없지만, trino cluster 내 유일한 값이어야합니다.
node.id=mast01
node.data-dir=/data/trino
# 코디네이터, 워커 서버 다르게 설정합니다.
vi config.properties
query.max-memory-per-node=1GB
http-server.http.port=18081
# 코디네이터 서버 지정입니다.
coordinator=true
# 코디네이터 서버임과 동시에 워커 서버로도 활용한다는 config입니다.
node-scheduler.include-coordinator=true
# 코디네이터 서버 url입니다.
discovery.uri=http://mast01:18081
query.max-memory=2GB
# 코디네이터, 워커 서버 같게 설정
vi jvm.config
-server
-Xmx2G
-XX:InitialRAMPercentage=80
-XX:MaxRAMPercentage=80
-XX:+ExplicitGCInvokesConcurrent
-XX:+ExitOnOutOfMemoryError
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:ReservedCodeCacheSize=512M
-XX:PerMethodRecompilationCutoff=10000
-XX:PerBytecodeRecompilationCutoff=10000
-Djdk.attach.allowAttachSelf=true
-Djdk.nio.maxCachedBufferSize=2000000
-XX:+UnlockDiagnosticVMOptions
-XX:+UseAESCTRIntrinsics
-XX:-G1UsePreventiveGC
# 코디네이터, 워커 서버 같게 설정합니다.
vi log.properties
io.trino=INFO
6. trino 설정 파일 수정 (워커 서버)
action server: work01, work02, work03
user: hadoop
pwd: /opt/apps/trino
cmd:
mkdir etc
# /opt/apps/trino/etc
cd etc
# 코디네이터, 워커 서버 다르게 설정합니다.
vi node.properties
node.environment=trino_cluster
# 해당 부분 각 서버별로 다르게 설정해야합니다.
# 꼭 서버 호스트명일 필요는 없지만, trino cluster 내 유일한 값이어야합니다.
node.id=work01 (work02, work03 각각 설정)
node.data-dir=/data/trino
# 코디네이터, 워커 서버 다르게 설정합니다.
vi config.properties
query.max-memory-per-node=1GB
http-server.http.port=18081
# 코디네이터 서버 지정입니다.
# 워커 서버이기 때문에 false로 지정합니다
coordinator=false
# 코디네이터 서버임과 동시에 워커 서버로도 활용한다는 config입니다.
# 워커 서버이기 때문에 false로 지정합니다
node-scheduler.include-coordinator=false
# 코디네이터 서버 url입니다.
discovery.uri=http://mast01:18081
query.max-memory=2GB
# 코디네이터, 워커 서버 같게 설정합니다.
vi jvm.config
-server
-Xmx2G
-XX:InitialRAMPercentage=80
-XX:MaxRAMPercentage=80
-XX:+ExplicitGCInvokesConcurrent
-XX:+ExitOnOutOfMemoryError
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:ReservedCodeCacheSize=512M
-XX:PerMethodRecompilationCutoff=10000
-XX:PerBytecodeRecompilationCutoff=10000
-Djdk.attach.allowAttachSelf=true
-Djdk.nio.maxCachedBufferSize=2000000
-XX:+UnlockDiagnosticVMOptions
-XX:+UseAESCTRIntrinsics
-XX:-G1UsePreventiveGC
# 코디네이터, 워커 서버 같게 설정합니다.
vi log.properties
io.trino=INFO
7. trino 기동
action server: mast01, work01, work02, work03
user: hadoop
pwd: /opt/apps/trino/etc/
cmd:
# 전체 서버 동일합니다.
cd /opt/apps/trino
./bin/launcher start
mast01:18081 확인
* 다소 시간이 흐른 뒤 worker 서버들이 인식됩니다. 계정 설정이 안된 상태이기에 로그인 시 hadoop으로 접속하였습니다.
다음 포스팅에서 hive, postgresql 카탈로그를 연동해보겠습니다.
감사합니다.
'BigData > Trino' 카테고리의 다른 글
Trino) 배열 혹은 오브젝트가 포함된 도큐먼트 표시법 (2) | 2024.08.16 |
---|---|
Trino) Trino + ElasticSearch 연동 (0) | 2024.08.16 |
trino) Trino, Hive 카탈로그 연동, trino-cli (0) | 2024.03.12 |