This section provides information on the use cases and fail over scenarios for high availability (HA) in the Hive metastore.
Use Cases
The metastore HA solution is designed to handle metastore service failures. Whenever a deployed metastore service goes down, metastore service can remain unavailable for a considerable time until service is brought back up. To avoid such outages, deploy the metastore service in HA mode.
Deployment Scenarios
We recommend deploying the metastore service on multiple boxes concurrently. Each Hive metastore client will read the configuration property hive.metastore.uris
to get a list of metastore servers with which it can try to communicate.
<property> <name> hive.metastore.uris </name> <value> thrift://$Hive_Metastore_Server_Host_Machine_FQDN </value> <description> A comma separated list of metastore uris on which metastore service is running </description> </property>
These metastore servers store their state in a MySQL HA cluster, which should be set up as recommended in the whitepaper "MySQL Replication for Failover Protection."
In the case of a secure cluster, each of the metastore servers will additionally need to have the following configuration property in its hive-site.xml
file.
<property> <name> hive.cluster.delegation.token.store.class </name> <value> org.apache.hadoop.hive.thrift.DBTokenStore </value> </property>
Fail Over Scenario
A Hive metastore client always uses the first URI to connect with the metastore server. In case the metastore server becomes unreachable, the client will randomly pick up a URI from the list and try connecting with that.