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

 

centos linux python 버전 변경

python 버전 변경법입니다. centos7 기준입니다. yum install -y python3 ls /bin | grep python update-alternatives --config python update-alternatives --install /bin/python python /bin/python2.7 1 update-alternatives --install /bin/python python /

developer-woong.tistory.com

 

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 카탈로그를 연동해보겠습니다.

감사합니다.

반응형

+ Recent posts