Share via


Trino CLI

Important

이 기능은 현지 미리 보기로 제공됩니다. Microsoft Azure 미리 보기에 대한 보충 사용 약관에는 베타 또는 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 더 많은 약관이 포함되어 있습니다. 이 특정 미리 보기에 대한 자세한 내용은 Azure HDInsight on AKS 미리 보기 정보를 참조하세요. 질문이나 기능 제안이 있는 경우 AskHDInsight에서 세부 정보와 함께 요청을 제출하고 Azure HDInsight 커뮤니티에서 더 많은 업데이트를 확인하세요.

AKS의 HDInsight용 Trino CLI는 쿼리를 실행하기 위한 터미널 기반 대화형 셸을 제공합니다.

Windows에 설치

Windows의 경우 MSI를 통해 AKS의 HDInsight용 Trino CLI가 설치되면 Windows 명령 프롬프트(CMD) 또는 PowerShell을 통해 CLI에 대한 액세스 권한을 제공합니다. WSL(Linux용 Windows 하위 시스템)을 설치하려는 경우 Linux에 설치를 참조하세요.

요구 사항

  • Java 8 또는 11.

  • PATH에 java.exe를 추가하거나 %JAVA_HOME%\bin\java.exe가 만들어지도록 JRE 설치 디렉터리를 가리키는 JAVA_HOME 환경 변수를 정의합니다.

설치 또는 업데이트

MSI 패키지는 Windows에 AKS의 HDInsight용 Trino CLI를 설치하거나 업데이트하는 데 사용됩니다.

Trino CLI의 최신 릴리스를 다운로드하여 설치합니다. 설치 관리자가 컴퓨터를 변경해도 되는지 물어보면 "예" 상자를 클릭합니다. 설치가 완료된 후 Trino CLI를 사용하려면 활성 Windows 명령 프롬프트 또는 PowerShell 창을 닫았다가 다시 열어야 합니다.

Trino CLI 다운로드: https://aka.ms/InstallTrinoCLIWindows

Trino CLI 실행

이제 명령 프롬프트에서 “trino-cli”를 사용하여 Trino CLI를 실행하고 클러스터에 연결할 수 있습니다.

trino-cli --server <cluster_endpoint>

참고 항목

헤드리스 OS(웹 브라우저 없음)에서 실행하는 경우 Trino CLI는 인증을 위해 디바이스 코드를 사용하라는 메시지를 표시합니다. 명령줄 매개 변수 --auth AzureDeviceCode를 지정하여 디바이스 코드를 강제로 사용할 수도 있습니다. 이 경우 다른 디바이스/OS에서 브라우저를 열고 표시된 코드를 입력하고 인증한 다음, 다시 CLI로 돌아와야 합니다.

문제 해결

Windows에서 Trino CLI를 설치할 때 나타나는 몇 가지 일반적인 문제는 다음과 같습니다.

프록시 연결 차단

프록시에서 연결을 차단하여 MSI 설치 관리자를 다운로드할 수 없는 경우 프록시를 올바르게 구성했는지 확인합니다. Windows 10의 경우 이러한 설정은 설정 > 네트워크 및 인터넷 > 프록시 창에서 관리됩니다. 필요한 설정 또는 머신에서 구성을 관리할 수 있거나 고급 설정이 필요한 경우에 대해 시스템 관리자에게 문의하세요.

MSI를 가져오려면 프록시에서 다음 주소에 대한 HTTPS 연결을 허용해야 합니다.

  • https://aka.ms/
  • https://hdionaksresources.blob.core.windows.net/

제거

Windows의 “앱 및 기능” 목록에서 Trino CLI를 제거할 수 있습니다. 제거 방법은 다음과 같습니다.

플랫폼 지침
Windows 10 시작 > 설정 > 앱
Windows 8 및 Windows 7 시작 > 제어판 > 프로그램 > 프로그램 제거

이 화면에서 Trino를 프로그램 검색 창에 입력하세요. 제거할 프로그램은 “HDInsight Trino CLI <버전>”으로 나열됩니다. 이 애플리케이션을 선택한 다음, 제거 단추를 클릭합니다.

Linux에 설치

Trino CLI는 쿼리를 실행하기 위한 터미널 기반 대화형 셸을 제공합니다. 설치 스크립트 옵션을 선택하여 Linux에 Trino CLI를 수동으로 설치할 수 있습니다.

요구 사항

  • Java 8 또는 11.

  • PATH에 java를 추가하거나 $JAVA_HOME/bin/java가 만들어지도록 JRE 설치 디렉터리를 가리키는 JAVA_HOME 환경 변수를 정의합니다.

설치 또는 업데이트

CLI 설치 및 업데이트 모두 설치 스크립트를 다시 실행해야 합니다. curl을 실행하여 CLI를 설치합니다.

curl -L https://aka.ms/InstallTrinoCli | bash

또한 스크립트를 다운로드하여 로컬로 실행할 수 있습니다. 변경 내용을 적용하려면 셸을 다시 시작해야 합니다.

Trino CLI 실행

이제 셸에서 “trino-cli” 명령을 사용하여 Trino CLI를 실행하고 클러스터에 연결할 수 있습니다.

trino-cli --server <cluster_endpoint>

참고 항목

헤드리스 OS(웹 브라우저 없음)에서 실행하는 경우 Trino CLI는 인증을 위해 디바이스 코드를 사용하라는 메시지를 표시합니다. 명령줄 매개 변수 --auth AzureDeviceCode를 지정하여 디바이스 코드를 강제로 사용할 수도 있습니다. 이 경우 다른 디바이스/OS에서 브라우저를 열고 표시된 코드를 입력하고 인증한 다음, 다시 CLI로 돌아와야 합니다.

문제 해결

수동 설치 중에 몇 가지 공통 문제가 발견됐습니다.

“개체 이동됨” curl 오류

-L 매개 변수와 관련된 curl에서 오류가 발생하거나 “개체 이동됨”이라는 텍스트가 포함된 오류 메시지가 표시되면 aka.ms 리디렉션 대신 전체 URL을 사용합니다.

curl https://hdionaksresources.blob.core.windows.net/trino/cli/install.sh | bash

trino-cli 명령을 찾을 수 없음

hash -r

설치 후 셸을 다시 시작하지 않아도 이 문제가 발생할 수 있습니다. trino-cli 명령($HOME/bin)의 위치가 $PATH에 있는지 확인합니다.

프록시 연결 차단

설치 스크립트를 가져오려면 프록시에서 다음 주소에 대한 HTTPS 연결을 허용해야 합니다.

  • https://aka.ms/
  • https://hdionaksresources.blob.core.windows.net/

Uninstall

모든 trino-cli 파일을 제거하려면 다음을 실행합니다.

rm $HOME/bin/trino-cli
rm -r $HOME/lib/trino-cli

인증

Trino CLI는 명령줄 매개 변수를 사용하여 다양한 Microsoft Entra 인증 방법을 지원합니다. 다음 표에서는 중요한 매개 변수 및 인증 방법을 설명합니다. 자세한 내용은 인증을 참조하세요.

CLI에서도 사용할 수 있는 매개 변수 설명:

trino-cli --help
매개 변수 의미 Required 설명
auth 인증 방법 이름 아니요 사용자 자격 증명이 제공되는 방법을 결정합니다. 지정하지 않으면 AzureDefault를 사용합니다.
azure-client 클라이언트 ID 예(AzureClientSecret, AzureClientCertificate의 경우) 서비스 주체/애플리케이션의 클라이언트 ID입니다.
azure-tenant 테넌트 ID 예(AzureClientSecret, AzureClientCertificate의 경우) Microsoft Entra 테넌트 ID입니다.
azure-certificate-path 인증서의 파일 경로 예(AzureClientCertificate의 경우) 인증서가 있는 pfx/pem 파일의 경로입니다.
azure-use-token-cache 토큰 캐시 사용 여부 아니요 제공된 경우 액세스 토큰은 캐시되고 AzureDefault, AzureInteractive, AzureDeviceCode 모드에서 다시 사용됩니다.
azure-scope 토큰 범위 아니요 토큰을 요청하는 데 사용할 Microsoft Entra 범위 문자열입니다.
use-device-code 디바이스 코드 메서드 사용 여부 아니요 --auth AzureDeviceCode과 동일합니다.
password 서비스 주체의 클라이언트 암호 예(AzureClientSecret의 경우) AzureClientSecret 모드를 사용하는 경우 서비스 주체의 비밀/암호입니다.
access-token JWT 액세스 토큰 아니요 외부에서 액세스 토큰을 가져온 경우 이 매개 변수를 사용하여 제공할 수 있습니다. 이 경우에는 auth 매개 변수가 허용되지 않습니다.

예제

설명 CLI 명령
AzureDefault trino-cli --server cluster1.pool1.region.projecthilo.net
대화형 브라우저 인증 trino-cli --server cluster1.pool1.region1.projecthilo.net --auth AzureInteractive
토큰 캐시 사용 trino-cli --server cluster1.pool1.region1.projecthilo.net --auth AzureInteractive --azure-use-token-cache
비밀을 사용하는 서비스 주체 trino-cli --server cluster1.pool1.region1.projecthilo.net --auth AzureClientSecret --azure-client 11111111-1111-1111-1111-111111111111 --azure-tenant 11111111-1111-1111-1111-111111111111 --password
서비스 주체 및 보호된 인증서(암호 메시지가 표시됨) trino-cli --server cluster1.pool1.region1.projecthilo.net --auth AzureClientCertificate --azure-client 11111111-1111-1111-1111-111111111111 --azure-certificate-path d:\tmp\cert.pfx --azure-tenant 11111111-1111-1111-1111-111111111111 --password

문제 해결

MissingAccessToken 또는 InvalidAccessToken

CLI는 다음 오류 중 하나를 표시합니다.

Error running command: Authentication failed: {
  "code": "MissingAccessToken",
  "message": "Unable to find the token or get the required claims from it."
}
Error running command: Error starting query at https://<cluster-endpoint>/v1/statement returned an invalid response: JsonResponse{statusCode=500, statusMessage=, headers={content-type=[application/json; charset=utf-8], date=[Fri, 16 Jun 2023 18:25:23 GMT], strict-transport-security=[max-age=15724800; includeSubDomains]}, hasValue=false} [Error: {
  "code": "InvalidAccessToken",
  "message": "Unable to find the token or get the required claims from it"
}]

문제를 해결하려면 다음 단계를 수행하세요.

  1. Trino CLI를 종료합니다.
  2. az logout을 실행합니다.
  3. az login -t <your-trino-cluster-tenantId>을 실행합니다.
  4. 이제 이 명령이 작동하게 됩니다.
trino-cli --server <cluster-endpoint>
  1. 또는 auth/tenant 매개 변수를 지정합니다.
trino-cli --server <cluster-endpoint> --auth AzureInteractive --azure-tenant <trino-cluster-tenantId>

403 금지

CLI에서 오류를 표시합니다.

Error running command: Error starting query at  https://<cluster-endpoint>/v1/statement returned an invalid response: JsonResponse{statusCode=403, statusMessage=, headers={content-length=[146], content-type=[text/html], date=[Wed, 25 May 2023 16:49:24 GMT], strict-transport-security=[max-age=15724800; includeSubDomains]}, hasValue=false} [Error: <html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>
]

이 문제를 해결하려면 권한 부여 프로필에 사용자 또는 그룹을 추가합니다.