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
서버를 시작한 뒤 잘 동작하는지 테스트하려면 hiveserver와 jdbc 테스트를 '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.jar와 libfb303.jar를 갖고 있습니다. 이들이 호환되지 않으면 standalone 모드에서 유닛 테스트를 실행할 때 Thrift 연결 오류가 발생할 수 있어요. 해결책은 Hadoop 버전의 libthrift.jar와 libfb303.jar를 제거하는 것입니다.
더 알아보기 (Learn more)
HiveServer는 동시 요청을 처리하지 못하는 한계가 있어서, 현재는 HiveServer2로 전면 대체됐어요. HiveServer2는 동시성·인증 등을 개선한 버전이므로, 새로 구성한다면 HiveServer2를 기준으로 시작하세요.