Hive 사용
    • PDF

    Hive 사용

    • PDF

    Article Summary

    VPC 환경에서 이용 가능합니다.

    Data Forest는 사용자별로 독립된 Apache HiveServer2(이하 HS2) 서비스 환경을 구축할 수 있도록 지원합니다. Hive Metastore가 필요하며 Data Forest에서 제공하는 Hive Metastore를 사용하게 됩니다. Hive는 데이터 저장 시스템에 저장된 대량의 데이터를 분석하고 처리하는 SQL 기반의 데이터 웨어하우스(Data Warehouse) 솔루션입니다.

    참고
    • HIVESERVER2-LDAP 앱은 LDAP 방식으로 HS2에 접속하는 사용자를 인증합니다. Kerberos 인증은 지원하지 않습니다.
    • HS2 앱에서는 앱을 띄운 사용자와 클러스터 운영자 이외의 다른 사용자들은 로그인할 수 없습니다. 로그인이 필요할 경우 HS2 앱 오너가 다른 사용자에게 로그인 권한을 부여할 수 있습니다.

    HIVESERVER2-LDAP 앱 상세 정보 확인

    앱 생성이 완료되면 상세 정보를 확인할 수 있습니다. 앱 상세 정보의 StatusStable이면 앱이 정상적으로 구동된 것을 의미합니다.
    앱 상세 정보를 확인하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼의 콘솔에서 Services > Big Data & Analytics > Data Forest 메뉴를 차례대로 클릭해 주십시오.
    2. 좌측의 Data Forest > Apps 메뉴를 클릭해 주십시오.
    3. 앱을 소유한 계정을 선택해 주십시오.
    4. 상세 정보를 확인할 앱을 클릭해 주십시오.
    5. 앱 상세 정보를 확인해 주십시오.
      df-hive_2-1_ko
      • Quick links
        • AppMaster: 컨테이너 로그를 확인할 수 있는 URL. 앱 생성 시 모든 앱은 YARN 큐에 제출되며, YARN은 각 앱의 상세 정보를 확인할 수 있는 Web UI 제공
        • supervisor-hs2-auth-ldap-0: HS2를 관리할 수 있는 supervisor URL
        • shell-hs2-auth-ldap-0: HS2 웹 셸(web shell) URL
        • webui-hs2-auth-ldap-0: HS2 Web UI에 접속할 수 있는 URL
          • home: 실행 중인 세션이나 최근에 실행된 하이브 쿼리 등을 확인 가능
          • configuration: HS2의 configuration을 xml 형식으로 확인 가능
          • Metrics Dump: 실시간 JMX 메트릭스를 json 형식으로 확인 가능
          • Stack Trace: 모든 활성된 스레드의 stack trace 확인 가능
          • LLAP Daemon: Hive LLAP Daemons의 상태 확인 가능
          • local logs: 로그 확인 가능. 운영자만 접속 가능
      • Connection String: HS2 앱에 접속할 수 있는 URL
        • JDBC connection string(inside-of-cluster): Beeline, Zeppelin, Hue, 사용자 정의 프로그램에서 JDBC로 연결 시 사용되는 Connection String. 이 주소는 Data Forest 내부 네트워크에서 HS2에 접속 시 사용
        • JDBC connection string: Data Forest 외부 네트워크에서 HS2에 접속 시 사용하는 주소. 사용자 PC에서는 JDBC connection string(inside-of-cluster) 에는 접속 불가함. 내부 및 외부 구분이 힘들 경우에는 JDBC connection string 사용 가능
        • JDBC connection string(inside-of-cluster) Example: Example 링크 사용 전 패스워드 파라미터의 changeme를 사용자 계정 패스워드로 변경하여 사용
        • JDBC connection string Example: Example 링크 사용 전에 패스워드 파라미터의 changeme를 사용자 계정 패스워드로 변경하여 사용
      • 컴포넌트: 기본 지정된 값이 권장 리소스입니다. HIVESERVER2-LDAP-3.1.0 타입은 hs2-auth-ldap 컴포넌트 하나로 구성됩니다.
        • hs2-auth-ldap: 사용자들에게 LDAP 방식의 인증을 처리하기 위한 컴포넌트

    <예시>

    HS2의 접속 화면은 다음과 같습니다.

    df_hiveserver_vpc_ko

    Beeline으로 HiveServer2 앱 접속

    beeline -u {JDBC connection string} -n {username} -p {password} 명령어로 HS2에 접속하는 방법은 다음과 같습니다.

    # Keberos 인증
    $ curl -s -L -u test01:$PASSWORD -o df.test01.keytab "https://sso.kr.df.naverncp.com/gateway/koya-auth-basic/webhdfs/v1/user/test01/df.test01.keytab?op=OPEN"
    $ ls -al
    total 20
    drwxr-s--- 4 test01 hadoop  138 Dec 16 17:57 .
    drwxr-s--- 4 test01 hadoop   74 Dec 16 17:44 ..
    -rw-r--r-- 1 test01 hadoop  231 Dec 16 17:36 .bashrc
    -rw------- 1 test01 hadoop  302 Dec 16 17:36 container_tokens
    -rw-r--r-- 1 test01 hadoop  245 Dec 16 17:57 df_beta.test01.keytab
    lrwxrwxrwx 1 test01 hadoop  101 Dec 16 17:36 gotty -> /data1/hadoop/yarn/local/usercache/test01/appcache/application_1607671243914_0024/filecache/10/gotty
    -rwx------ 1 test01 hadoop 6634 Dec 16 17:36 launch_container.sh
    drwxr-S--- 3 test01 hadoop   19 Dec 16 17:53 .pki
    drwxr-s--- 2 test01 hadoop    6 Dec 16 17:36 tmp
    $ kinit example -kt df.example.keytab 
    
    # HS2 접속
    $ beeline -u "jdbc:hive2://hs2-auth-ldap.new-hiveserver2.test01.kr.df.naverncp.com:10001/;transportMode=http;httpPath=cliservice" -n test01 -p '{password}'
    

    정상적으로 접속되면 아래와 같이 출력됩니다.

    Connected to: Apache Hive (version 3.1.0.3.1.0.0-78)
    Driver: Hive JDBC (version 3.1.0.3.1.0.0-78) 
    Transaction isolation: TRANSACTION_REPEATABLE_READ
    

    Zeppelin에서 Hive 사용

    1. Zeppelin에 접속하여 화면 우측 상단의 계정명을 클릭하고 interpreter 메뉴를 클릭해 주십시오.
      df-hive_12_vpc_ko

    2. JDBC 인터프리터를 검색하여 주십시오.
      df-quick-start_zeppelin03_ko

    3. 앱 상세 정보의 Connection String > JDBC connection string Example 을 참고하여, hive url Properites에 아래와 같이 설정을 추가해 주십시오.
      df-hive_011_vpc_ko(1)

      참고

      계정 생성 시 설정한 패스워드에 특수 기호가 포함될 경우, url 인코딩으로 치환 후 입력해야 합니다.

    컨테이너에서 셸로 접속

    사용자는 HS2 앱 컨테이너에서 웹 브라우저를 통해 셸(/bin/bash)로 접속할 수 있습니다. 셸로 접속해서 컨테이너의 상황을 쉽게 확인할 수 있고, 셸 안에서 설정 파일을 변경하거나 파일을 다운로드하는 것과 같은 쓰기 작업을 수행할 수 있습니다.

    1. Quick links 목록에서 shell-hs2-auth-ldap-0에 접속해 주십시오.
    2. 셸에 접속하기 위해 로그인해 주십시오.
      • 사용자 이름: HS2 앱을 실행시킨 사용자 계정명 입력
      • 비밀번호: 계정 비밀번호 입력
    주의
    • HS2 컨테이너를 띄운 장비 장애 등으로 HS2 컨테이너가 다른 노드에서 다시 뜰 경우 쓰기 내용은 유실됩니다. 쓰기 내용은 영구적으로 유지되지 않으므로 셸은 읽기 전용으로만 사용해 주십시오.
    • 보안을 위해 HS2 앱을 띄운 앱의 오너 계정과 클러스터 운영자만 셸에 접속할 수 있도록 제한되어 있습니다. 예를 들면 사용자 'foo'가 띄운 HS2 앱의 셸에 사용자 'bar'는 로그인할 수 없습니다.

    Hive 사용 시 주의 사항

    Hive 규칙

    공용 HS2와 달리, SHOW DATABASES; 명령으로 다른 사용자의 모든 데이터베이스 목록을 출력할 수 있습니다. 그러나 허가 없이 다른 사용자의 데이터베이스에는 접근할 수 없습니다.
    HS2 앱 사용 시 공용 Hive 사용 가이드를 반드시 숙지하여 규칙을 준수해 주십시오.

    데이터베이스 이름 제한

    Hive의 데이터베이스 이름 제한과 동일한 규칙을 사용합니다. HS2 앱에서는 규칙에 어긋난 이름이더라도 CREATE DATABASE 명령이 실패하지 않습니다. HS2 앱에서는 시스템 상 데이터베이스 이름 규칙을 강제로 적용할 수 없으므로 데이터베이스 생성 시 규칙에 어긋나지 않도록 주의해 주십시오. 데이터베이스 이름 규칙을 위반할 경우 HS2 앱에서 만든 데이터베이스는 공용 HS2에서 조회되지 않습니다.

    참고

    공용 HS2에서는 규칙에 어긋난 이름일 경우 오류가 발생합니다. 따라서 데이터베이스 생성 작업은 HS2 앱이 아닌 공용 HS2에서 수행할 것을 추천합니다.

    참고

    데이터베이스 생성 시 아래와 같은 에러가 발생하면 HDFS의 사용자 홈 디렉토리에 'warehouse' 폴더가 생성되어 있는지 확인해 주십시오.

    ERROR : FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.reflect.UndeclaredThrowableException)
    
    Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.reflect.UndeclaredThrowableException) (state=08S01,code=1)
    

    이 문서가 도움이 되었습니까?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.