HiveServer2

HiveServer2 (HS2) is a server interface that enables remote clients to execute queries against hive and retrieve the results. The current thirft RPC based implementation is an improved version of HiveServer that supports multi-client concurrency and authentication. It is designed to provide better support for open API clients like JDBC and ODBC. The thrift IDL is available at https://github.com/apache/hive/blob/trunk/service/if/TCLIService.thrift

https://github.com/apache/hive/blob/trunk/service/if/TCLIService.thrift

How to configure

Configuration properties in hive-site.xml

hive.server2.thrift.min.worker.threads - Number of minimum worker threads, default 5.
hive.server2.thrift.max.worker.threads - Number of minimum worker threads, default 100
hive.server2.thrift.port - Tcp port to listen on , default 10000
hive.server2.thrift.bind.host - Tcp interface to bind to

Optional Environment settings

HIVE_SERVER2_THRIFT_BIND_HOST - optional tcp host interface to bind to. Overrides the config file setting
HIVE_SERVER2_THRIFT_PORT - optional tcp port# to listen on, default 10000. Overrides the config file setting

How to start

$HIVE_HOME/bin/hiveserver2

OR

$HIVE_HOME/bin/hive --service hiveserver2

Authentication

HiveServer2 support Anonymous (no auth), Kerberos, pass through LDAP and pluggable custom authentication.

Configuration

hive.server2.authentication - Authentication mode, default NONE. Options are NONE, KERBEROS, LDAP and CUSTOM
hive.server2.authentication.kerberos.principal - Kerberos principal for server
hive.server2.authentication.kerberos.keytab - Keytab for server principal
hive.server2.authentication.ldap.url - LDAP url
hive.server2.authentication.ldap.baseDN - LDAP base DN
hive.server2.custom.authentication.class - Custom authentication class that implements org.apache.hive.service.auth.PasswdAuthenticationProvider interface

Impersonation

By default HiveServer2 performs the query processing as the user that started the server process. It can be enabled to impersonate the connected user.

hive.server2.enable.impersonation - Impersonate the connected user, default false

OR

hive.server2.enable.doAs - Impersonate the connected user, default false
fs.hdfs.impl.disable.cache - Disable filesystem cache, default false