HiveServer

HiveServer (Thrift Hive 서버)

HiveServer는 원격 클라이언트가 다양한 프로그래밍 언어로 Hive에 요청을 보내고 결과를 받아올 수 있게 해주는 선택적 서비스예요. Apache Thrift 기반으로 만들어져서 Thrift 서버라고도 불립니다.

출처: 문서

본문

HiveServer는 Apache Thrift( http://thrift.apache.org/ ) 기반으로 만들어졌기 때문에 때로는 Thrift 서버라고도 불러요. 다만 HiveServer2라는 더 새로운 서비스도 Thrift로 만들어져 있어 혼란을 줄 수 있습니다. HiveServer2가 등장한 이후로 HiveServer는 HiveServer1이라고도 불렸어요.

경고! HiveServer는 둘 이상의 클라이언트로부터의 동시 요청을 처리할 수 없어요. 이는 HiveServer가 노출하는 Thrift 인터페이스가 강제하는 제약이며, HiveServer 코드를 수정해서 해결할 수 없어요.

HiveServer2는 Hive 0.11.0부터 이런 문제들을 해결한 HiveServer의 재작성 버전입니다. HiveServer2 사용이 권장돼요.

HiveServer는 Hive 1.0.0(이전에 0.14.1로 불림)부터 Hive 릴리스에서 제거됐습니다. HiveServer2로 전환하세요. (이전에는 0.15, 즉 1.1.0에서 제거 예정이었음. HIVE-6977 참고.)

HiveServer의 Thrift IDL(interface definition language) 파일은 hive_service.thrift이며, $HIVE_HOME/service/if/에 설치됩니다. Getting Started의 단계를 따라 Hive를 빌드한 뒤, 다음 명령으로 Thrift 서버를 시작할 수 있어요.

0.8 and Later

$ build/dist/bin/hive --service hiveserver --help
usage: hiveserver
 -h,--help                        Print help information
    --hiveconf <property=value>   Use value for given property
    --maxWorkerThreads <arg>      maximum number of worker threads,
                                  default:2147483647
    --minWorkerThreads <arg>      minimum number of worker threads,
                                  default:100
 -p <port>                        Hive Server port number, default:10000
 -v,--verbose                     Verbose mode

$ bin/hive --service hiveserver

0.7 and Earlier

$ build/dist/bin/hive --service hiveserver --help
usage HIVE_PORT=xxxx ./hive --service hiveserver
  HIVE_PORT : Specify the server port

$ bin/hive --service hiveserver

서버를 시작한 뒤 잘 동작하는지 테스트하려면 hiveserverjdbc 테스트를 'standalone' 모드로 실행하세요. 이 경우 HIVE_PORT는 localhost의 10000으로 가정합니다.

$ ant test -Dtestcase=TestJdbcDriver -Dstandalone=true
$ ant test -Dtestcase=TestHiveServer -Dstandalone=true

이 서비스는 여러 언어의 클라이언트를 지원해요. 자세한 내용은 Hive Client 문서를 참고하세요.

트러블슈팅: 연결 오류 (Connection Error)

Hive 서버와 클라이언트는 Thrift와 FB303 서비스를 통해 통신해요. 일부 배포판에서는 Hadoop과 Hive 배포판이 각각 다른 버전의 libthrift.jarlibfb303.jar를 갖고 있습니다. 이들이 호환되지 않으면 standalone 모드에서 유닛 테스트를 실행할 때 Thrift 연결 오류가 발생할 수 있어요. 해결책은 Hadoop 버전의 libthrift.jarlibfb303.jar를 제거하는 것입니다.

더 알아보기 (Learn more)

HiveServer는 동시 요청을 처리하지 못하는 한계가 있어서, 현재는 HiveServer2로 전면 대체됐어요. HiveServer2는 동시성·인증 등을 개선한 버전이므로, 새로 구성한다면 HiveServer2를 기준으로 시작하세요.