다음을 통해 공유


Beeline을 사용하여 HiveServer2에 연결 또는 로컬로 Beeline을 설치하여 로컬에서 연결

Apache Beeline은 HDInsight 클러스터의 헤드 노드에 포함된 Hive 클라이언트입니다. 이 문서에서는 다양한 유형의 연결에서 HDInsight 클러스터에 설치된 Beeline 클라이언트를 사용하여 HiveServer2에 연결하는 방법을 설명합니다. Beeline 클라이언트를 로컬로 설치하는 방법에 대해서도 설명합니다.

연결 유형

SSH 세션에서

SSH 세션에서 클러스터 헤드 노드에 연결할 때 포트 10001에서 headnodehost 주소에 연결할 수 있습니다.

beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'

Azure Virtual Network를 통해

Azure Virtual Network를 통해 클라이언트에서 HDInsight로 연결할 때 클러스터 헤드 노드의 FQDN(정규화된 도메인 이름)을 제공해야 합니다. 이 연결은 클러스터 노드로 직접 설정되므로 연결은 포트 10001을 사용합니다.

beeline -u 'jdbc:hive2://<headnode-FQDN>:10001/;transportMode=http'

<headnode-FQDN>을 클러스터 헤드 노드의 정규화된 도메인 이름으로 바꿉니다. 헤드 노드의 정규화된 도메인 이름을 찾으려면 Apache Ambari REST API를 사용하여 HDInsight 관리 문서의 정보를 사용합니다.

Kerberos를 사용하는 HDInsight ESP(Enterprise Security Package) 클러스터

클라이언트에서 클러스터와 동일한 보안영역의 컴퓨터에 있는 Microsoft Entra Domain Services에 조인된 ESP(Enterprise Security Package) 클러스터에 연결하는 경우 도메인 이름 <AAD-Domain> 및 클러스터에 액세스할 수 있는 권한이 있는 도메인 사용자 계정의 이름 <username>을 지정해야 합니다.

kinit <username>
beeline -u 'jdbc:hive2://<headnode-FQDN>:10001/default;principal=hive/_HOST@<AAD-Domain>;auth-kerberos;transportMode=http' -n <username>

<username>을 클러스터에 액세스할 수 있는 권한이 있는 도메인의 계정 이름으로 바꿉니다. <AAD-DOMAIN>을 클러스터가 조인된 Microsoft Entra ID의 이름으로 바꿉니다. <AAD-DOMAIN> 값에 대문자 문자열을 사용합니다. 그렇지 않으면 자격 증명을 찾을 수 없습니다. 필요하다면 영역 이름에 대한 /etc/krb5.conf를 확인합니다.

Ambari에서 JDBC URL을 찾으려면:

  1. 웹 브라우저에서 https://CLUSTERNAME.azurehdinsight.net/#/main/services/HIVE/summary로 이동합니다. 여기서 CLUSTERNAME은 클러스터의 이름입니다. HiveServer2가 실행 중인지 확인합니다.

  2. 클립보드를 사용하여 HiveServer2 JDBC URL을 복사합니다.

퍼블릭 또는 프라이빗 엔드포인트를 통해

퍼블릭 또는 프라이빗 엔드포인트를 사용하여 클러스터에 연결하는 경우 클러스터 로그인 계정 이름(기본적으로 admin) 및 암호를 제공해야 합니다. 예를 들어 클라이언트 시스템에서 Beeline을 사용하여 clustername.azurehdinsight.net 주소에 연결합니다. 이 연결은 443 포트를 통해 이루어지며 TLS/SSL을 사용하여 암호화됩니다.

clustername을 HDInsight 클러스터 이름으로 바꿉니다. admin을 클러스터의 클러스터 로그인 계정으로 바꿉니다. ESP 클러스터의 경우 전체 UPN(예: user@domain.com)을 사용합니다. password를 클러스터 로그인 계정의 암호로 바꿉니다.

beeline -u 'jdbc:hive2://clustername.azurehdinsight.net:443/;ssl=true;transportMode=http;httpPath=/hive2' -n admin -p 'password'

또는 프라이빗 엔드포인트의 경우:

beeline -u 'jdbc:hive2://clustername-int.azurehdinsight.net:443/;ssl=true;transportMode=http;httpPath=/hive2' -n admin -p 'password'

프라이빗 엔드포인트는 동일한 지역의 VNET 피어링에서만 액세스할 수 있는 기본 부하 분산 장치를 가리킵니다. 자세한 내용은 글로벌 VNet 피어링 및 부하 분산 장치에 대한 제약 조건을 참조하세요. beeline을 사용하기 전에 -v 옵션과 함께 curl 명령을 사용하여 퍼블릭 또는 프라이빗 엔드포인트의 연결 문제를 해결할 수 있습니다.

Apache Spark와 함께 Beeline 사용

Apache Spark는 자체적으로 HiveServer2를 구현하며, HiveServer2는 종종 Spark Thrift 서버라고 합니다. 이 서비스는 Spark SQL을 사용하여 Hive 대신 쿼리를 확인합니다. 쿼리에 따라 더 나은 성능을 제공할 수도 있습니다.

퍼블릭 또는 프라이빗 엔드포인트를 통해

사용된 연결 문자열은 약간 다릅니다. httpPath=/hive2를 포함하는 대신 httpPath/sparkhive2를 사용합니다. clustername을 HDInsight 클러스터 이름으로 바꿉니다. admin을 클러스터의 클러스터 로그인 계정으로 바꿉니다. password를 클러스터 로그인 계정의 암호로 바꿉니다.

참고 항목

ESP 클러스터의 경우 admin을 전체 UPN(예:user@domain.com)으로 바꿉니다.

beeline -u 'jdbc:hive2://clustername.azurehdinsight.net:443/;ssl=true;transportMode=http;httpPath=/sparkhive2' -n admin -p 'password'

또는 프라이빗 엔드포인트의 경우:

beeline -u 'jdbc:hive2://clustername-int.azurehdinsight.net:443/;ssl=true;transportMode=http;httpPath=/sparkhive2' -n admin -p 'password'

프라이빗 엔드포인트는 동일한 지역의 VNET 피어링에서만 액세스할 수 있는 기본 부하 분산 장치를 가리킵니다. 자세한 내용은 글로벌 VNet 피어링 및 부하 분산 장치에 대한 제약 조건을 참조하세요. beeline을 사용하기 전에 -v 옵션과 함께 curl 명령을 사용하여 퍼블릭 또는 프라이빗 엔드포인트의 연결 문제를 해결할 수 있습니다.

Apache Spark를 사용하여 클러스터 헤드 노드 또는 Azure Virtual Network 내에서

클러스터 헤드 노드에서 직접 연결하거나 HDInsight 클러스터와 동일한 Azure Virtual Network 내부의 리소스에서 연결하는 경우 10001 포트 대신 10002 포트를 Spark Thrift 서버에 사용해야 합니다. 다음 예에서는 헤드 노드에 직접 연결하는 방법을 보여 줍니다.

/usr/hdp/current/spark2-client/bin/beeline -u 'jdbc:hive2://headnodehost:10002/;transportMode=http'

Beeline 클라이언트 설치

Beeline은 헤드 노드에 포함되지만 로컬에서 설치하는 것이 좋습니다. 로컬 컴퓨터의 설치 단계는 Linux용 Windows 하위 시스템을 기반으로 합니다.

  1. 패키지 목록을 업데이트합니다. Bash 셸에 다음 명령을 입력합니다.

    sudo apt-get update
    
  2. 설치되지 않은 경우 Java를 설치합니다. which java 명령을 사용하여 확인할 수 있습니다.

    1. Java 패키지를 설치하지 않은 경우 다음 명령을 입력합니다.

      sudo apt install openjdk-11-jre-headless
      
    2. bashrc 파일을 엽니다(종종 ~/.bashrc에 있음). nano ~/.bashrc

    3. bashrc 파일을 수정합니다. 파일 끝에 다음 줄을 추가합니다.

      export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
      

      그런 다음 Ctrl+X, Y, Enter 키를 차례로 누릅니다.

  3. Hadoop 및 Beeline 보관 파일을 다운로드하고 다음 명령을 입력합니다.

    wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz
    wget https://archive.apache.org/dist/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz
    
  4. 보관 파일의 압축을 풀고 다음 명령을 입력합니다.

    tar -xvzf hadoop-2.7.3.tar.gz
    tar -xvzf apache-hive-1.2.1-bin.tar.gz
    
  5. bashrc 파일을 추가로 수정합니다. 보관 파일의 압축을 푼 경로를 확인해야 합니다. Linux용 Windows 하위 시스템을 사용하고 정확한 단계를 수행한 경우 경로는 /mnt/c/Users/user/이고, 여기서 user는 사용자 이름입니다.

    1. 파일을 엽니다. nano ~/.bashrc

    2. 적절한 경로를 사용하여 아래 명령을 수정한 후 bashrc 파일의 끝에 입력합니다.

      export HADOOP_HOME=/path_where_the_archives_were_unpacked/hadoop-2.7.3
      export HIVE_HOME=/path_where_the_archives_were_unpacked/apache-hive-1.2.1-bin
      PATH=$PATH:$HIVE_HOME/bin
      
    3. 그런 다음 Ctrl+X, Y, Enter 키를 차례로 누릅니다.

  6. Bash 세션을 닫았다가 다시 엽니다.

  7. 연결을 테스트합니다. 위의 퍼블릭 또는 프라이빗 엔드포인트에서 연결 형식을 사용합니다.

다음 단계